Einführung in die ADO.NET Data Services

Viele Anwendungen werden auch heute oft noch als 2-Schichten Applikationen entwickelt. Alle Clients enthalten die entsprechenden Validierungen und Logikkomponenten und greifen direkt auf die Datenbank zu.

Ein Vorteil: Man spart sich die Entwicklung des Service Layers.

Leider gibt es dadurch einige Nachteile: Die einzelnen Clients müssen jeweils alle Validierungen enthalten und auch entsprechend aktualisiert werden. Auf unterschiedlichen Plattformen muss man jeweils die Logikkomponenten entwickeln/übersetzen.

Will man (so wie Mario und ich) eine Rich Internet Application (RIA), also Java Applets, Silverlight oder Flash in diese Architektur integrieren, wird man rasch enttäuscht werden.

RIAs werden am Client ausgeführt, die Datenbank liegt am Server. Die Verbindung zwischen Client und Server durch das Internet kann aber nur über HTTP erfolgen, da z.B. Silverlight den Browser Netzwerkstack verwendet.

Was nun?

adonet data services    adonet ds

Die Lösung heißt ADO.NET Data Services.

Anstatt direkt auf die Datenbank zuzugreifen schalten Sie einen Service Layer vor die Datenbank. Dieses ADO.NET Data Service erlaubt den Zugriff auf Tabellen über REST .

Die HTTP Verben (Get, Put, Post, Delete) geben dabei die Operation (SELECT, INSERT, UPDATE, DELETE) an. Die Daten werden in Form von ATOMPUB Feeds (also als XML) oder JSON (JavaScript Object Notation) ausgetauscht. Die Adressierung erfolgt über URLs.

z.B. https://localhost/DataServices.svc/Customers(ALFK)/Orders(2) liefert die zweite Bestellung des Kunden mit dem Key “ALFK” zurück.

Auch weitere Filterungen sind möglich (ähnlich eines WHERE Klausel)
   https://localhost/DataServices.svc/Customers/?$filter=City eq ‘Vienna’

Zusätzlich zum automatischen Zugriff auf alle Tabellen, können Sie eigene Methoden implementieren, die serverseitig LINQ Queries ausführen und das Ergebnis zurücklieferen (vergleichbar mit Stored Procedures nur ein Level höher).

Außerdem können Sie QueryInterceptors und ChangeInterceptors einsetzen, um Validierungen bei Änderungen oder Filterungen bei Abfragen (welcher Benutzer darf welche Daten sehen) zentral in den Service Layer zu integrieren.

Fazit: ADO.NET Data Services ermöglichen einen serviceorientierten Zugriff auf Datenbanken und das ohne viel Aufwand.
Zusätzlich zum Standard Datenbankzugriff, können auch zentrale Validierungen und Filterungen vorgenommen werden, die anders als Trigger und Views direkt in .NET geschrieben werden und trotzdem zentral für alle Clients gelten. ADO.NET Data Services sind darüber hinaus die einfachste Möglichkeit um von RIA Clients wie Silverlight auf Datenbanken zuzugreifen.

Tip: Fiddler ist beim Debugging von Data Services sehr hilfreich!

Weiterführende Informationen:

Creating an ADO.NET Data Service – Part 1
Creating an ADO.NET Data Service – Part 2
Creating an ADO.NET Data Service – Part 3

MSDN Library: ADO.NET Data Services

MSDN Magazine: Creating Data-Centric Web Applications with Silverlight 2

Über Fiddler

Max_Foto3 knom