WCF Data Services

Z Wikipedii, wolnej encyklopedii

WCF Data Services – implementacja protokołu Open Data Protocol na platformie .NET. Dzięki wykorzystaniu tego protokołu możliwe jest pobieranie, aktualizowanie, usuwanie danych z wykorzystaniem semantyki serwisów typu REST.

Bibliografia[edytuj | edytuj kod]

Źródłem danych zasilającym WCF Data Service mogą być:

  • Baza danych (np. Microsoft SQL Server) – wymagane jest zmapowanie bazy danych za pomocą mechanizmu typu ORM (np. ADO.NET Entity Framework ).
  • Klasy CLR – klasy muszą implementować interfejs IQuerable (dla pobierania danych) i/lub IUpdatable (dla operacji aktualizacji danych). WCF Data Services korzystają z takich klas za pomocą mechanizmów refleksji.
  • Dowolne źródło danych – każde inne źródło nie wymienione powyżej. Wymagana jest implementacja tak zwanych providerów udostępniających odpowiednie funkcjonalności:
    • Metadata Provider – odpowiada za zdefiniowanie własnego modelu danych, który będzie wystawiany przez serwis. Provider ten tworzony jest poprzez implementację interfejsu IDataServiceMetadataProvider.
    • Query Provider – odpowiada za udostępnienie mechanizmu odpytywania serwisu poprzez mechanizmy definiowane przez protokół Open Data Protocol. Provider ten tworzony jest poprzez implementację interfejsu IDataServiceQueryProvider.
    • Update Provider – odpowiada za mechanizmy aktualizacji danych wystawianych przez serwis. Provider ten tworzony jest poprzez implementację interfejsu IDataServiceUpdateProvider.
    • Paging provider – odpowiada za mechanizmy stronicowania danych po stronie serwera. Provider ten tworzony jest poprzez implementację interfejsu IDataServicePagingProvider.
    • Streaming provider – odpowiada za dostarczanie dużych obiektów binarnych. Provider ten tworzony jest poprzez implementację interfejsu IDataServiceStreamProvider.

Formaty dostarczania danych[edytuj | edytuj kod]

Dane udostępniane przez mechanizm WCF Data Services mogą być przekazywane dwoma formatami (operator: $format=atom lub $format=json):

Podczas konferencji MIX11 przedstawiono koncepcję formatu „skondensowanego” JSON, który będzie umożliwiał ograniczenie narzutu danych jaki jest obecnie wysyłany z wykorzystanie standardowego formatu JSON.

Biblioteki[edytuj | edytuj kod]

WCF Data Services dzielone jest na część serwerową (tak zwany producent), która umożliwia tworzenie serwisów wystawiających dane za pomocą protokołu Open Data Protocol, oraz część kliencką (tak zwany klient), która umożliwia korzystanie z takiego serwisu.

Dla .NET w wersji 3.5, biblioteki klienckie i serwerowe są dostępne po instalacji SP1. Dodatkowo mechanizm WCF Data Services w przypadku .NET 3.5 SP1 nosi nazwę ADO.NET Data Services.

Dla .NET w wersji 4.0 biblioteki dostępne są od razu z instalatorem frameworka.

Biblioteki klienckie dostępne są w wersji dla pełnego .NET Frameworka oraz dla Silverlighta. Biblioteki te dostarczają model obiektowy serwisu, automatycznie generując odpowiednie zestawy klas dla typów, które serwis udostępnia. Dodatkowo tłumaczą zapytania LINQ na adresy URI, które są wysyłane do serwisu.

Logika biznesowa[edytuj | edytuj kod]

Logika biznesowa w WCF Data Services realizowana jest za pomocą dwóch mechanizmów:

  • Service Operations
  • Interceptors

Service Operations[edytuj | edytuj kod]

Służą do dostarczania przez serwis gotowych metod, które wykorzystuje programista i/lub użytkownik końcowy. Metody te mogą zawierać logikę biznesową, walidacyjną. Service Operation może, ale nie musi, przyjmować jeden lub więcej parametrów, które podaje użytkownik w celu poprawnego jej wykonania. Występują w dwóch trybach:

  • Dla operacji wykorzystujących żądanie typu GET
  • Dla operacji wykorzystujących żądanie typu POST

Interceptors[edytuj | edytuj kod]

Służą do przechwytywania żądań, które docierają do serwera i wykonywaniu logiku biznesowej lub walidacyjnej. W odróżnieniu od Service Operations jeśli twórca serwisu stworzy jeden lub więcej Interceptors użytkownik nie będzie miał możliwości ich obejścia i będą one obowiązywały bez jego udziału. Interceptors nie mogą też przyjmować żadnych parametrów i działają per encja w modelu danych, na którym działa serwis. Występują w dwóch trybach:

  • QueryInterceptor – wykorzystywany dla żądań typu GET.
  • ChangeInterceptor – wykorzystywany dla żądań typu PUT, POST, DELETE.

Linki zewnętrzne[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]