Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałGrażyna Czech Został zmieniony 8 lat temu
1
Web services w PHP Inżynieria e-systemów - technologia Java Miłosz Dybizbański 171091 Małgorzata Gocał 171082 Kinga Knapik 171046
2
Web services Web services (WS) jest to ogólna nazwa dla technologii dostępu do zdalnych procedur wykorzystująca do komunikacji standardowe techniki przekazywania danych – m.in. HTTP – oraz XML jako źródło danych. WS jest interfejsem umożliwiającym komunikację między aplikacjami, niezależnie od rodzaju platformy, na której pracują, oraz języka użytego do ich tworzenia. 2
3
Warstwy web services WS dzielimy na trzy warstwy: Packaging – jest to warstwa wymiany danych Description – jest to warstwa opisu API web servisu Discovery – jest to warstwa opisu natury web servisu 3
4
Warstwy WS - Packaging Wymiana danych odbywa się poprzez TCP/IP na porcie 80. rozwiązanie ma tę zaletę, że przepuszcza je firewall bez potrzeby dodatkowej konfiguracji. Warstwa packaging korzysta z ustalonych standardów: SOAP XML-RPC REST OAuth SCA 4
5
SOAP Protokół wywoływania zdalnego dostępu do obiektów. Jest standardem organizacji W3C. Składa się z trzech elementów: koperty (ang. envelope), opisującej zawartość komunikatów oraz sposoby ich przetwarzania zestawu zasad kodowania opisujących instancje zdefiniowanych w aplikacji typów danych konwencji dla prezentacji zdalnych wywołań procedur i odpowiedzi 5
6
SOAP – blok wiadomości Głównym elementem jest blok wiadomości – message. Zawiera on następujące elementy: Element opakowania – envelope – identyfikuje on SOAP’a. Zawiera następujące przestrzenie nazw dla envelope i kodowania. Opcjonalnie nagłówek – header. Element ciała SOAP – body – znajdują się w nim wywołania jak i odpowiedzi serwera. Opcjonalny element błędów – fault – dostarczający informacje o błędach, które powstały podczas przetwarzania wiadomości. 6
7
SOAP – przykład szkieletu 7
8
SOAP – envelope Envelope musi zawierać przestrzenie nazw podane w przykładzie poniżej. Header zawiera opis wiadomości SOAP. Jest on opcjonalny, lecz gdy już się pojawi musi on być pierwszym podelementem w elemencie envelope. W przykładzie podany jest atrybut mustUnderstand. Ustawienie go na 1/true oznacza, że parser odpowiedzialny za przetworzenie headera musi rozpoznać ten element, w przeciwnym razie ma zwrócić błąd. 8
9
SOAP – body W elemencie body podawane są rozkazy dla serwisu, a także zwracane są jego odpowiedzi. W przykładzie widzimy, że wywołujemy metodę GetLoginName z parametrem 42. 9
10
SOAP – body Odpowiedź serwera może być następująca: W odpowiedzi dostaliśmy wartość, która jest nazwą loginu dla podanego ID. 10
11
SOAP – fault Element fault zawiera informacje o błędach. Jest on zawsze elementem body i może pojawić się tylko raz w wiadomości. Zawiera następujące elementy: - kod błędu. Dostępne kody błędów to: –VersionMismatch - błąd określający niepoprawną przestrzeń nazw w elemencie envelope –MustUnderstand - jeżeli ustawiliśmy w headerze wartość mustUnderstand na 1, a serwer nie rozpoznał nagłówków, zwracany jest błąd –Client - wiadomość SOAP wysłana od klienta była niepoprawna –Server - wystąpił błąd na serwerze, dlatego wiadomość nie mogła zostać obsłużona - tekst błędu - informacja o tym kto/co spowodowało błąd - szczegóły błędu 11
12
SOAP – implementacje w PHP PHP-SOAP – to rozwijająca się implementacja posiadająca jednak już sporo możliwości i przyjazne API. Przykład zastosowania tej implementacji: [PRZYKŁAD] ;) nuSOAP – udokumentowana, stale rozwijana implementacja [link do dokumentacji dobrej]. Istnieje także lista mailowa, na której można zadawać pytania dotyczące nuSOAP’a [Co to za lista? Gdzie ona jest? www ;) adres, cokolwiek]. 12
13
WSDL Web Services Description Language (WSDL) -
14
XML-RCP Został zaprojektowany jako łatwy w implementacji i bardzo prosty system pakowania danych dla zdalnych procedur. Mimo swej prostoty oferuje kompleksowe wsparcie dla przekazywania złożonych struktur danych. Typy danych jakimi dysponuje XML-RPC to: 32-bitowy integer - znaczniki: lub Boolean - znacznik: Znaki z tablicy ASCII - znacznik: "Podwójnie precyzyjne" liczby zmienno-przecinkowe - znacznik: Data i czas w formacie ISO 8601 (przykład: 19980717T14:08:55) - znacznik: Base64-encoded binary - znacznik: Struktury danych - znacznik: Tablice - znacznik: 14
15
XML-RCP – przykład zapytania Przykład zapytania, jakie wysyłane jest do serwera WS w „czystej” postaci Z tego przykładu widać, że chcemy wywołać metodę getStateName obiektu examples z parametrami typu integer o wartości 41. 15
16
XML-RCP – przykład zapytania Przykład odpowiedzi, jaka wysyłana jest od serwera WS 16
17
XML-RCP – implementacje w PHP IXR – jest to bardzo ułatwiająca pracę implementacja. Została zaprojektowana, aby osoby znające powierzchownie WS mogły bez problemu poradzić sobie z napisaniem serwera jak i klienta WS. Posiada udogodnienia takie jak łatwa konwersja typów PHP do postaci XML-RPC czy też możliwość tworzenia własnych rozszerzeń. phpxmlrpc – zostało napisane przez samych twórców XML-RPC - Useful Inc. Zaletami implementacji są jej duże możliwości. Dostarcza wiele elementów niezbędnych w tworzeniu WS, jednak dla mniej doświadczonych użytkowników może nastręczać problemów na przykład w podawaniu typów zmiennych czy korzystania z dostępnych obiektów. XML-RPC Client/Server (K. Devense) – zestaw funkcji umożliwiające w łatwy sposób stworzenie klienta i serwera XML-RPC. Inne: –eZ xmlrpc –php-RPC 17
18
XML-RCP – przykład implementacji Jest to przykład klasy w oparciu o implementację XML-RPC Client/Server, korzysta ona z bibliotek XML_RCP2 oraz Cashe_Lite z pakietu PEAR.
19
XML-RCP – przykład implementacji Przykład komunikacji z Flickrem: Wynik przykładu: http://farm5.static.flickr.com/4146/4842869683_984e815ecc.jpg http://farm5.static.flickr.com/4108/4843415934_901ba5db50.jpg http://farm5.static.flickr.com/4111/4843400822_542f815732.jpg http://farm5.static.flickr.com/4128/4842735689_14e7090041.jpg http://farm5.static.flickr.com/4109/4843254586_2c5d2030c1.jpg
20
REST Wzorzec architektury oprogramowania opierający się na bezstanowej wymianie informacji w środowisku rozproszonym. Jako nośnik informacji wykorzystuje m.in. formaty XML i JSON. Mówiąc prościej, usługa REST to odpowiednio zapisany ciąg znaków w formie adresu URI [URL??], który następnie przysyłamy do zewnętrznej aplikacji metodą GET, co skutkuje zwrotem żądanych danych. Aby jeszcze bardziej ułatwić korzystanie z protokołu REST można posłużyć się repozytorium PEAR (PHP Extension and Application Repository). W przykładzie przedstawiona jest abstrakcyjna klasa, która wykona połączenie GET i pobierze dane z serwera, a następnie dokona deserializacji do tablicy PHP. 20
21
REST – przykład podstawowej klasy 21
22
REST – przykład podstawowej klasy Powyżej znajduje się krótka klasa dziedzicząca z klasy REST_Parser. Pokazuje ona przykładowe użycie klasy abstrakcyjnej z poprzedniego slajdu. 22
23
REST – test oraz wynik działania przykładu W wyniku użycia powyższego kodu na stronie ukaże się: 23
24
OAuth otwarty protokół pozwalający na bezpieczną autoryzację za pomocą API dla aplikacji desktopowych, mobilnych i internetowych, pozwala na dostęp do informacji użytkownika ze strony A (dostawcy OAuth, np. Twitter czy Facebook) innej stronie B (konsumentowi), nie wymaga podawania pełnych danych uwierzytelniających, standard ten obecnie jest implementowany na coraz większej liczbie stron, jako że pozwala im wystawiać bezpieczniejsze API. 24
25
OAuth – przykład użycia Należy zarejestrować klienta na http://twitter.com/oauth_clients. Podajemy nazwę naszej aplikacji, jej typ oraz adres URL strony, na którą zostanie przekierowany użytkownik po autoryzacji. Twitter generuje klucz Consumer key oraz Consumer secret, a także podaje podstawowe adresy URL API.
26
OAuth – przykład użycia Korzystając z binarnego rozszerzenia Pecl kod do uwierzytelniania użytkownika wygląda tak:
27
OAuth – przykład użycia Po udanym zalogowaniu użytkownik jest przekierowany na adres URL podany jako callback, jego obsługa może wyglądać następująco:
28
Warstwy WS - Description Jest to warstwa opisu API web serwisu 28
29
Warstwy WS - Discovery Jest to warstwa opisu natury web serwisu 29
30
PEAR (PHP Extension and Application Repository) PEAR jest frameworkiem i systemem dystrybucyjnym rozszerzeń języka PHP. rozszerza podstawowe funkcje PHP, przydatny w zaawansowanych systemach używających tego języka, przydatny w tworzeniu web servisów.
31
Pecl Repozytorium rozszerzeń języka PHP. Nazwa jest skrótem od "PHP Extension Community Library". Zawiera darmowe moduły oparte na licencji open source tworzone przez programistów z całego świata. Począwszy od wydania PHP 5 do PECL przeniesionych zostało wiele wcześniejszych modułów oficjalnych, najczęściej tych niestabilnych lub rzadko używanych. Jest siostrzanym systemem PEARa.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.