Wie von Microsofts OWIN-Implementierung Katana bekannt, besteht die Aufgabe der Klasse Startup bei ASP.NET vNext darin, Middleware-Komponenten zu registrieren. Diese Komponenten werden von jeder HTTP-Anfrage in der definierten Reihenfolge durchlaufen, wobei jede Komponente auch die weitere Verarbeitung einer Anfrage durch nachfolgende Komponenten unterbinden kann. HTTP-Antworten durchlaufen diese in umgekehrter Reihenfolge. Middlware-Komponenten implementieren verschiedene Aspekte der Kommunikation mit Clients. Dazu zählt zum Beispiel die Implementierung von Security-Szenarien, die Komprimierung von Seiteninhalten, das Unterstützen von CORS und Web-Sockets, das Ausliefern von statischen Dateien oder das Delegieren an Anwendungs-Frameworks, wie ASP.NET MVC oder SignalR.
Obwohl ASP.NET vNext nicht primär auf OWIN basiert, ist seine Architektur stark an OWIN und Katana angelehnt, sodass es einfach möglich ist, OWIN-Komponenten zu registrieren. Die von Katana bereitgestellten OWIN-Komponenten sollen darüber hinaus für die direkte Verwendung mit ASP.NET vNext angepasst werden.
Indem der Entwickler lediglich jene Middleware-Komponenten registriert, die seine Anwendung auch tatsächlich benötigt, kann er die Leistung seiner Web-Anwendung steigern. Somit kann ASP.NET vNext auch in diesem Punkt mit Konkurrenz-Technologien, welche – wie zum Beispiel NodeJS - für ihre Leichtgewichtigkeit bekannt sind, Schritt halten.
Das nachfolgende Listing zeigt ein Beispiel für eine Startup-Klasse. Diese kann sich in einem beliebigen Namensraum befinden, muss jedoch den Namen Startup mit der gezeigten Methode Configure aufweisen. Configure bekommt von ASP.NET vNext eine Instanz von IBuilder übergeben und registriert bei dieser die gewünschten Middleware-Komponenten. Zum Registrieren der meisten Middleware-Komponenten stellt Microsoft Erweiterungsmethoden für IBuilder zur Verfügung. Das betrachtete Beispiel verwendet die Erweiterungsmethode UseStaticFiles, um eine Middleware-Komponente zum Ausliefern von statischen Dateien sowie UseWelcomePage, um eine Komponente, welche eine Begrüßungsseite anzeigt, zu registrieren. Erstere Liefert die angeforderte statische Datei zurück, sofern sie existiert. Ansonsten gibt sie die Kontrolle an die nächste Komponente weiter, sodass in diesem Beispiel der Benutzer zumindest begrüßt wird.
using Microsoft.AspNet.Builder;
namespace SomeNamespace
{
public class Startup
{
public void Configure(IBuilder app)
{
app.UseStaticFiles();
app.UseWelcomePage();
}
}
}