aspnetcore — A modular, middleware-based web framework rebuilt from scratch
Project Overview
ASP.NET Core represents one of the more ambitious bets in modern web framework design: rather than layering on top of an existing runtime, Microsoft rebuilt the entire web stack from scratch alongside .NET Core. The result is a framework that shares almost nothing with the classic ASP.NET that preceded it — no System.Web, no AppDomains, no XML-heavy configuration. What emerged instead is a modular, middleware-based pipeline that feels closer to Node.js frameworks like Express than to its own predecessor. With nearly 38,000 stars on GitHub, it’s one of the most-watched repositories in the .NET ecosystem, though that number partly reflects the sheer breadth of the codebase — this repo contains not just the framework itself but also Blazor, SignalR, Entity Framework Core integration points, and the entire MVC stack[1]. The architectural decision to make everything dependency-injectable by default, rather than as an afterthought, fundamentally shapes how applications are structured in ways that newcomers from other ecosystems often find surprising.
What It’s For
This framework is the primary web development stack for the .NET ecosystem, covering everything from traditional server-rendered Razor Pages to single-page application backends with Web APIs, real-time communication via SignalR, and full-stack web UI with Blazor. It’s designed for teams already invested in the Microsoft ecosystem who want a unified programming model across different application types. The middleware pipeline architecture makes it particularly well-suited for cloud-native microservices, where you can strip away unused components to keep deployments lean. However, the framework’s tight coupling to the .NET runtime means it’s not a casual choice for polyglot teams — you’re committing to the broader .NET ecosystem with all its attendant tooling and deployment considerations. For teams coming from Node.js or Python, the learning curve isn’t just about syntax but about understanding concepts like the middleware pipeline order, dependency injection lifetimes, and the Kestrel web server’s request processing model.
How to Use It
The core workflow revolves around the middleware pipeline configured in Program.cs. Rather than the traditional handler-based approach, ASP.NET Core processes every request through a chain of middleware components that each get to inspect, modify, or short-circuit the request. This pipeline-first architecture means that authentication, logging, static files, and your application logic all live as composable middleware in a configurable sequence. The framework’s opinionated default template gives you a solid starting point, but the real power comes from understanding how to reorder or replace middleware to match your specific needs. One tradeoff worth noting: debugging middleware ordering issues can be frustrating initially, since the pipeline executes components in sequence and a misplaced middleware can silently swallow requests or skip critical processing.
Creates a new ASP.NET Core web application project with Razor Pages, the recommended starting template for server-rendered apps
dotnet new webapp -n MyApp
Generates a Web API project with controllers, OpenAPI support via Swagger, and minimal middleware configuration
dotnet new webapi -n MyApi
Launches the Kestrel web server on the specified HTTPS endpoint during development
dotnet run --urls https://localhost:5001
Recent Updates
Latest Release: v9.0.15 (2025-05-13)
Security and reliability update for .NET 9 LTS release, including fixes for authentication middleware and Kestrel HTTP/3 edge cases
The project maintains a steady cadence of monthly servicing releases alongside major version previews. The .NET 10 preview cycle is underway with a focus on performance improvements to the Blazor WebAssembly runtime and native AOT compilation support for minimal APIs. Community engagement remains strong, with over 1,200 open issues tagged as help-wanted providing entry points for new contributors.
Sources & Attributions
[1] Repository has 37,905 stars as of the latest data — dotnet/aspnetcore