Aplikacje WWW. Cel zajęć. Celem zajęć jest zapoznanie się z technologią usług sieciowych w aplikacjach WWW.



Podobne dokumenty
Tworzenie i wykorzystanie usług sieciowych

Programowanie obiektowe

Zaawansowane aplikacje internetowe - laboratorium

Programowanie obiektowe

Programowanie obiektowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Programowanie obiektowe

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Komunikacja i wymiana danych

Programowanie współbieżne i rozproszone

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

XML-RPC: Zdalne wykonywanie procedur

Katalog książek cz. 3: Web Service

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Programowanie Komponentowe WebAPI

Mechanizmy pracy równoległej. Jarosław Kuchta

Programowanie obiektowe

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Laboratorium 1 - Programowanie proceduralne i obiektowe

Serwery Statefull i Stateless

Programowanie obiektowe

1 Wprowadzenie do J2EE

OpenLaszlo. OpenLaszlo

Instrukcja laboratoryjna

REFERAT O PRACY DYPLOMOWEJ

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

REFERAT PRACY DYPLOMOWEJ

Programowanie obiektowe

podstawowa obsługa panelu administracyjnego

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Instrukcja integratora - obsługa dużych plików w epuap2

Dokumentacja fillup - MS SQL

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PHP: bloki kodu, tablice, obiekty i formularze

Instrukcja konfiguracji funkcji skanowania

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

PHP: bazy danych, SQL, AJAX i JSON

Szczegółowy opis zamówienia:

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

podstawowa obsługa panelu administracyjnego

Nr: 12. Tytuł: UDOSTĘPNIANIE DANYCH O SPRAWACH KLIENTOM KANCELARII NA ZEWNĘTRZNYCH SERWERACH WWW. Data modyfikacji:

Wybrane działy Informatyki Stosowanej

Współpraca z platformą Emp@tia. dokumentacja techniczna

16) Wprowadzenie do raportowania Rave

OBSŁUGA I KONFIGURACJA SIECI W WINDOWS

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Dokumentacja SMS przez FTP

INTENSE PLATFORM Zmiany w wersji Wersja 7.2

Programowanie obiektowe

LeftHand Sp. z o. o.

Programowanie obiektowe

Podstawy technologii WWW

Instalacja i konfiguracja IIS-a na potrzeby dostępu WEB do aplikacji Wonderware InTouch Machine Edition

Aplikacje w środowisku Java

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski -

76.Struktura oprogramowania rozproszonego.

Zaawansowane aplikacje internetowe

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Praca w środowisku Visual Studio 2008, Visual C

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Procedury techniczne modułu Forte Kontroling. Środowisko pracy programu i elementy konfiguracji

Plan. Raport. Tworzenie raportu z kreatora (1/3)

REFERAT O PRACY DYPLOMOWEJ

Połączenie VPN Host-LAN SSL z wykorzystaniem przeglądarki. 1. Konfiguracja serwera VPN 1.1. Ustawienia ogólne 1.2. Konto SSL 1.3. Grupa użytkowników

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

Smarty PHP. Leksykon kieszonkowy

Spring Web MVC, Spring DI

Instrukcja instalacji Control Expert 3.0

Web Services. Bartłomiej Świercz. Łódź, 2 grudnia 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Web Services

Laboratorium Ericsson HIS NAE SR-16

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Gatesms.eu Mobilne Rozwiązania dla biznesu

instrukcja INSTALACJI APi_proxy

Specyfikacja API Runtime BAS 3.0

Instrukcja laboratoryjna cz.3

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Aplikacje WWW - laboratorium

System zarządzający grami programistycznymi Meridius

5.4. Tworzymy formularze

BACKUP BAZ DANYCH FIREBIRD

wersja 1.0 ośrodek komputerowy uj cm ul. mikołaja kopernika 7e, Kraków tel

Transkrypt:

Laboratorium z przedmiotu Aplikacje WWW - zestaw 08 Cel zajęć. Celem zajęć jest zapoznanie się z technologią usług sieciowych w aplikacjach WWW. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć tematyka stanowi wprowadzenie do tworzenia stron opartych o usługi sieciowe WebService. Aby ze zrozumieniem zrealizować zadania, przewidziane do wykonania w ramach zajęć laboratoryjnych, należy zapoznać się z następującymi zagadnieniami: dyrektywa WebService, atrybuty WebServiceBinding, WebMethod, WebService w ASP.Net. 1. Dyrektywa WebService W plikach.aspx występowała w pierwszym wierszu dyrektywa Page. Usługa sieciowa posiada dyrektywę WebService: <%@WebService Language= C# CodeBehind=... Class=... @> Co to takiego? Kilka firm wspólnie podjęło decyzję o stworzeniu specyfikacji niezależnej od platformy, mającą na celu zwiększenie elastyczności, wymienialności i bezpieczeństwa infrastruktury sieciowej, ogólnie określane jako WS-*(np. WS-I Web Service Interperability Organization), pełna lista platform obejmuje: WS-Policy, WS-ReliableMessaging, WS-Addresing, WS-Security. Czym się to charakteryzuje? Nie posiada interfejsu użytkownika oraz widzalnych komponentów, ale wszelka struktura plikowa i architektura jest identyczna jak podczas tworzenia zwykłej strony internetowej. Podobieństwa do zwykłego pliku.aspx obejmują takie rzeczy jak: Pełną implementację platformy.net oraz CLT z architekturą obiektową i wszystkimi podstawowymi bibliotekami klas i dostępu do danych. Prawie identyczne struktury plików i kodu. Wszystkie pliki kodu źródłowego zapisane są w postaci zwykłego tekstu. Duże możliwości konfiguracyjne, globalne lub w zakresie aplikacji. Dyrektywa WebService jest wymagana przy tworzeniu dowolnej usługi sieciowej, jej składani składa się z: Language określa jezyk programowania wykorzystany w usłudze sieciowej(c#, VB, JS), jest on wymagany(gdy nie zostanie on podany, kompilator zadecyduje o typie języka na podstawie rozszerzenia pliku). Class określa nazwę klasy implementującą usługę sieciową. Jest on wymagany. Wskazana klasa może być umieszczona zarówno w oddzielnym pliku ukrytego kodu jak również wewnątrz bloku skryptu w pliku.asmx. CodeBehind określa nazwę pliku kodu źródłowego, który implementuje klasę WebService, jeśli ta klasa nie zostanie umieszczona wewnątrz pliku usługi sieciowej(.asmx) lub zostanie ręcznie skompilowana i umieszczona w podkatalogu bin katalogu głównego aplikacji. Debug dla wartości true usługa sieciowa zostanie skompilowana z włączonym trybem debugowania, domyślnie jest ustawiona wartość false. 2. Atrybut WebServiceBinding Jest to wiązanie, jakie zostało zdefiniowane przez Web Services Description Language(WSDL) i pełni rolę interfejsu dla usługi sieciowej definiuje określony zbiór operacji. Sama klasa WebService posiada już wiązania domyślne, a atrybut WebServiceBinding umożliwia podłączenie pod projekt innych napisanych, stworzonych na potrzeby projektu. Atrybut ten wywodzi się z klasy WebServiceAttribute. Tak jak to było wcześniej wspomniane klasa WebService posiadać może wiele wiązań, czyli atrybutów WebServiceBinding określających wiązania. Każdy z nich może posiadać atrybut Name, jeżeli nie to atrybut będzie zastosowany względem wiązania domyślnego. Właściwości atrybutu WebServiceBinding ConformsTo Specyfikacja WS-I, względem której wiązanie deklaruje zgodność(1.0, 2.0, 3.0 ). 1

EmitConformanceClaims Location Name Namespace Dla wartości true, wiązanie będzie wysyłało żądanie zgodności, gdy będzie opublikowany opis WSDL. Położenie, w którym zdefiniowano wiązanie. Domyślnie jest to adres URL do bieżącej usługi sieciowej. Nazwa wiązania. Przestrzeń nazw powiązana z wiązaniem. Ważnymi elementami z punktu widzenia debugowania jakie posiada ta kontrolka to metody AllowCustomErrorsRedirect, która mówi co zrobić z błędem który się pojawi; Metoda AssyncPostBackErrorMessage przesyła ustalona wcześniej treść błędu do przeglądarki, na wypadek jakiś problemów w trakcie pracy. 3. Atrybut WebMethod Jeżeli chcemy udostępnić usłudze sieciowej pewną funkcjonalność w postaci metod, których jednocześnie nie ma domyślnie stworzonej w usłudze sieciowej WebMethod, skorzystamy z WebMethod. Metoda taka/funkcja powinna spełniać jednak pewne warunki: powinna być publiczna oraz powinna posiadać atrybut WebMethod umieszczony przed deklaracją metody np. [WebMethod] public bool getczyjestpelny(uint wartoscparametru) Atrybut ten posiada właściwości, które są używane w celu konfiguracji zachowania określonej metody sieciowej o składni: [WebMethod(NazwaWlasciwosci=wartosci)] Oczywiście NazwaWartosci musi być prawidłową nazwą wartości, wymienioną w tabeli poniżej. Własności atrybutu WebMethod BufferResponse CacheDuration Description EnableSession Domyślnie ASP.Net buforuje całą odpowiedź na żądanie, jednak czasem to nie jest optymalne dla większych pakietów danych. Wtedy ustawiając wartość własności na false spowoduje wysyłanie danych w postaci pakietów po 16KB. Usługi sieciowe, tak jak zwykłe strony WWW, buforować mogą zwracane klientowi wyniki. Własność ta określa, w ciągu ilu sekund po początkowym żądaniu będzie wysłana buforowana strona w odpowiedzi na kolejne żądanie. Do metody można dołączyć opisujący ją ciąg znaków, opis ten będzie pojawiał się na stronie pomocy usługi sieciowej, kiedy testowana będzie ta usługa. Dla wartości true powoduje włączenie stanu sesji dla danej metody sieciowej domyślnie false. MessageName Rozwiązuje problem przeciążania metod w usługach sieciowych nie można tego robić. 2

Własność ta eliminuje dwuznaczności przy wywoływaniu metody, lub metod o takich samych nazwach. Własność ta pozwala na przypisanie każdej metodzie unikalnego aliasu i kiedy zostanie wywołana przeciążona metoda, wówczas zostanie użyta właściwość MessageName, a nie nazwa metody. TransationOption Metody sieciowe mogą korzystać z transakcji gdy zostały one zapoczątkowane wcześniej nie może być tzw. obiektem głównym. Własność ta określa, czy metoda powinna, czy nie rozpocząć transakcję. Rozpoczęcie to wartości: Requied i RequiresNew. 4. Atrybut WebService Pozwala na dołączenie do usługi sieciowej dodatkowych informacji jest to atrybut opcjonalny. Jego składnia to: [WebService(NazwaWlasciwosci=wartosci)] Przy czym NazwaWlasnosci musi być poprawną nazwą jedne z wymienionych niżej własności: Description Name Namespace Pozwala na dołączenie opisu do usługi sieciowej, będzie się on pojawiał na stronie pomocy sieciowej t trakcie testowania usługi sieciowej. Domyślnie, jest to nazwa klasy implementującej usługę sieciową. Atrybut ten pozwala na zmianę tej nazwy. Każda usługa sieciowa posiada powiązana ze sobą przestrzeń nazw XML. Usługa sieciowa jest opisana za pomocą dokumentu WSDL, który jest zdefiniowany w XML u. Zadanie 1. Proszę zrealizować aplikację WWW, która powinna odznaczać się następującymi cechami: Aplikacja ma zawierać usługę WWW, umożliwiającą przeliczanie wartości temperatury w skali Celsjusza na skalą Fahrenheita (i odwrotnie). Następnie należy zaimplementować aplikację WWW, która będzie służyła do przeliczania wartości temperatur pomiędzy podanymi skalami. Aplikacja ta ma wykorzystywać metody umieszczone w utworzonej wcześniej usłudze WWW. Aby zrealizować zadanie należy wykonać następujące kroki: Proszę w swoim katalogu utworzyć projekt strony WWW. Następnie w oknie Solution Explorer proszę o kliknięcie prawym przyciskiem myszy na nazwę utworzonego projektu i o wybranie opcji Add New Item -> Web Service. Następnie proszę o kliknięcie prawym przyciskiem myszy na utworzony plik WebService.asmx, wybranie opcji Set As Start Page i uruchomienie utworzonego projektu. W celu zapoznania się z zasadami działania przykładowej usługi WWW proszę kliknąć link Hello World, a następnie przycisk wywołujący metodę. Po wykonaniu powyższego podpunktu proszę o implementację własnych usług WWW, umożliwiających przeliczanie temperatury. 3

Podpowiedź: Przykładowe metody: Po implementacji metod, proszę o uruchomienie projektu i ich przetestowanie. Następnie proszę o otworzenie nowej instancji środowiska Visual Studio (UWAGA, nie zamykamy poprzedniej instancji!) i o utworzenie w nim nowego projektu strony WWW Po wykonaniu tej operacji, proszę o kliknięcie prawym przyciskiem myszy nazwy nowego projektu w oknie Solution Explorer i wybranie opcji Add Service Reference. W nowo otwartym oknie proszę o wpisanie adresu usługi: http://localhost[:nr_portu]/ [nazwa_pliku_usługi].asmx, następnie wybranie usługi przeliczającej temperaturę i zmianę nazwy przestrzeni nazw zgodnie z poniższym rysunkiem: 4

Po wykonaniu powyższej czynności w oknie Solution Explorer pojawi się dodana usługa: Aby móc korzystać z dostępnych metod usługi, w pliku Default.aspx.cs należy zdefiniować następujący obiekt: Przykładowe wywołanie metody usługi WWW: Następnie proszę o stworzenie aplikacji, wykorzystującej stworzoną usługę. Przykładowy wygląd aplikacji: 5

Przy ocenie zadania główny nacisk będzie kładziony na: Wykonanie wszystkich założeń ujętych w treści zadania. Wygląd aplikacji (wykorzystanie CSS). Prawidłowe działanie aplikacji. Sposób implementacji. Zadanie 2. Proszę zrealizować aplikację WWW, która powinna odznaczać się następującymi cechami: Aplikacja ma stanowić usługę WWW, umożliwiającą odczytanie na podstawie podanej daty kto w danym dniu obchodzi imieniny (i odwrotnie). Na lokalnym serwerze ma zostać umieszczona baza danych zawierająca daty imienin. Usługa WWW ma wykorzystywać tę bazę jako źródło informacji. Następnie należy zaimplementować aplikację WWW, która będzie wykorzystywała stworzoną usługę (wyświetlając kto obchodzi imieniny w podanym dniu, jak również wyświetlając w jakich dniach imieniny obchodzi osoba o podanym imieniu) Aplikacja powinna także umożliwiać dodanie nowych imion wraz z datami do bazy. Aby zrealizować zadanie należy wykonać następujące kroki: Proszę o utworzenie tabeli Imieniny o podanej strukturze: Następnie proszę o wypełnienie tabeli przykładowymi danymi według formatu: Po wykonaniu tej czynności proszę o utworzenie usługi WWW zgodnej z założeniami zadania. 6

Przykładowe metody usługi: Następnie proszę o uruchomienie i przetestowanie usługi. Następnie proszę o implementację aplikacji WWW wykorzystującej zaimplementowaną usługę. Aplikacja powinna także umożliwiać dodanie nowych imion do bazy. Przy ocenie zadania główny nacisk będzie kładziony na: Wykonanie wszystkich założeń ujętych w treści zadania. Wygląd aplikacji (wykorzystanie CSS). Prawidłowe działanie aplikacji. Sposób implementacji. Zadanie do domu. Proszę zrealizować aplikację WWW, która powinna odznaczać się następującymi cechami: Aplikacja ma stanowić rozszerzenie zadania pierwszego. Do istniejących metod usługi WWW należy dodać metody umożliwiające przeliczanie temperatur w skali Kelvina na skalę Celsjusza i Fahrenheita (i odwrotnie). Należy zmodyfikować aplikację WWW, w celu umożliwienia użytkownikowi określenia w jakiej skali jest podana temperatura (Celsjusza, Fahrenheita czy Kelvina), a na jaką skalę ma zostać ona przeliczona. Aplikacja WWW przy przeliczaniu wartości temperatur ma wykorzystywać metody usługi WWW. Zagadnienia, które należy uznać za przyswojone w trakcie zajęć. Po zajęciach będzie obowiązywać praktyczna znajomość: Implementacja usług WWW. Wykorzystanie istniejących usług WWW w aplikacjach internetowych. Publikacja usług WWW. Tworzenie wirtualnego katalogu na serwerze IIS. 7

Zagadnienia do samodzielnego zgłębienia dla dociekliwych. Osoby zainteresowane mogą dodatkowo zapoznać się z następującymi tematami: Ręczne tworzenie klienta. Zagadnienia do powtórzenia na następne zajęcia. Przed kolejnymi zajęciami należy powtórzyć następujące zagadnienia: Tworzenie kont użytkownika za pomocą ASP.NET. Dodawanie ról do kont. Uwierzytelnianie na bazie formularzy. Narzędzie Web Administrator Tool. Wybrane aspekty dotyczące implementacji z wykorzystaniem języka PHP. Omawiany język skryptowy nie jest tak dobrze rozwinięty jak ASP.NET. Nie posiada on niestety takich samych możliwości. Nie mniej jednak istnieją środowiska i firmy które na własną rękę stworzyły taki system. Cechą wspólną z ASP jest przetwarzanie plików XML owych. Powodem, dla których powstało Web Serices było stworzenie sposobu na komunikacje aplikacji między sobą, niezależnie od rodzaju platformy, na której pracują, oraz języka użytego w tworzeniu ich. Istnieją co prawda podobne systemy takie jak CORBA (Common Object Request Broker Architecture) czy DCOM (Distributed Component Object Model) jednak oferują one inny sposób komunikacji i wymiany danych. Nie "przechodzą" przez firewall'e bez uprzedniego ich skonfigurowania oraz nie oferują takiej elastyczności jak Web Services. Jednak tam gdzie liczy się wydajność są lepsze. Web Services to interfejs oferujący innym (klientom) uruchamianie dostępnych metod i zwracanie z powrotem wyników działania przez serwer WS (w dalszej części będę używał tego skrótu w odniesieniu do Web Services).?ądania są, w postaci specjalnie sformatowanego XMLa, wysyłane przez POST protokołem HTTP, a następnie wynik działania zwracany jest do użytkownika, także w postaci XMLa. WS dzielimy na trzy warstwy: Packaging Description Discovery Pierwszą omówioną warstwą jest Packaging. Jest to warstwa wymiany danych, która odbywa się poprzez TCP/IP na porcie 80 wykorzystując jak wyżej zostało wspomniane: protokół HTTP i XML jako źródło danych. Takie rozwiązanie ma tą zaletę, że przepuszcza je firewall bez potrzeby dodatkowej konfiguracji. Warstwa packaging pozwala na wymianę danych. Jednak, aby obie strony mogły zrozumieć je, muszą korzystać z ustalonych standardów. Istnieje kilka standardów tworzenia - pakowania - danych XMLowych. Najpopularniejszymi standardami są SOAP (Simple Object Access Protocol) oraz XML-RPC (XML-Remote Procedure Call). Jest jeszcze kilka innych standardów min. OPML (Outline Processor Markup Language), które jednak nie cieszą się taką popularnością jak dwa pierwsze. 8

Oprócz SOAP często spotykanego w zastosowaniu z JavaSctipt em i ASP o czym mowa wyżej, XML-RPC został zaprojektowany jako łatwy w implementacji i bardzo prosty system pakowania danych dla zdalnych procedur. Struktura XMLa jest na tyle prosta, że z łatwością można zorientować się w jej "przeznaczeniu". Jednak mimo swej prostoty oferuje kompleksowe wsparcie dla przekazywania złożonych struktur danych. Ciekawostką może być fakt, że dokumentacja zajmuje tylko siedem stron w porównaniu z dokumentacją SOAPa zajmującą czterdzieści. Typy danych jakimi dysponuje XML-RPC to: 32-bitowy integer - znaczniki: <i4> lub <int> Boolean - znacznik: <boolean> Znaki z tablicy ASCII - znacznik: <string> "Podwójnie precyzyjne" liczby zmienno-przecinkowe - znacznik: <double> Data i czas w formacie ISO 8601 (przykład: 19980717T14:08:55) - znacznik: <datetime.iso8601> Base64-encoded binary - znacznik: <base64> Struktury danych - znacznik: <struct> Tablice - znacznik: <array> Poniżej jest przykładowe zapytanie, jakie wysyłane jest do serwera WS w "czystej" postaci. Z tego przykładu można odczytać, że chcemy wywołać metodę getstatename obiektu examples z parametrem typu integer o wartości 41. 9

Jak widać odpowiedź jest podobna do żądania. Prostota XML-RPC jest jej główną zaletą, dlatego właśnie jest to dobre rozwiązanie w budowaniu pierwszych prostych WS-ów. Implementacje XML-RPC w PHP. IXR jest to bardzo ułatwiająca prace implementacja. Została tak 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ń. IXR w pełni obsługuje XML-RPC. Wspiera także wielokrotne wywołania system.multicall oraz inne rozszerzenia. phpxmlrpc zostało napisane przez samych twórców XML-RPC - Useful Inc. - co od razu sugeruje pełne wsparcie standardu. Zaletami implementacji są jej duże możliwości. Dostarcza wiele elementów niezbędnych w tworzeniu WS jednak dla mniej wtajemniczonych użytkowników może nastręczać problemów na przykład w podawaniu typów zmiennych czy korzystania z dostępnych obiektów. phprpc - dysponująca możliwościami wykraczającymi poza zwykłe wysyłanie i odbieranie rządań i odpowiedzi. XML-RPC Client/Server (K. Devense) - zestaw funkcji umożliwiające w łatwy sposób stworzenie klienta i serwera XML-RPC. ez xmlrpc - klasa do obsługi XML-RPC dostępna w ez Publish. SOAP jest to jak piszą twórcy: " lekki protokół, do łatwej wymiany dowolnego typu danych w zdecentralizowanym systemie. Oparty jest on o XMLa i składa się z trzech elementów: opakowania definiującego framework, opisującego wiadomość ( oraz to jak ją przetwarzać ), zestawu zasad kodowania opisujących instancje zdefiniowanych w aplikacji typów danych oraz konwencji dla prezentacji zdalnych wywołań procedur i odpowiedzi" Co do jego "małych rozmiarów" można dyskutować jednak jest to na pewno bogaty protokół dysponujący szeregiem pomocnych elementów niestety kosztem tego co w XML-RPC jest zaletą - przejrzystości i łatwości implementacji. Implementacje w PHP PHP-SOAP to rozwijająca się implementacja posiadająca jednak już sporo możliwości i łatwe API. Dokumentacja pozostawia wiele do życzenia, ale przykłady zastosowania tej implementacji pozwalają łatwo zrozumieć sposób budowania Web Services w oparciu o tą implementacje. 10

nusoap jest to dobrze udokumentowana implementacja, która cały czas się rozwija co dobrze wróży jej na przyszłość. Istnieje także lista mailowa, na której można zadawać pytania dotyczące nusoapa. Który protokół wybrać? Na to pytanie nie można odpowiedzieć jednoznacznie. Wszystko zależy od tego czym dysponujemy i do jakich celów chcemy użyć Web Services. XML-RPC to bardzo "łatwy protokół", który można szybko wdrożyć. Jest na tyle prosty, że czytając XMLa można z łatwością zrozumieć, jakie komunikaty wychodzą i wchodzą do/od serwera - przez co można łatwo debugować taki Web Service. Protokół jak wcześniej wspomniałem jest prosty, a więc i nie trzeba skomplikowanych algorytmów (skryptów) do jego obsługi. Mimo, że XML-RPC dysponuje dużymi możliwościami SOAP jest znacznie bardziej rozbudowany i pozwala na jeszcze więcej. Możemy min. tworzyć własne struktury danych. Zaletą jest też to, że w rozwój SOAPa zaangażował się Microsoft co na pewno przyczyni się do rozpropagowania tego protokołu. Web Services w PHP ogranicza się do pobrania odpowiedniego zestawu bibliotek przedstawionych powyżej zapoznania się z ich wymaganiami i standardami czyli podstawową obsługą i w końcu użycie dostarczonych funkcji i metod. Każdy framework PHP dla każdego standardu czy to XML-RPC czy SOAP posiada zaimplementowane praktycznie całą funkcjonalność. Przykładem może być PHP-SOAP przedstawiony poniżej: Pierwsza funkcja zawarta na tym listingu odpowiada za połączenie z bazą danych oraz wydobycie interesujących danych ceny. Cały problem zawarty jest później. Pierwsze to dołączenie pliku obsługi protokołu nusoap.php. Następnie stworzony jest obiekt serwera SOAP. W ustawieniach tego serwera, dla parametru WSDL ustalona zostaje nazwa tego serwera oraz jego przestrzeń pracy(przestrzeń nazw). Następnie zarejestrowana zostaje nowa funkcja(jej definicja jest na samej górze pliku przykładu) w przestrzeni serwera getstockquote odpowiednio przyjmująca parametr string i zwracająca liczbę. Ostatnim elementem jest ustawienie usługi http. 11

Istnieje już serwer, a więc jak wygląda klient? znacznie prościej: Pierwsze to dołączenie pliku nagłówka nusoap.php. Następnie stworzenie obiektu klienta oraz podaniu w konstruktorze adresu serwera z jakim ma się połączyć. Wydobycie ceny z serwera to wywołanie funkcji call z odpowiednim parametrem funkcji do wywołania na serwerze tutaj getstockquote. 12