Framework.NCore¶
Mono-repo for the SAIF .NET Core Framework — the shared class-library layer used by SAIF applications for authentication, logging, data access, messaging, HTTP clients, and related cross-cutting concerns.
This repository consolidates 19 previously-separate repositories (Framework.NCore.<Component>) into a single repository, one folder per component under src/, each still built, versioned, and published as its own independent NuGet package by its own independent pipeline. Moving to a mono-repo simplifies discovery, cross-component code review, and dependency-graph visibility, without changing the packaging model: applications continue to reference only the specific SAIF NuGet packages they need.
Repository layout¶
.azdo/{component}/ Azure Pipelines YAML + variables for each component's build/pack/publish pipeline
src/{component}/ Source for each component (solution, projects, tests)
docs/ Generated documentation (see docs/index.md)
Architecture.md Framework architecture, dependency layers, and Mermaid diagram
Pipelines.md Current Azure DevOps pipeline definitions for every component
LegacyRepositories.md Links to the retired, read-only standalone repos this repo replaced
UpdateFlow.md Step-by-step procedure for propagating a change up through the package layers
packages.md NuGet package catalog and included libraries
README.md This file
{component} is the same folder name used historically for each library (e.g. SAIF.NetCore.AuthService, Messaging, SAIF.NetCore.Clients.UC4) — see Architecture.md for the full component list and how they map to NuGet package names.
Where to look next¶
Architecture.md— describes the framework's layered architecture (foundation → implementation libraries →ServiceExtensions→ applications), the NuGet dependency rules between components, and a Mermaid diagram of the overall shape.Pipelines.md— documents every component's Azure DevOps build/pack/publish pipeline: pipeline name/link, YAML path, published package, trigger, and agent pool.LegacyRepositories.md— links to the 19 standalone repositories this repo replaced, kept read-only for history.UpdateFlow.md— the required, ordered procedure (contracts → implementation →ServiceExtensions) for propagating a change through the NuGet package graph, with a Mermaid flow diagram. Follow this for any cross-layer upgrade, whether done by a human or an AI agent.packages.md— the NuGet package catalog and included libraries.docs/index.md— full generated documentation for every library.
Contributing¶
- Each component only takes NuGet package dependencies on other SAIF components (never direct project references), so components can still be changed and released independently within this shared repository.
- Pushes to
mainare path-scoped per component (src/{component}/**), so a change to one component only triggers that component's pipeline. - The
mainbranch is protected: pull requests require at least one reviewer, with automatic (non-blocking) review requests sent to the Technology Architect, Technology Architecture Mgr, and Site Reliability Engineer II groups.
Generated libraries¶
| Library | Purpose | Index | Documentation |
|---|---|---|---|
| SAIF.NetCore.ServiceContracts | Defines shared contracts, data types, and exceptions used across the framework. | Index | Documentation |
| SAIF.NetCore.Common | Provides reusable extensions, helpers, shared value types, and exceptions. | Index | Documentation |
| SAIF.NetCore.AuthService | Implements identity services, role authorization, Security API clients, and token clients. | Index | Documentation |
| SAIF.NetCore.HashUtil | Provides hash salting and recovery utilities with creation-date information. | Index | Documentation |
| SAIF.NetCore.Logging | Implements host-specific logging services and delivery to the SAIF Logging API. | Index | Documentation |
| SAIF.NetCore.PingableService | Provides a /Ping health endpoint and service health-check contracts. |
Index | Documentation |
| SAIF.NetCore.DBConnectionClient | Retrieves and caches database connection strings through the DBConnection API. | Index | Documentation |
| SAIF.NetCore.ErrorHandler | Provides exception logging and response handling for web hosts and Windows Services. | Index | Documentation |
| SAIF.NetCore.HttpClients | Provides reusable authenticated, retry-capable JSON HTTP client services. | Index | Documentation |
| SAIF.NetCore.LegacyAuth | Bridges modern authentication flows to legacy applications with DPAPI-encrypted cookies. | Index | Documentation |
| SAIF.NetCore.OIDC | Implements OIDC authentication, cookie maintenance, and token-refresh behavior. | Index | Documentation |
| SAIF.NetCore.Clients.UC4 | Provides a typed client for scheduling UC4/Automic jobs. | Index | Documentation |
| SAIF.NetCore.WindowsService | Provides hosting and recurring-worker patterns for Windows Services. | Index | Documentation |
| SAIF.NetCore.NtlmApiAuth | Provides caller and on-behalf-of role authorization for APIs and HTTP clients. | Index | Documentation |
| SAIF.NetCore.ServiceExtensions | Composes dependency injection, startup, middleware, and observability for SAIF applications. | Index | Documentation |
Last updated: 2026-10-03
Sources¶
Architecture.mdPipelines.md