![Page 1: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/1.jpg)
Paweł Rajba [email protected] http://www.kursy24.eu/
![Page 2: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/2.jpg)
Wprowadzenie WCF Data Services Obsługa żądania OData Podstawy języka OData Narzędzia i biblioteki
Gdzie można skorzystać z OData
OData w Web API Weryfikacja zapytań Formaty danych OData
![Page 3: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/3.jpg)
OData Otwarty protokół Służy do udostępniania danych dla zapytań i
modyfikacji przez usługi HTTP (np. REST) Dwie główne składowe
OData query syntax: składnia URL dla zapytań
OData Formatting: do wyboru ATOM Publishing Protocol (XML) lub JSON
REST implikuje wykorzystanie metod HTTP
![Page 4: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/4.jpg)
WCF Data Services WebApi Node.js, PHP, Java SQL Server Reporting Services Sharepoint Windows Azure Data Storage IBM WebSphere
poprzez dodatkowe narzędzia
![Page 5: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/5.jpg)
Framework do budowania usług danych OData Dzięki niemu można udostępniać
Entity Data Model
LINQ2SQL
Obiekty .NET (IQuerable)
![Page 6: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/6.jpg)
Po stronie serwera Tworzymy providera dla danych
▪ Klasa z kolekcja IQuerable ▪ EDM
Service tworzymy w oparciu o klasę DataService<T>, gdzie T to źródło danych (np. EF) ▪ Service udostępnia kolekcję danych w oparciu o T ▪ Jest możliwość dodawania własnych metod
Ustawiamy prawa dostępu do service’u ▪ Domyślnie wszystko jest zablokowane
Opcjonalnie ustawiamy „interceptors” ▪ QueryInterceptor (np. security) ▪ ChangeInterceptor (np. walidacja dodawanych rekordów)
![Page 7: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/7.jpg)
Klient do WCF Data Services
Tworzy klasę proxy na podstawie metadanych OData
Dostępny dla .NET, SL, Windows Phone, aplikacji z Windows Store
Proxy reprezentuje repozytorium po stronie klienta
▪ Udostępnia kolekcję usługi po stronie klienta
▪ Konwertuje wyrażenie LINQ na zapytania OData
▪ Udostępnia cache dla obiektów
▪ Zapytanie wykonuje asynchronicznie
![Page 8: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/8.jpg)
Klient wysyła żądanie z zapytaniem OData WCF Data Service przejmuje żądanie i
konwertuje je do Expression<T> WCF Data Services provider uruchamia
odpowiedni provider do pobrania danych
Object Context Provider
Custom Provider
Dane wracają do klienta
![Page 9: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/9.jpg)
Zapytania $filter, $orderby, $top, $skip, $select, $expand $inlinecount=allpages - liczba wszystkich rekordów
▪ nawet jeśli użyjemy top, skip Operatory logiczne
and, or, not, eq, ne, lt, gt, le, ge Operatory arytmetyczne
add, sub, mul, div, mod Funkcje napisów
substring,length,indexof,startswith, endswith, insert, remove, replace,tolower,toupper,concat,trim
Funkcje daty day,hour,minute,month,second,year
Funkcje matematyczne add, sub, mult, div, round,floor,ceiling
![Page 10: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/10.jpg)
Narzędzia do prezentacji danych z OData Services
OData Explorer (z odata.org)
LINQPad (wersja darmowa obsługuje OData)
Excel
Kontrolki różnych firm
![Page 11: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/11.jpg)
HTTP natywne programowanie XML/JSON
AJAX jQuery, DataJS, JayData
Obecnie są dostepne biblioteki dla większości
technologii .NET, Silverlight, WPF, WP7
Java, Android
IPhone
![Page 12: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/12.jpg)
SimpleDataServices
Z solution WcfSamples
![Page 13: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/13.jpg)
Uruchomienie OData w WebAPI
Instalujemy z NuGet-a Microsoft ASP.NET Web API OData (w wersji 4.0!)
Metody Get muszą zwracać IQuerable<T>
Dodajemy atrybut [Queryable] nad akcją
![Page 14: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/14.jpg)
…czyli inaczej Query Validation Można nakładać ograniczenia:
Na maksymalną liczbę zwracanych wierszy
Nie pozwalać sortowania na nieindeksowanych kolumnach
Określać, które operacje są dozwolone
Dodatkowo określić parametry atrybutu [Queryable], co pozwala na jeszcze dodatkowe restrykcje
![Page 15: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/15.jpg)
DataServices
Z solution WebApi
![Page 16: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/16.jpg)
Dane zwracane przez OData service zawierają Metadane o typach
Properties dla danych
Relacje pomiędzy encjami w postaci linków
Linki do akcji na encjach OData może mieć postać
ATOM Publishing Protocol
JSON-Verbose
JSON-Light ▪ Mniej metadanych i linków do powiązanych obiektów
![Page 17: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/17.jpg)
Aby określić format: ATOM Publishing Protocol
▪ Accept: application/atom+xml
▪ $format=xml
JSON-Verbose ▪ Accept: application/json;odata=verbose
JSON-Light ▪ Accept: application/json
▪ $format=json
Na chwilę obecną w WebAPI działa tylko Accept
![Page 18: aweł Rajba pawel@ii.uni.wroc.pl · 2014-01-25 · OData twarty protokół łuży do udostępniania danych dla zapytań i modyfikacji przez usługi (np. ) wie główne składowe](https://reader034.vdocuments.pub/reader034/viewer/2022042222/5ec937e712898708316ec2d5/html5/thumbnails/18.jpg)
Patrzymy na NorthwindDataService
Wyciągamy dane w Fiddlerze na 3 sposoby
Patrzymy na zawartość
Porównujemy rozmiar zwróconych danych