Легко внедряйте различные конкретные реализации сервисов и разные значения конфигурации для каждого клиента.
cd src
dotnet clean && dotnet pack Multitenancy/ && dotnet build && dotnet test ../test/MultitenantAspApp.Tests/MultitenantAspApp.Tests.csproj && dotnet run --project MultitenantAspApp
Теперь вы можете проверить
http://localhost:5000/XX/api/ValuesWithDependencys
http://localhost:5000/SZ/api/ValuesWithDependologies
http://localhost:5000/XX/api/ValuesWithOptions
http://localhost:5000/SZ/api/ValuesWithOptions
Обратите внимание на разные результаты для каждого арендатора.
В вашем проекте ASP.NET возьмите зависимость от пакета Multitenancy:
dotnet add package Multitenancy
и после того, как вы настроите все свои зависимости, настройте переопределения/индивидуальные зависимости для каждого из ваших арендаторов:
services . ConfigureTenant ( t =>
{
t . TenantId = "SZ" ;
t . ServiceCollection . AddTransient < IHelloWorldService , SzHelloWorldService > ( ) ;
t . ServiceCollection . Configure < ValuesControllerOptions > ( o =>
{
o . Value1Value = 42 ;
o . Value2Value = "value1_configured_by_delegate_for_SZ" ;
} ) ;
} ) ;
Добавьте промежуточное программное обеспечение в метод Configure
.
app . UseMultitenancy ( ) ;
Добавьте префикс маршрута.
Если вы хотите иметь возможность передавать string tenantId
в действия вашего контроллера, вы можете добавить префикс маршрута, который идентифицирует арендатора и передает его вашим методам действий.
Для этого в файле Startup.cs
вам необходимо изменить регистрацию Mvc в методе ConfigureServices
с
services . AddMvcCore ( ) ;
к
services . AddMvcCore ( o => { o . UseTenantRoutePrefix ( ) ; } )
Вы можете изменить имя tenantId
по умолчанию, вызвав UseTenantRoutePrefix()
с нужным именем: UseTenantRoutePrefix("tenantIdentifier")
.