Solution structure¶
Generated solution: ConnectSoft.Saas.BillingTemplate.slnx. It contains 24 Billing-specific projects under src/ plus the base-template/ submodule (mounted under /BaseTemplate/).
Billing src/ projects¶
| Project (suffix) | Role |
|---|---|
ConnectSoft.Saas.Billing |
BillingConstants, topic names, DI keys |
.EntityModel |
ISubscription, child entities, smart enums |
.DomainModel / .DomainModel.Impl |
Processor/retriever interfaces, inputs; defaults + validators |
.PersistenceModel / .PersistenceModel.NHibernate |
Repo/spec interfaces; Fluent mappings, tenant filter |
.DatabaseModel.Migrations |
FluentMigrator + SampleBillingSeed |
.ServiceModel / .ServiceModel.RestApi / .ServiceModel.Grpc |
Code-first contracts; controllers; gRPC adapters |
.MessagingModel |
Integration events + inbound stubs |
.FlowModel / .FlowModel.MassTransit |
6 sagas + saga state types |
.ActorModel / .ActorModel.Orleans |
ISubscriptionEditorActor; grain + surrogates |
.SchedulerModel / .SchedulerModel.Hangfire |
IBillingScheduler / HangFireBillingScheduler |
.ApplicationModel |
BillingMicroserviceRegistration : MicroserviceRegistrationBase, DI wiring |
.Application |
ASP.NET host (Program.cs, appsettings*.json, hibernate*.cfg.xml) |
.Options, .Metrics, .ArchitectureModel, .InfrastructureModel (Pulumi), .DockerCompose, .DiagramAsCodeModel (Billing.dsl) |
Supporting layers |
Billing-only
DiagramAsCodeModel (Billing.dsl) is present in Billing but absent in some sibling contexts (e.g. Tenants).
Layer responsibilities¶
The suffix conventions are shared across all SaaS L3 templates and are inherited from the base template. See template layering and reuse for the canonical layer responsibilities and the base-template/ submodule import chain.
Tests¶
ConnectSoft.Saas.Billing.UnitTestsConnectSoft.Saas.Billing.AcceptanceTests(Reqnroll)ConnectSoft.Saas.Billing.ArchitectureTests
See testing.