noch ein REST Service RESTier

Wer kann sich noch erinnern an mehrschichtige Software Architektur, n-Tier genannt. Microsoft kommt nun mit einem neuen .NET Framework, Rest-Tier genannt.  Ziel ist es mit wenig Aufwand eine komplette relationale Datenbank als REST Service API zur Verfügung zu stellen. Der Weg über die ASP.NET Web Api benötigt eine Menge Code in den Controllern Klassen. Es gibt zwar eine Scafffolding Wizard der den Code automatisch erzeugen kann, aber es bleibt ne Menge Zeilen Source. Darüber hinaus sind die Redmonder Entwickler beim OData 3 Standard stehen geblieben. OData wiederrum ist ein Standard um REST Abfragen per URL zu steuern.

rudolph reindeer red nose and hat

Das Rudi R(EST)en-tier realisiert in der Version 1 (http://odata.github.io/RESTier/) mit einem Zweizeiler eine komplette OData API auf eine Datenbank ab.

Schritt 1: Visual Studio ASP.NET Web Projekt mit ASP.NET Web Api anlegen

Schritt 2: per nuget Microsoft.Restier 1 (aktuell beta) installieren.

Schritt 3: ADO.NET Entity Datamodel hinzufügen z.B. einer Nordwind Datenbank

Schritt 4: Datei WebApiConfig öffnen und Code wie folgt ergänzen

   1:  Public Shared Async Sub Register(config As HttpConfiguration)
   2:          config.Filter().Expand().Select().OrderBy().MaxTop(Nothing).Count()
   3:          Await config.MapRestierRoute(Of EntityFrameworkApi(Of NorthwindModel))(
   4:              "NWApi", "api/NW",
   5:                  New RestierBatchHandler(GlobalConfiguration.DefaultServer))

Da einige Funktionen über Extension Methods implementiert sind, kann es sein das Intellisense die benötigten Usings/imports nicht automatisch erstellen kann.

   1:  Imports System.Web.Http
   2:  Imports System.Web.OData
   3:  Imports System.Web.OData.Extensions
   4:  Imports Microsoft.Restier.Publishers.OData
   5:  Imports Microsoft.Restier.Publishers.OData.Batch
   6:  Imports Microsoft.Restier.Providers.EntityFramework

Im Browser kann nun der Service mit ODdata Syntax aufgerufen werden.

/api/nw/Customers('ALFKI')

Ein derart erstellter Service liefert ungeschützt vollen Zugriff auf eine Datenbank. Insofern ist das selbst im Intranet ein untragbares Szenario. Die Entwickler haben sich allerdings umfangreiche Möglichkeiten ausgedacht, den REST Service zu “customizen”. So kann das Caching per ETag mit einer Zeile Code eingebaut werden.

Wir werden verfolgen wie das Thema weiter läuft oder den abgekündigten Weg der WCF Data Services nimmt.

Kommentare sind geschlossen