Multi-tenant ondersteuning voor Wigo4it applicaties, gebouwd op Finbuckle.MultiTenant. Deze repository bevat de basisbibliotheek én de NServiceBus-integratie, plus voorbeelden en tests.
- Wigo4it.MultiTenant: basis multi-tenant functionaliteit met configuratie per tenant.
- Wigo4it.MultiTenant.AspNetCore: ASP.NET Core integratie die tenant uit token claims of HTTP-headers bepaalt.
- Wigo4it.MultiTenant.NServiceBus: NServiceBus-integratie die tenant headers resolved en op basis daarvan de tenant-specifieke configuratie laadt.
- Wigo4it.MultiTenant.NServiceBus.Sample: end-to-end voorbeeldapplicatie.
- Testsuites voor unit- en integratietests.
Een Tenant in Wigo4it context is gedefinieerd als een individuele (rand)gemeente binnen een omgeving zoals die in de Wegwijzer aangemaakt wordt.
-
Om een Tenant uniek te identificeren zijn drie gegevens nodig:
TenantCode: De viercijferige TenantCode waaronder de omgeving in de Wegwijzer aangemaakt is. Let op: de definitie van Tenant in de Wegwijzer is een andere dan we hier hanteren. Voorbeeld:0518of9446.EnvironmentName: De naam van de omgeving zoals die in de Wegwijzer aangemaakt is. Voorbeeld:0344so1ofdemo-env.GemeenteCode: De viercijferige gemeentecode van de individuele (rand)gemeente waarvoor het request bedoeld is. Voorbeeld:0363of0321.
-
Tenant identifier: Combineert bovenstaande drie gegevens tot een unieke identifier, volgens het formaat
{TenantCode}-{EnvironmentName}-{GemeenteCode}, bijvoorbeeld9446-0344so1-0321. -
Headers
- Voor HTTP requests:
X-Wigo4it-Wegwijzer-TenantCode,X-Wigo4it-Wegwijzer-EnvironmentName,X-Wigo4it-Socrates-GemeenteCode(MultitenancyIdentifiers.HttpHeaders). - Voor NServiceBus berichten:
Wigo4it.Wegwijzer.TenantCode,Wigo4it.Wegwijzer.EnvironmentName,Wigo4it.Socrates.GemeenteCode(MultitenancyIdentifiers.MessageHeaders).
- Voor HTTP requests:
-
Configuratie-hiërarchie: defaults per omgeving met overrides per gemeente. Dit wordt door
DictionaryConfigurationStoresamengevoegd tot eenWigo4itTenantInfo(of eigen subtype) per tenant.
- Wigo4it.MultiTenant resolved de tenant (bijvoorbeeld uit HTTP headers) en bindt configuratie naar jouw
TenantInfosubtype.ConfigurePerTenantprojecteert deze waarden naarIOptions<Wigo4itTenantOptions>per request. - Wigo4it.MultiTenant.AspNetCore leest tenantgegevens uit claims of headers (configureerbaar), bouwt de tenant identifier op en activeert
UseMultiTenant()in de juiste middleware-volgorde. - Wigo4it.MultiTenant.NServiceBus haalt dezelfde headers uit inkomende berichten, zet de tenantcontext en zet op uitgaande berichten dezelfde headers op basis van
IOptions<Wigo4itTenantOptions> - De sample app laat zien hoe beide samen worden gebruikt.
- Kies het pakket:
- Web/worker zonder NServiceBus? Gebruik
dotnet add package Wigo4it.MultiTenant. - ASP.NET Core API met JWT claims? Gebruik
dotnet add package Wigo4it.MultiTenant.AspNetCore. - NServiceBus endpoint? Gebruik
dotnet add package Wigo4it.MultiTenant.NServiceBus.
- Web/worker zonder NServiceBus? Gebruik
- Volg de stappen in de betreffende README voor configuratie en options mapping.
- Bekijk de sample voor een volledige referentie-configuratie en message flow.
- Basisbibliotheek – configuratiestructuur, options mapping, best practices en troubleshooting.
- ASP.NET Core integratie – middleware, claim-based tenant-resolutie en pipeline-volgorde.
- NServiceBus integratie – pipeline-setup, message handlers, tenant headers op uitgaande berichten en performance tips.
- Unit tests: zie Wigo4it.MultiTenant.Tests voor configuratie- en resolver-tests.
- ASP.NET Core tests: zie Wigo4it.MultiTenant.AspNetCore.Tests voor claims- en header-resolver tests.
- Race-condition tests: zie Wigo4it.MultiTenant.NserviceBus.Tests voor concurrency scenarios met
IOptions. - Integratietests: zie Wigo4it.MultiTenant.NServiceBus.IntegrationTests.
- Voorbeeldapp: zie Wigo4it.MultiTenant.NServiceBus.Sample.
Dit project is beschikbaar gesteld onder de European Union Public Licence (EUPL-1.2). Hoewel de broncode van dit project open-source is, maakt de applicatie gebruik van externe bibliotheken van derden waarvoor aanvullende voorwaarden van toepassing kunnen zijn.
Deze software maakt gebruik van NServiceBus (ontwikkeld door Particular Software). Gebruikers die deze repository klonen of de applicatie zelf willen draaien, moeten rekening houden met het volgende:
- Eigen licentie benodigd: Onze organisatie gebruikt NServiceBus onder een specifieke commerciële overeenkomst. Deze licentie is niet overdraagbaar aan derden.
- RPL-licentie: Zonder commerciële licentie valt het gebruik van NServiceBus doorgaans onder de Reciprocal Public License (RPL-1.5). Dit kan verplichtingen met zich meebrengen voor uw eigen projecten.
Let op: Gebruikers zijn zelf verantwoordelijk voor het verkrijgen van de juiste licenties. Wij adviseren om de licentievoorwaarden van Particular Software te raadplegen om te bepalen of u een eigen (gratis of commerciële) licentie nodig heeft voor uw specifieke gebruikssituatie.
Voor een volledig overzicht van alle gebruikte pakketten en hun respectievelijke licenties, zie het bestand THIRD-PARTY-NOTICES.md in deze repository.