iX 1/2017
S. 74
Review
Webentwicklung
Aufmacherbild

Webserver-Framework ASP.NET Core 1.0

Der neue Kern des Web

Mit .NET Core 1.1 hat Microsoft kürzlich die Neuimplementierung seines Webserver-Frameworks ASP.NET Core veröffentlicht. Aufgrund zahlreicher Aufräumarbeiten ist es nicht mehr voll kompatibel zu seinen Vorgängern, bietet andererseits aber neue Funktionen an.

Bereits Mitte der 90er-Jahre erschien der Name ASP (Active Server Pages) zum ersten Mal bei Microsoft. Das damals noch auf dem Component Object Model (COM) und Skriptsprachen wie VBScript und JScript basierende Webserver-Framework wurde 2002 in die .NET-Welt überführt. Dort gab es mit Web Forms (für HTML-Oberflächen) und Web Services zunächst zwei Varianten von ASP.NET. Im Laufe der Jahre kamen weitere Spielarten wie AJAX, Dynamic Data (vergleichbar mit Ruby on Rails), Model-View-Controller, Web API, SignalR (für Push-Nachrichten an den Browser) und Web Pages (vergleichbar mit PHP) hinzu. Laut Marktforscher builtwith.com belegt ASP.NET mit 39 % mittlerweile den Spitzenplatz unter den Webserver-Frameworks im Internet. Bei den 10 000 und 100 000 meistbesuchten Websites führt aber weiterhin PHP.

Listing 1: Hello World mit ASP.NET Core

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

namespace NETCoreWeb {
 public class Program {
  public static void Main(string[] args)  {
   new WebHostBuilder()
       .UseKestrel()
       .UseUrls("http://localhost:12345/")
       .UseStartup<Startup>()
       .Build()
       .Run();
  }
 }

 public class Startup
 {
  public void Configure(IApplicationBuilder app, IHostingEnvironment env,  ILoggerFactory loggerFactory)
  {
   app.Run(async (context) =>
   {
    await context.Response.WriteAsync(System.DateTime.Now + ": Hallo von ASP.NET Core!");
   });
  }
 }
}

Trotz des Markterfolgs entschloss sich Microsoft vor zwei Jahren zu einer Generalüberholung von ASP.NET, das durch viele Altlasten zu schwerfällig geworden war. Die neue Variante heißt ASP.NET Core. Den Vorgänger will Microsoft vorerst weiterpflegen; mittelfristig setzt es aber komplett auf die Core-Variante. Zu der Überarbeitung gehört insbesondere der Verzicht auf die bisher in allen ASP.NET-Varianten verwendete Bibliothek System.Web.dll. An ihre Stelle treten Assemblies mit schlankeren Funktionen, die der Entwickler nur bei Bedarf als Pakete einbindet. Der Startcode einer Webanwendung (siehe „Hello World“ in Listing 1) ähnelt Node.js und seinem Node Package Manager (NPM). Der mit ASP.NET Core mitgelieferte HTTP-Server heißt Kestrel; er arbeitet mit anderen Webservern wie Microsofts IIS, Apache und nginx zusammen. Anders als Node.js bleibt Core dem Multithreading-Ansatz seiner Vorgänger treu: Ein eigener Thread beantwortet jede Anfrage.