Skip to main content

ADR-001: Backend Technology — .NET 8 / C#

Status: Accepted Date: 2026-03-16

Context

PSSaaS needs a backend technology stack for porting ~30 years of PowerBuilder business logic to a modern SaaS platform. The business logic is heavily financial (BestEx pricing, pooling, risk/hedging) and requires precise decimal arithmetic, strong typing, and robust SQL Server interoperability.

Options considered:

  • .NET 8 / C# — Strongly typed, OOP, excellent SQL Server support, mature enterprise ecosystem
  • Node.js / TypeScript — Fast development, but weak decimal precision and less mature ORM landscape for SQL Server
  • Python — Already used for PowerSeller X, but weaker typing and not ideal for porting OOP-heavy PowerBuilder code
  • Java — Viable but no organizational experience, and .NET has better SQL Server tooling

Decision

Use .NET 8 / C# as the backend technology for PSSaaS.

Key factors:

  • Closest heritage to PowerBuilder: Strongly typed, OOP, class-based architecture maps naturally from PB NVOs to C# classes
  • Superior decimal precision: decimal type is native and exact — critical for financial calculations (BestEx, LLPAs, pooling)
  • Excellent SQL Server interop: Entity Framework Core provides first-class SQL Server support, database-first scaffolding, and migration tooling
  • Mature enterprise ecosystem: Authentication, authorization, dependency injection, middleware pipeline — all built in
  • Strong async/await model: Necessary for scalable SaaS with concurrent tenant requests

Consequences

Positive:

  • Natural migration path from PowerBuilder OOP patterns to C# OOP patterns
  • EF Core scaffolds the existing ~170-table schema immediately
  • .NET 8 is LTS with strong Microsoft support and ecosystem
  • Excellent tooling (Visual Studio, Rider, dotnet CLI)

Negative:

  • Different stack from PowerSeller X (Python/FastAPI) — no shared business logic libraries
  • Shared domain concepts (LLPA calculations, MISMO mappings) must be defined in language-neutral specs and implemented independently in each stack
  • Team must learn .NET ecosystem (Rudy's background is PowerBuilder)