Skip to content

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.)
  • Integration deep-links: repos that build with use_directory_urls: false (common in ConnectSoft SaaS repos) expose the page as Integration.html on 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.

Topic Link
Multitenancy guide (templates) Implementing SaaS with multitenancy
Mandatory package set SaaS libraries
Templates dependency graph Templates dependencies