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.
Źródłem danych zasilającym WCF Data Service mogą być:
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.
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 w WCF Data Services realizowana jest za pomocą dwóch mechanizmów:
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:
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: