Skip to content

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.UnitTests
  • ConnectSoft.Saas.Tenants.AcceptanceTests (Reqnroll)
  • ConnectSoft.Saas.Tenants.ArchitectureTests

See testing.

See also