ASP.NET vNext Overview

In the last post I gave a brief introduction to ASP.NET vNext and the goals of the framework. This post will dive into more details on the overall architecture.

This diagram shows the dependencies between the github repositories:

These aren't all of the dependencies but it's enough to get an idea of the design. The big categories are:

KRuntime - This contains the SDK and the runtime (kvm, kpm, and the kre). This includes all of the logic to boot the CoreCLR, full CLR and mono. It also contains a piece of code that Visual Studio communicates with to drive including intellisense, compilation errors in the IDE etc.

HttpAbstractions - This repository contains the new http abstractions, including but not limited to - HttpContext, HttpRequest and HttpResponse and the new IBuilder to wire up middleware. It also contains the OWIN support.

Hosting - This repository has the project that understands how to boot web applications. All of the logic to find the Startup class and call into the Configure entry point lives here. It also contains the interfaces required to write up an http server. I'll show how easy this is in a later post by building an ASP.NET vNext layer on top of an unmodified Nowin webserver.

Razor - Razor needs no introduction. The new razor has a new code generation model that isn't dependent on code dom and that we intend to make simpler to extend. We're going to make sure that the new Razor tooling works well for other frameworks that have razor support (Nancy, ServiceStack, SimpleWeb).

Mvc - This is the new MVC/WebAPI/WebPages combined framework. We don't have the WebPages in there yet so don't go looking for it :). Some things to call out about the new Mvc:

There are no more statics

There's alot more extensibility points

It can be self hosted

Controllers don't require a base class.

RazorViewEngine is Roslyn based

*Everything* is async

SignalR-Server - Near and dear to my heart is SignalR vNext. This version is pretty identical to https://github.com/SignalR/SignalR but built on top of the new http stack and cross cutting concerns. Stay tuned, we have lots of new features planned!

It's still early days, so don't expect to be deploying this to production, but this post should give you a good starting place if you're interested in any of the particular areas of the code.

Bonus

If you're bored and want to read some code, here are some interesting things to look at: