Skip to content

ConnectSoft.Extensions.Saas.* libraries

Cross-cutting SaaS concerns—tenant resolution, transport integration, NHibernate filter enablement, Orleans keys, billing/metering primitives, and testing—ship as ConnectSoft.Extensions.Saas.* NuGet packages. This follows Layer 1 in Template layering and reuse.

Repository rule

One Git repository per NuGet package. Each package versions and publishes independently.

Mandatory package set (program)

Git repository NuGet package Responsibility
ConnectSoft.Extensions.Saas.Abstractions ConnectSoft.Extensions.Saas.Abstractions ITenantContext, resolver contracts, TenantResolutionInput (JwtTenantClaimType), ITenantStore, ITenantConnectionResolver, ITenantOptionsSink, header/claim constants — no ASP.NET
ConnectSoft.Extensions.Saas.Options ConnectSoft.Extensions.Saas.Options MultitenancyOptions binding + validation; ITenantStore / ITenantConnectionResolver / ITenantOptionsSink registrations (Saas.Options primitives)
ConnectSoft.Extensions.Saas.AspNetCore ConnectSoft.Extensions.Saas.AspNetCore Middleware, DI, ITenantHttpResolutionContributor pipeline, forwards Saas.Options tenant primitives
ConnectSoft.Extensions.Saas.AspNetCore.SignalR ConnectSoft.Extensions.Saas.AspNetCore.SignalR ASP.NET Core SignalR hub filters for multitenant tenancy resolution; pair with UseSignalR and ConnectSoft.Extensions.ServiceModel.SignalR where hubs are hosted
ConnectSoft.Extensions.Saas.AspNetCore.Grpc ConnectSoft.Extensions.Saas.AspNetCore.Grpc gRPC server unary interceptor (tenant-id metadata); align metadata keys with MessagingTenantHeaderName when customizing brokers
ConnectSoft.Extensions.Saas.Messaging.MassTransit ConnectSoft.Extensions.Saas.Messaging.MassTransit Inbound TenantConsumeContextFilter; outbound AddSaasTenantOutboundFilters (publish/send)
ConnectSoft.Extensions.Saas.Messaging.NServiceBus ConnectSoft.Extensions.Saas.Messaging.NServiceBus TenantHeaderIncomingBehavior inbound tenant hydration
ConnectSoft.Extensions.Saas.NHibernate ConnectSoft.Extensions.Saas.NHibernate EnableFilter helpers, session-scoped tenant parameter binding
ConnectSoft.Extensions.Saas.Orleans ConnectSoft.Extensions.Saas.Orleans Grain key formatters, optional call-filter stubs
ConnectSoft.Extensions.Saas.Billing ConnectSoft.Extensions.Saas.Billing Narrow cross-product billing tenancy primitives (interfaces; no domain duplication)
ConnectSoft.Extensions.Saas.Metering ConnectSoft.Extensions.Saas.Metering Narrow metering/quota tenancy primitives
ConnectSoft.Extensions.Saas.Testing ConnectSoft.Extensions.Saas.Testing Fakes, test host helpers

Supporting libraries (existing repos, not new Saas repos): extend ConnectSoft.Extensions.EntityModel (tenant-scoped entity marker), ConnectSoft.Extensions.Logging.Serilog (tenant enricher), ConnectSoft.Extensions.Compliance (tenant ID redaction)—see ADR-0100.

Package handbooks and Integration

Per-repo MkDocs sites (overview, CI, Integration composition): SaaS extensions — package handbooks and integration.

Configuration and ADR

Migration

Templates move from inlined stubs to package references using SAAS-EXT-F02 / SAAS-EXT-T02 (Company backlog)—SemVer pinning and breaking-change playbook applies to Abstractions.

Consumers

  • ConnectSoft.Saas.*Template microservices
  • ConnectSoft.ApiGatewayTemplate (tenant propagation at the custom gateway—no YARP dependency)
  • ConnectSoft.IdentityTemplate and ConnectSoft.AuthorizationServerTemplate (tid and per-tenant auth alignment)
  • ConnectSoft.Blazor.Shell.Saas (when present)

Relationship to the platform solution

See SaaS platform — solution plan for how Layer 1 packages feed templates (Layer 3); ServiceModel remains the public API for external clients.