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.
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.
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.
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()); ... } }
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)