Мы начали разработку нашего продукта с использованием шаблона AspNetBoilerplate & Module Zero.Таким образом, мы имеем каноническое
Acme.Product.Application
Acme.Product.Core
Acme.Product.EntityFrameworkCore
Acme.Product.Migrator
Acme.Product.Web.Core
Acme.Product.Web.Host
(с Angular SPA)
В документации Asp Net Boilerplate & Module Zero указано, что
- Что этовозможно развитие как архитектуры Saas с использованием инфраструктуры для нескольких арендаторов (https://aspnetboilerplate.com/Pages/Documents/Multi-Tenancy).
- , что возможно создание модульного приложения (https://aspnetboilerplate.com/Pages/Documents/Module-System).
Мы не смогли найти какую-либо документацию или вопросы по SO 10 как включить многопользовательский режим для дополнительных модулей .
Допустим, мы решили разделить нашу доменную логику на отдельные сборки / модули:
Acme.Product.Accounting
Acme.Product.HR
Оба модуля будут зависеть от Acme.Product.Core (который обеспечивает многопользовательскую работу).
namespace Acme.Product.Accounting {
[DependsOn(typeof(Acme.Product.Core.ProductModule))]
public class Module : AbpModule {
}
}
namespace Acme.Product.HR {
[DependsOn(typeof(Acme.Product.Core.ProductModule))]
public class Module : AbpModule {
}
}
Затем в модуле Acme.Product.HR
:
namespace Acme.Product.HR.Domain.Models{
public class Employee : Entity<Guid>, IMustHaveTenant {
}
}
Нужно ли включить многопользовательскую аренду для Acme.Product.Accounting.Module
& Acme.Product.HR.Module
в конфигурации модуля, чтобы использовать многопользовательскую архитектуруопределены в ядре Acme.Product.Core.ProductModule
?
Configuration.MultiTenancy.IsEnabled = true;
Кроме того, нужно ли нам также определять объекты для нескольких арендаторов?
Configuration.Modules.Zero().EntityTypes.Tenant = typeof(Tenant);
Configuration.Modules.Zero().EntityTypes.Role = typeof(Role);
Configuration.Modules.Zero().EntityTypes.User = typeof(User);
Кто-нибудь успешно реализовал такой сценарий, когда дополнительные модули могли бы использовать инфраструктуру для нескольких арендаторов (динамические запросы, проверки и т. д.)?