WebAPI - Home Page of Ireneusz (Irek) SZCZEŚNIAK
Transkrypt
WebAPI - Home Page of Ireneusz (Irek) SZCZEŚNIAK
Programowanie Komponentowe WebAPI dr inż. Ireneusz Szcześniak jesień 2016 roku WebAPI - interfejs webowy • WebAPI to interfejs aplikacji (usługi, komponentu, serwisu) dostępnej najczęściej przez Internet, ale może to być usługa w sieci lokalnej, albo lokalnym systemie. • Usługę dostępną przez Internet nazywamy web service. • WebAPI najczęściej używana w aplikacjach webowych. • WebAPI może być zdefiniowana z użyciem: • • • • JSON, YAML, Google Protocol Buffers, WSDL, SOAP, XML, własnościowe, jak Java RMI czy .Net. • Najpopularniejsze WebAPI: JSON w modelu REST po HTTP, bo jest prosty i korzysta z gotowych i sprawdzonych technologii. • Zaleta #1: WebAPI jest całkowicie niezależne od platformy. • Zaleta #2: pozwala na pełną separację serwera i klienta. slajd 2 Model REST • Representational state transfer (REST) • REST jest modelem komunikacji klient-server. • Protokołem warstwy aplikacji ISO/OSI dla REST jest HTTP. • Korzysta z metod HTTP: GET, POST, PUT, DELETE, itd. • Idea REST: aplikacja webowa przechodzi między swoimi stanami przez wykonanie metod. • Komunikacja bezstanowa (stateless), czyli serwer: • wykonuje usługę tylko z użyciem danych w żądaniu przesłanym przez klienta, • nie pamięta historii komunikacji z klientem, • przechowuje dane dla aplikacji webowej. • REST = reprezentacyjna zmiana stanu slajd 3 JSON • JSON = JavaScrip Object Notation • JSON to tekstowy język opisu danych, podzbiór języka JaveScript. • Prosty w nauczeniu się, prosty w implementacji, mniej błędów. • Mały narzut danych organizacyjnych. • Wspierany przez przeglądarki WWW, bo one obsługują JavaScript. • Posiada wiele bibliotek dla wielu języków. • Mniejsze możliwości mogą okazać się lepsze (less is more). • Przykład: Google Photos udostępnia WebAPI w JSONie. slajd 4 JSON - przykład { NAME: " A l b e r t ␣ A t t a r d " , LANGUAGE : " J a v a " , LOCATION : " Malta " , EXAM: { SUBJECT : " Programming " , GRADE : 4 . 5 } } slajd 5 YAML • YAML = Yaml Ain’t Markup Language • YAML to tekstowy język opisu danych • YAML jest rozszerzeniem języka JSON • Tak więc narzędzie YAML wczyta dane JSON • YAML koncentruje się na czytelności • YAML ma kilka rozszerzeń, których brakuje w JSONie • YAML jest używany przez projekt Swagger slajd 6 YAML - przykład f a k t u r a : VAT123/2016 d a t a : 2012−08−06 klient : imie : Irek nazwisko : Szczesniak slajd 7 WSDL, SOAP, CORBA • Są zbiorem spefyfikacji i implementacji dla rozproszonej komunikacji. • Pozwalają zdefiniować dane i operacje na danych. • Bardzo rozbudowane narzędzia, których część funkcjonalności jest rzadko stosowana. • Problem: implementacje rzadko stosowanych funkcjonalności często mają błędy. • Moje doświadczenie: błąd w implementacji w CORBY zatrzymał projekt na kilka tygodni. • WSDL, SOAP i CORBA są rzadko stosowane, bo są trudne w użyciu. • Można się z nimi ciągle spotkać, na przykład w bazach danych ORACLE. slajd 8 Google Protocol Buffers • Format przesyłu binarnych i skompresowanych wiadomości. • Pozwala na definicję typów wiadomości, co jest kompilowane przez dostarczony kompilator do biblioteki, którą używamy w swoim kodzie. • Wspiera różne języki: C++, Java, C#, Python. • Nie pozwala na dynamiczoną modyfikację typów wiadomości, co czyni z niego niszowy protokół komunikacji międzyserwerowej, ale bardzo wydajny. • Zachowuje kompatybilność między różnymi wersjami wiadomości. slajd 9 Java RMI • Java Remote Method Invocation (RMI) • Protokół komunikacji klient-server w Javie. • Implementuje obiekty zdalne i wywołanie metod na tych • • • • • obiektach. Java załatwia serializację obiektów, co pozwala RMI na przesyłanie obiektów. Zaawansowane, nowatorskie, łatwe i wygodne w użyciu narzędzie. Jedna z perełek programowania. Stosuje odpowiedzi zwrotne inicjowane przez serwer, które nie przechodzą przez translację adresów IPv4, co przekreśla RMI w Internecie. Zastosowanie: skomunikacja oprogramowania w Javie w sieciach lokalnych. WADA: serwer i klient są ze sobą ściśle związani. slajd 10 API Blueprint, Swagger • Pozwalają na definiowanie WebAPI aplikacji: • typów danych, • możliwych operacji, • dokumentacji, • testów. • Generują kod dla różnych języków. • API Blueprint (Swagger już nie) generuje kod w C++ dla klienta i serwera. • Wolne oprogramowanie (licencje MIT, Apache) • Dostarczają narzędzia do testowania WebAPI. • API Blueprint będziemy używać na laboratorium. slajd 11 Podsumowanie • WebAPI jest głównie dla aplikacji webowych. • WebAPI jest niezależnym od platformy interfejsem usługi. • WebAPI pozwala na pełną separację klienta i serwera. • WebAPI tworzyć najlepiej z JSON, REST i HTTP. • Narzędzia WebAPI: API Blueprint, Swagger. slajd 12 Dziękuję za uwagę.