Solution structure¶
Generated solution: ConnectSoft.Saas.TenantsTemplate.slnx - Tenants-specific projects under src/ plus the base-template/ submodule.
Tenants src/ projects¶
| Project (suffix) | Role |
|---|---|
ConnectSoft.Saas.Tenants |
Constants, exceptions |
.EntityModel |
ITenant, POCOs, lifecycle enum |
.DomainModel / .DomainModel.Impl |
ITenantsProcessor/ITenantsRetriever, inputs; defaults + validators |
.PersistenceModel / .PersistenceModel.NHibernate |
Repo/spec interfaces; TenantEntityMap, repos |
.DatabaseModel.Migrations |
FluentMigrator + SampleTenantSeed |
.MessagingModel |
Lifecycle integration events |
.FlowModel / .FlowModel.MassTransit |
TenantLifecycleSaga |
.ServiceModel / .ServiceModel.RestApi / .ServiceModel.Grpc |
Contracts + adapters |
.ActorModel / .ActorModel.Orleans |
TenantLifecycleGrain |
.ApplicationModel |
DI wiring (MicroserviceRegistrationBase extender) |
.Application |
ASP.NET host, appsettings*.json, hibernate configs |
.Metrics |
TenantsMetrics |
.Options, .SchedulerModel*, .InfrastructureModel, .ArchitectureModel, .DiagramAsCodeModel, .DockerCompose |
Supporting layers |
Layer responsibilities are shared across SaaS L3 templates - see template layering and reuse.
Tests¶
ConnectSoft.Saas.Tenants.UnitTestsConnectSoft.Saas.Tenants.AcceptanceTests(Reqnroll)ConnectSoft.Saas.Tenants.ArchitectureTests
See testing.