Martin Korneffel: IT-Beratung/Softwareentwicklung
 mk-prg-net.de    0711/5283392   Martin.Korneffel@mk-prg-net.de

ASP.NET Web API

Bei der Implementierung von moderner Single Page Webapplikationen, beim Einsatz von Cloud Computing und in der Industrie 4.0 werden Webservices immer bedeutender, die durch das REST- Architekturmuster geprägt sind.

REST verallgemeinert die Architektur des Internets. Unterschiedliche Dinge wie Datensätze von Datenbanken oder Steuerungen von Fertigungsautomaten werden durch die Rest- Architektur im Internet der Dinge einheitlich über URI's verfügbar gemacht. Mittels elementarer REST- Operationen wie get, post, put und delete können CRUD- Operationen auf Datensätzen oder die Zustandsüberwachung von Fertigungsautomaten implementiert werden.

Mit der ASP.NET Web Api liefert Microsoft ein schlankes und modulares Framework zur Implementierung von restful Anwendungen in .NET. Die Anwendungen können dank Implementierung als OWIN Middleware auf einem Webserver, als auch innerhalb einer beliebigen .NET Anwendung (Kommandozeile, WinForm- Client) gehosted werden. Letzteres kann die Integration technischer Anwendungen im Intranet vereinfachen.

WebApi

Aktuelle Version
2.2
Namespace
System.Net.Http
Aufgabe
Kapseln des Http- Protokolles in .NET- Klassen. Backend- Systeme mit REST Architektur implementieren.
Nachrichtenfluss durch die WebApi- Pipeline

Beispielprojektmappe CanvasScriptServer

Entwickeln einer MVC- Beispielanwendung. Die Anwendung soll Zeichnungen verwalten, welche mit der JavaScript- Biliothek CanvasPainter angefertigt wurden. Die Zeichnungen sind Listen aus elementaren HTML5- Canvas- Befehlen. Sie werden Benutzern zugerodnet.

Zustandsgraph und Datenmodell der Beispielanwendung CanvasScriptServer

Benutzer- und Listenverwaltung, das Editieren und Speichern sind jeweils einzelne Zustände der Anwendung, die mit spezialisierten Views korrespondieren. Hier folgt die Anwendung dem REST Architekturstil. Dabei werden die Zustandsübergänge durch dem Folgen von Links realisiert, wobei auf dem Server durch Actions neue Zustände (Views) berechnet werden.

Die MVC- und WebApi Controller sollen in einefachen Unit- Tests geprüft werden. Dazu ist die Abhängigkeit von der Datenbank mittels Mocks zu beseitigen. Durch Entwurf der CanvasScriptServer Lib nach dem Prinzip der Dependency Injection und Auflösung der Abhängigkeiten zur Laufzeit mittels des DI- Containers Unity gelingt das.

MediaTypeFormater

Beispielimplementierung eines typspezifischen Mediaformatters

Definieren Typspezifischer Serialisierer/Deserialisierer mittels MediaTypeFormatter. Wichtig:Allgemeine Formater wie z.B. der XmlFormatter müssen in der WepApi- Konfiguration entfernt werden. Beispiel:

public static class WebApiConfig
{
   public static void Register(HttpConfiguration config)
   {
      // Web API configuration and services
      // Spezifischen Xml- Formatter für ICanvasScript registrieren
      GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
      GlobalConfiguration.Configuration.Formatters.Add(new MyWebApi.CanvasScriptServerXmlFormatterBuffered());
      ...
   }
}

Struktur eines MediaTypeFormatters

Views mittels RAZOR- Parser implementieren

Razor im Rahmen von ASP.NET MVC ist ein ideales Werkzeug zum generieren von Html- Seiten auf der Serverseite. WebApi- MediaTypeFormatter, die in einer ASP.NET MVC- Anwendung gehostet werden, können Razor zum Aufbau der HTML Representation einer Ressource nutzen. Jedoch ist der Aufruf des Razor- Parsers aus der WebApi nicht trivial. Eine Hilfsklasse, die unter https://raw.githubusercontent.com/RickStrahl/WestwindToolkit/master/Westwind.Web.Mvc/Utils/ViewRenderer.cs heruntergeladen werden kann, vereinfacht den Einsatz von Razor enorm. (Zugehöriger Artikel verfügbar unter http://www.codemag.com/article/1312081)