application-framework
Shared TC.Phenix.ApplicationFramework NuGet libraries providing common service-model types, an ORM layer over SQL Server, and DI/MediatR integrations used by backoffice and other WCF-based services.
Health score
0 to 100 across seven weighted factors; nothing is hidden. Green is 75 and above, amber 50 to 74, red below 50. How scoring works.
Facts
| Languages | csharp |
| Frameworks | MediatR 12.5, Autofac 8, SimpleInjector 5, protobuf-net 3, xUnit 2.9 |
| Runtimes | .NET Framework 4.6.2-4.8.1, .NET Standard 2.0, .NET 8, .NET 10 |
| Tests / CI | good / CI in place |
| Last commit | 2026-07-09 |
| Owner | Owner unknown (mapping to be curated) |
| Domain | Platform services (system generated; curate in repo-owners.json to override) |
| Product area | Phenix |
| Hosted | No signal No hosting signal in its pipelines (typical for libraries and contract packages) |
| Releases | 1 release pipeline(s): application-framework release |
| Integration | wcf, grpc |
| Source | Open in Azure DevOps |
Dependencies in context
Entanglement
kernel Bound into the core by 2 mechanism(s).
- Pinning dependency: application-framework
- Speaks WCF (client)
Detaches when it is itself a binding point: unpinning it releases its consumers; and when its WCF surface gains a modern interface or its WCF calls move to one.
This repo is itself a binding point: see what cutting it unlocks.
Depends on / used by
Migration playbooks
Generated from this repo's assessment data: what is feasible, what blocks it, and the steps in order. Ratings: green means actionable now, amber means sequence other work first, red means blocked, grey means not applicable.
ZDD adoption
Not applicableNot a deployed service (libraries, database definitions, desktop apps) or a retirement candidate not worth the investment. Ships as a package; ZDD applies to the services that consume it.
SQL Server exit
Not applicableNo SQL Server dependency is recorded for this repo. Nothing to migrate.
Containerisation
Not applicableLibraries ship as packages, not as running services. There is nothing to containerise.
Recommended actions
Complete the multi-targeting of application-framework
34 dependents. Multi-targeting is already under way; finishing it lets consumers move to modern .NET without waiting on each other.
Impact: Highest leverage in the programme: releases consumers without touching them
proposedAssessment notes
application-framework
Purpose
Foundation library suite (TC.Phenix.ApplicationFramework.*) consumed across the estate: core domain primitives (Money, Currency, Entity, Address), an ADO.NET/SQL Server data-access layer, WCF service-client helpers, XML configuration adapters, and Autofac/SimpleInjector/MediatR integrations. Version 7 added protobuf-net contracts to enable gRPC migration for WCF consumers.
Tech stack
Seven SDK-style C# projects, centrally versioned (Directory.Packages.props, Nerdbank.GitVersioning), multi-targeting net462 through net481, netstandard2.0, net8.0 and net10.0. The .Services and .ConfigurationManager packages are .NET Framework-only (System.ServiceModel). Heavy analyzer usage (Sonar, SecurityCodeScan, NetAnalyzers), C# 14, .slnx solution.
Deployment
Included with 1 release: build pipeline application-framework CI, release pipeline application-framework release. YAML CI uses shared azure-pipelines-templates (.NET 10 SDK) and publishes six NuGet packages; deployment is package publication, not a hosted app.
Dependencies
Internal: tc-connectionbroker (TC.ConnectionBroker.Abstractions). Third-party libraries only (MediatR, Autofac, protobuf-net, MemoryPack, Microsoft.Data.SqlClient); no external services.
Data stores
None of its own — Data.SqlServer provides the ORM/data-access layer that consuming services use against their own SQL Server databases.
Integration points
Provides WCF service-client base types (framework targets) and protobuf-net contracts for gRPC migration; no runtime endpoints itself.
Code health
Good: seven test projects (xUnit, Moq, coverlet) covering each package plus a shared testing-common project and a BenchmarkDotNet project. Actively maintained (last commit 2026-07-09) with disciplined breaking-change documentation in the README.
Modernisation risks
The library is itself modern and well-run; the risk is its wide blast radius — breaking changes ripple across backoffice and WCF services, and the Framework-only Services/ConfigurationManager packages keep legacy consumers on .NET Framework. Priority low for the repo itself; it is an enabler for migrating its consumers (protobuf/gRPC path already prepared).