SaaS extensions — package handbooks and integration¶
Each ConnectSoft.Extensions.Saas.* repository ships a Material handbook under its docs/ folder (Overview, Getting Started, Integration where present, Use Cases, Runbook). Use Integration when you need authoritative composition rules (PersistenceModel, Saas.AspNetCore, messaging siblings, MultitenancyOptions, ITenantContext, tests).
Companion overview of responsibilities and mandatory set: ConnectSoft.Extensions.Saas.* libraries · ADR ADR-0100 · configuration reference Multitenancy configuration schema.
Azure DevOps and published sites¶
- Repos: Azure DevOps project ConnectSoft — repositories named
ConnectSoft.Extensions.Saas.*under Repos. - Handbooks: many packages publish MkDocs to GitHub Pages at
https://connectsoft.github.io/<RepositoryName>/
(exact deploy URL may vary by pipeline; treat as the default bookmark.) Integrationdeep-links: repos that build withuse_directory_urls: false(common in ConnectSoft SaaS repos) expose the page asIntegration.htmlon that base (for example/ConnectSoft.Extensions.Saas.AspNetCore/Integration.html).
Package index¶
| Repository / package | Responsibility (short) | Handbook (typical root) | Integration topic |
|---|---|---|---|
| ConnectSoft.Extensions.Saas.Abstractions | Contracts: ITenantContext, MutableTenantContext, ITenantResolver, TenantResolutionInput (JwtTenantClaimType), ITenantStore / ITenantInfo / TenantCatalogItem, ITenantConnectionResolver, ITenantOptionsSink, SaasTransportConstants |
handbook root | Contracts, Overview, Use Cases |
| ConnectSoft.Extensions.Saas.Options | MultitenancyOptions, validators, ITenantStore (ConfigurationTenantStore), ITenantConnectionResolver, ITenantOptionsSink (DefaultTenantOptionsSink), primitive DI helpers |
handbook root | Pairs with Saas.AspNetCore and messaging transports |
| ConnectSoft.Extensions.Saas.AspNetCore | Scoped MutableTenantContext, DefaultTenantResolver, HTTP middleware after auth, ITenantHttpResolutionContributor (subdomain + header), forwards Saas.Options tenant primitives registration |
handbook root · Integration | HTTP pipeline, Multitenancy, sibling Grpc |
| ConnectSoft.Extensions.Saas.AspNetCore.Grpc | Unary server: tenant-id metadata → MutableTenantContext |
handbook root · Integration | Requires Saas.AspNetCore DI and middleware ordering |
| ConnectSoft.Extensions.Saas.Messaging.MassTransit | TenantConsumeContextFilter reads MessagingTenantHeaderName, hydrates MutableTenantContext via scoped IServiceProvider |
handbook root · Integration | Same transport key as gRPC / NSB |
| ConnectSoft.Extensions.Saas.Messaging.NServiceBus | TenantHeaderIncomingBehavior reads physical MessageHeaders, hydrates MutableTenantContext when Extensions exposes IServiceProvider |
handbook root · Integration | Same transport key as MassTransit/gRPC |
| ConnectSoft.Extensions.Saas.NHibernate | Session filter naming + EnableSaasTenantFilter (SharedDb row isolation); pairs with ITenantConnectionResolver for DatabasePerTenant routing outside this assembly |
handbook root · Integration | PersistenceModel.NHibernate, AspNetCore, Saas.Options |
| ConnectSoft.Extensions.Saas.Orleans | Grain key composite (tenant|aggregate using a pipe delimiter) |
handbook root · Integration | Align keys with ITenantContext; HTTP/gRPC/messaging |
| ConnectSoft.Extensions.Saas.Testing | Tenant fakes / test doubles | handbook root | Compose with middleware-free unit tests |
| ConnectSoft.Extensions.Saas.Billing | Narrow billing tenancy primitives | _git repo | README / handbook |
| ConnectSoft.Extensions.Saas.Metering | Narrow metering / quota primitives | _git repo | README / handbook |
If a Integration.html link 404s, open the handbook Home page and use the left nav Integration entry — deploy settings can change filenames.
Sequences and cross-cutting visuals¶
Ordered flows across HTTP, gRPC, messaging, and Orleans diagrams: Multitenancy — sequences.
Related platform docs¶
| Topic | Link |
|---|---|
| Multitenancy guide (templates) | Implementing SaaS with multitenancy |
| Mandatory package set | SaaS libraries |
| Templates dependency graph | Templates dependencies |