Why .NET
Modern .NET is a fast, cross-platform framework from Microsoft with strong typing, excellent tooling and first-class support on Azure. It is a natural choice for enterprises already invested in the Microsoft ecosystem.
When .NET is the right choice
| Use cases | |
|---|---|
| Great fit | Enterprise web apps and APIs, Azure-hosted systems, Microsoft 365 and Active Directory integration, high-performance services |
| Less ideal | Very small sites on low-cost shared hosting, where PHP is simpler |
What we build with .NET
ASP.NET Core apps & APIs
Secure, high-performance web applications and REST APIs.
Blazor
Interactive web UIs in C# for teams that prefer one language.
Azure applications
App Service, Functions, Azure SQL and Service Bus.
.NET Framework migration
Legacy Web Forms, WCF and MVC apps moved to modern .NET.
Our .NET stack
Moving from .NET Framework to modern .NET
Many enterprise applications still run on .NET Framework 4.x, which only runs on Windows and receives limited updates. Modern .NET runs on Linux and in containers, performs significantly faster, and supports current C# language features and cloud-native hosting. The migration path depends on the application type.
Class libraries and business logic often move with modest changes. ASP.NET MVC and Web API applications move to ASP.NET Core with routing, configuration and dependency injection updates. Web Forms and WCF have no direct equivalent, so those parts are usually rebuilt — typically as ASP.NET Core with Razor Pages, Blazor or a React front end, and gRPC or REST in place of WCF. We migrate incrementally where possible, running old and new side by side behind a reverse proxy until the old application can be retired.
.NET and the Microsoft ecosystem
For organisations already using Microsoft 365, Entra ID and Azure, .NET offers tight, well-supported integration: single sign-on with Entra ID, Microsoft Graph for mail, calendar and files, Azure Service Bus for messaging, and managed hosting with Azure App Service or Container Apps. Licensing agreements and existing in-house skills often make .NET the most cost-effective choice for these companies.
Performance and cost on .NET
Modern .NET is one of the fastest mainstream web frameworks in independent benchmarks, which translates into fewer servers and lower hosting bills for busy applications. Native AOT compilation reduces start-up time and memory use for containers and serverless functions. Combined with running on Linux instead of Windows servers, many organisations reduce infrastructure costs noticeably when they move from .NET Framework on Windows to modern .NET in containers.
Choosing a .NET version
Modern .NET releases every November. Even-numbered releases are long-term support (LTS) versions supported for three years; odd-numbered releases are standard-term support with a shorter window. Most organisations standardise on LTS releases and move from one to the next.
| Starting point | Recommended path |
|---|---|
| New application | Current LTS release of .NET with ASP.NET Core |
| .NET Core 3.1, .NET 5 or 6 | Upgrade to a supported LTS — these versions are out of support |
| .NET Framework 4.x web app | Incremental migration to modern .NET, often route by route behind a proxy |
| Web Forms or WCF | Rebuild the UI and replace WCF with REST or gRPC; reuse business logic where possible |
Check Microsoft’s .NET support policy for exact end-of-support dates.
Architecture patterns we use in .NET
.NET gives teams many architectural options. We choose the lightest structure that keeps the code understandable as it grows.
- Modular monolith — one deployable application split into clear modules with their own data access; our default for most business systems.
- Clean or vertical-slice architecture — organising code by feature rather than technical layer, so changes stay local.
- Minimal APIs for small, focused services; controllers where conventions and filters help larger APIs.
- Background processing with hosted services, Hangfire or Azure Functions for scheduled and queued work.
- Messaging with Azure Service Bus, RabbitMQ or MassTransit when modules or services must communicate asynchronously.
- .NET Aspire to orchestrate local development and observability for distributed applications.
Data access: Entity Framework Core or Dapper?
| Entity Framework Core | Dapper | |
|---|---|---|
| Productivity | High — migrations, LINQ, change tracking | Moderate — you write SQL |
| Performance | Good with care (no-tracking queries, projections) | Very fast, close to raw ADO.NET |
| Best for | Most CRUD-heavy business logic | Reporting, complex queries and hot paths |
| Risk | Inefficient generated queries if unmonitored | More hand-written code to maintain |
Many of our .NET applications use both: EF Core for everyday domain logic and Dapper for the handful of queries where performance matters most.
Testing, security and delivery
- Unit tests with xUnit or NUnit and integration tests using WebApplicationFactory and Testcontainers
- Authentication with Microsoft Entra ID, Auth0 or ASP.NET Core Identity, and policy-based authorisation
- Secrets kept in Azure Key Vault or AWS Secrets Manager — never in appsettings files
- Dependency and vulnerability scanning in every build
- CI/CD with GitHub Actions or Azure DevOps, deploying to App Service, Container Apps, AKS or Windows servers
- Structured logging and tracing with OpenTelemetry and Application Insights
Need .NET engineers to join your team? See hire .NET developers, or read about Azure cloud development.
Questions to answer before a .NET migration
- Which parts of the application are actively changed, and which are stable?
- Does any code depend on Windows-only APIs, COM components or System.Web?
- Are there automated tests we can rely on, or must we add them first?
- Will the application move to Linux containers or stay on Windows servers?
- Which third-party libraries have modern .NET versions, and which need replacing?
Front-end options for .NET teams
| Option | Strengths | Consider when |
|---|---|---|
| Blazor Server / Web App | C# end to end, fast to build internal tools | Your team is mostly .NET and users are on reliable networks |
| Blazor WebAssembly | Runs in the browser, works offline | You need rich client apps without JavaScript |
| React or Angular + ASP.NET Core API | Largest front-end ecosystems | Public-facing products and teams with front-end specialists |
| Razor Pages / MVC | Simple server-rendered pages | Content-heavy sites and straightforward forms |
| .NET MAUI | Shared C# for mobile and desktop apps | Line-of-business apps across Windows, iOS and Android |
We recommend the option your team can maintain confidently over the long term. Mixing approaches is fine — for example, Blazor for internal back-office screens and React for the customer-facing application, both calling the same ASP.NET Core API.
Questions we ask at the start of a .NET project
- Is the organisation standardised on Azure, another cloud or on-premise servers?
- Which identity provider do users sign in with today?
- Which existing SQL Server databases, SharePoint sites or Dynamics systems must be integrated?
- Does the team that will maintain the system prefer Blazor or a JavaScript framework?
- What uptime, audit and data-retention requirements apply?
How we work
- Discovery and architecture — a short design phase that agrees structure, data model and hosting.
- Two-week sprints — working software on a staging environment, with code reviews on every change.
- Automated tests and CI/CD — tests and quality checks run before anything reaches production.
- Documentation and handover — setup guides, architecture notes and API documentation.
Modernising older .NET apps? See legacy software modernization. For complete products, see custom software development.
This page is part of Backend Development Services — see the full overview for related services, approach and pricing.