1 Service Oriented Architecture & Web ServicesMaciej Malawski, Tomasz Szepieniec WebSerwices
2 O czym dzisiaj? Paradygmaty programowania a budowa systemówService Oriented Architecture (SOA) Web Serwisy XML SOAP WSDL UDDI WebSerwices
3 Architektury StrukturalneDobre podejście Obietnica: organizacja i powtórne użycie kodu Procedury, funkcje i dane Informatyka wyszła z ery lodowcowej W swoim czasie osiągnięto wiele: Monolityczne, odizolowane aplikacje serwerowe Asynchroniczne serwisy przetwarzania wsadowego (batch) Synchroniczne serwisy terminalowe WebSerwices
4 Obiektowe-zorientowanie(OO)Bardzo dobre Obietnica: organizacja i powtórne wykorzystanie kodu Klasy (dane i fukcje razem ze sobą) Zwiększenie produktywności developerów W swoim czasie osiągnięto wiele: Monolityczne aplikacje klient-serwer Bogate, interakcyjne interfejsy graficzne (GUI) Stan-zachowujące (stateful) serwery o dużej wydajności lecz niskiej skalowalności WebSerwices
5 Zorientowanie na komponentyBardzo, bardzo dobry pomysł Obietnica: organizacja i powtórne wykorzystanie kodu Komponenty (grupowanie interfejsów) Niezależność od implementacji Współpraca między-aplikacyjna stała się rzeczywistością Super! Wielo-poziomowe, wielo-warstwowe aplikacje Duże osiągi wydajności i wysoka skalowalność OLE! WebSerwices
6 SP, OOP, COP Programowanie Strukturalne, Programowanie OO, Programowanie KomponentoweZłe pomysły... Paradygmaty „programowania” One opisywały jak programować, a nie jak projektować architektury Architektura była wymuszana przez styl programowania Abstrakcja koncepcji lecz konkretne nie-elastyczne rzutowanie w języki Reprezentacje w Pascalu, C++, CORBA, COM Wtórne wykorzystanie kodu ograniczone wewnątrz domenu Wtórne wykorzystywanie między domenami bardzo bolesne w planowaniu i realizacji Kłopot przekraczania granic domen abstrakcji Zbędne wymuszanie rozwiązań synchronicznych WebSerwices
7 Czego dziś potrzebujemy?Mało jest już projektów aplikacji typu „green field” („od zera”), większość to „brown field” Nowe rozwiązania z reguły wykorzystują istniejące Istniejące systemy potrzebują nowych Systemy heterogeniczne Upgrade-y i ulepszenia nie są synchronizowane Brak jednej rodziny systemów operacyjnych i architektur sprzętowych Efekt „Big Bang” Wszystko umyka coraz to dalej od wszystkiego Wszystko chce dostępu i prawa manipulacji każdą bazą danych... WebSerwices
8 Czego ponadto chcielibyśmy?Organizacji i powtórnego wykorzystanie kodu... Wzdłuż warstw i aplikacji Wszerz organizacji biznesowych i granic zaufania Niezależności od implementacji Współpraca oparta o standardy Niezależność od języka programowania i platformy Dynamicznego grupowania Koncentracja lub rozproszenie klasterowe zależnie od potrzeb WebSerwices
9 Czego nie chcemy Obsługiwać infrastrukturę (tranzakcje, bezpieczeństwo itd.) Topić się w logice wyszukiwania, wywoływania i niezawodnej obsługi serwisów Tracić czas na pisanie nowych schematów pracy (workflow) dla serwisów infrastrukturalnych WebSerwices
10 Zorientowanie na serwisy (Service-Orientation)SOA – Service Oriented Architecture Czym jest „Serwis”? Jakaś dostępna funkcjonalność Lokalizacja, platforma i styl kodowania nie mają znaczenia Wnioski Zakładaj: zawsze zdalny (remote) dostęp Zakładaj: zawsze oczekuj dostępu z przeróżnych platform Zignoruj wewnętrzną implementację serwisu Jak to sie ma do MPI, Wątków, RMI? WebSerwices
11 Unikaj tych założeń Nie myśl o serwisie jako o: Bo serwisy mogą być:Transakcji, obiekcie czy funkcji Synchronicznym czy asynchronicznym Zachowującym-stan czy bezstanowym Adresie, który wywołujesz Bo serwisy mogą być: Odbiorcami wiadomości (aplikacje) Obsługą i przetwarzaniem wiadomości (infrastruktura) Nośnikami wiadomości (transport) WebSerwices
12 Pomocne adresy www.w3schools.org www.xml.pl www.xmethods.comxml.apache.org/axis WebSerwices
13 Web Service po polsku „Webserwisy” Usługi sieci Web – MicrosoftUsługi „webowe” Usługi WWW Usługi sieciowe WebSerwices
14 Web Service – po co to jestPojęcie usługi sieciowej „WWW dla maszyny” Integracja systemów - „interoperability” Standardy internetowe W3C: HTTP, SOAP, WSDL, UDDI Udział gigantów: Microsoft, IBM WebSerwices
15 Przykłady usług Notowania giełdowe Serwisy pogodoweFedEx – serwis do śledzenia przesyłek - firma drukarska widziana jako drukarka Windows WebSerwices
16 RPC - problemy RMI, CORBA, DCOM – używają RPC (Remote Procedure Call) do komunikacji między obiektami Problemy z kompatybilnością Problemy z firewallami Duża złożoność tych systemów WebSerwices
17 Rozwiązanie: SOAP Przenoszony przez HTTP – protokół obsługiwany przez serwery, przeglądarki, serwery proxy, przechodzi przez firewalle Prosty, tekstowy format komunikatów zapisany w XML Obsługiwany przez różne języki programowania, systemy operacyjne, platformy sprzętowe WebSerwices
18 Uzupełnienie: XML – co to jesteXtensible Markup Language – rozszerzalny język znaczników Podobnie jak HTML Znaczniki
19 Przykład dokumentu w XML
20 SOAP Simple Object Access Protocol Protokół komunikacyjnyKomunikacja między aplikacjami Format do przesyłania komunikatów przez Internet Niezależny od systemu i języka programowania Oparty na na XML Standaryzowany przez W3C WebSerwices
21 Format komunikatu SOAPEnvelope (koperta, opakowanie) – mówi, że dokument XML jest komunikatem SOAP Header (nagłówek) informacje pomocnicze – opcjonalne Body (treść) – zawiera informacje o wywołaniu i wyniku Fault – informacje o błędach - opcjonalne WebSerwices
22 Szkielet komunikatu SOAP
23 Envelope xmlns:soap= – definiuje przestrzeń nazw dla elementów XML w SOAP soap:encodingStyle= - definiuje typy danych używane w dokumencie SOAP WebSerwices
24 Uzupełnienie: Przestrzenie nazw XMLW jednym dokumencie może być wiele znaczników – np. w recenzji książki może być znacznik
25 Uzupełnienie - URI Uniform Resource Identifier – jednolity identyfikator zasobów np. Pod tym adresem sieciowym nie musi wcale znajdować się żaden dokument (ale może i zazwyczaj jest) WebSerwices
26 Nagłówek Dowolny element z dowolnej przestrzeni nazw
27 Treść komunikatu - pytanie
28 Treść komunikatu - odpowiedź
29 SOAP nad HTTP Zapytanie HTTP Odpowiedź HTTP POST /ceny HTTP/1.1Host: Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn ...Zapytanie (dokument SOAP ... Odpowiedź HTTP HTTP/ OK Content-Type: application/soap; charset=utf-8 Content-Length: nnn ... Odpowiedź (dokument SOAP) ... WebSerwices
30 WSDL Problem: Rozwiązanie: Skąd wiemy, jaki komunikat SOAP wysłać?Jakie są nazwy metod, jakie parametry, jaki format? Jak automatycznie generować kod? Rozwiązanie: Web Services Description Language (WSDL) WebSerwices
31 WSDL – co to jest Język opisu interfejsu usług sieciowychOparty na XML Umożliwia generowanie kodu Zawiera wszystko, co potrzeba, by móc skorzystać z usługi WebSerwices
32 WSDL - elementy Type – definicja typówMessage – definicja komunikatu zawierającego typy danych Operation – definicja operacji, czyli wymiany komunikatów Port Type – abstrakcyjny zestaw operacji Binding – wiązanie: konkretny protokół i format danych dla typu portu Port – punkt końcowy: kombinacja wiązania i adresu sieciowego Service– kolekcja połączonych portów WebSerwices
33
34 Message – definicja komunikatuKomunikat składa się z części (part) Każda z części jest określonego typu (zdefiniowanego wcześniej) Jest to definicja abstrakcyjna – faktyczny format komunikatu jest zależny od wiązania może być wiele wiązań WebSerwices
35 Przykład definicji komunikatu
36 Typ Portu Zestaw operacji Rodzaje operacji: 3 rodzaje komunikatów:Jednostronna (tylko odbiera komunikat) Pytanie-odpowiedź (odbiera komunikat i wysyła odpowiedź) Ogłoszenie-odpowiedź (wysyła komunikat i odbiera odpowiedź) Powiadomienie (notyfikacja – tylko wysyła komunikat) 3 rodzaje komunikatów: Input Output Fault WebSerwices
37 Przykład Typu Portu
38 Wiązanie - binding Powiązanie typu port z konkretnym protokołemJeden typ portu może mieć wiele wiązań: SOAP, HTTP GET/POST, MIME Każde wiązanie ma taką samą semantykę – klient analizując WSDL może wybrać odpowiadające mu wiązanie i dostanie ten sam wynik WebSerwices
39 Wiązanie SOAP 2 style – ważne przy używaniu w kodzie programu:RPC – wymiana komunikatów jest traktowana jako wywołanie procedury Document – komunikat jest traktowany jako przekazywany dokument XML-owy Rodzaje kodowania Encoded - Kodowanie SOAP - zawiera standard kodowania typów prostych i złożonych (struktury, tablice) – odwzorowanie na języki programowania Literal („dosłowne”) – trześć komunikatu jest traktowana jak dokument XML Inne typy definiowane przez użytkownika WebSerwices
40 Przykład wiązania SOAP
41 Przykład Service
42 Powiązanie z językiem JavaJAX-RPC – standard odwzorowujący typy danych w Javie na typy danych w SOAP Apache AXIS implementacja środowiska do tworzenia usług sieciowych Narzędzia Java2WSDL i WSDL2Java zwraca dokument WSDL-owy z opisem serwisu WebSerwices
43 WSDL - Java WSDL Java Type Klasa Port Type Interfejs Binding StubService Interfejs serwisu, implementacja (locator) Skeleton (od strony serwera) WebSerwices
44 WSDL2Java - przykład
45 WSDL2Java - klient public class Tester { public static void main(String [] args) throws Exception { // Make a service AddressBookService service = new AddressBookServiceLocator(); // Now use the service to get a stub which //implements the SDI. AddressBook port = service.getAddressBook(); // Make the actual call Address address = new Address(...); port.addEntry("Russell Butek", address); } } WebSerwices
46 WSDL2Java - serwer public class AddressBookSOAPBindingImpl implements AddressBook { public void addEntry(String name, Address address) throws java.rmi.RemoteException { } } WebSerwices
47 Inne platformy Perl: SOAP::Lite http://www.soaplite.com/C/C++: gSOAP, AXIS C++ Windows: MS .NET IBM WebSphere, WSDTK WebSerwices
48 SOAP w Perlu use SOAP::Lite; print SOAP::Lite -> service('http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl') -> getQuote('MSFT'); WebSerwices
49 Kolejny problem – jak znaleźć usługi sieciowe?Problem marketingowy i techniczny Przykład: jak znaleźć wszystkie firmy sprzedające komputery przez Internet? Skąd wziąć definicje interfejsów tych usług (WSDL)? Rozwiązania: WWW: np. Xmethods.com, Google Specjalizowane rejestry: UDDI Inne standardy: WS-Inspection WebSerwices
50 UDDI Universal Description, Discovery and IntegrationKatalog do przechowywania informacji o usługach sieciowych Przechowuje informacje o interfejsach opisane przy pomocy WSDL Jest dostępne przez interfejs SOAP WebSerwices
51 UDDI – podobne do wyszukiwarek internetowych, ale:Przechowuje nie tylko adresy stron WWW O treści informacji o usłudze decyduje sam dostawca usługi Zawartość rejestru można modyfikować przy pomocy przeglądarki lub specjalnego programu klienta Zapewnia standardowy format opisu usług WebSerwices
52 Jaka informacja o firmie znajduje się w UDDI„Białe strony” – „white pages” informacje podstawowe (adresy, telefony itp.) „Żółte strony” – zakres działalności według określonych klasyfikacji „Zielone strony” – informacje techniczne, jak korzystać z usług sieciowych WebSerwices
53 Informacje biznesowe – struktury danych w UDDIWebSerwices
54 tModel Abstrakcyjny opis specyfikacji lub zachowania, z którymi usługa sieciowa jest zgodna Zawiera odsyłacz do właściwej specyfikacji Zawiera tModelKey – będący UUID Digital fingerprint – odcisk palca, klucz identyfikacyjny WebSerwices
55 UUID Universally Unique IdentifierUniwersalnie jednoznaczny identyfikator Format: Zdefiniowany w standardzie ISO/IEC 11578:1996 Zapisany w systemie szesnastkowym Utworzony z kombinacji aktualnego czasu, adresu fizycznego, adresu IP i liczby losowej WebSerwices
56 Klasyfikacje, taksonomieUstanowione przez organizacje rządowe lub niezależne systemy klasyfikacji towarów, usług Przykłady: North American Industry Classification System (NAICS) (produkcja komputerów ma kod 3341) Universal Standard Products and Services Classification(UNSPSC)- International Organization for Standardization (ISO) (regiony geograficzne, kody krajów, itd..) WebSerwices
57 Operacje na UDDI Zapytania Wprowadzanie danych ReplikacjaSzukanie Informacje szczegółowe Wprowadzanie danych Replikacja Wszystkie posiadają interfejs SOAP Mogą być przeglądane przy pomocy przeglądarki WWW WebSerwices
58 WSDL a UDDI WebSerwices
59 Połączenie WSDL i UDDI umożliwiaRejestrację i wyszukiwanie usług według typów Korzystanie z usług różnych dostawców przy pomocy tego samego inerfejsu programistycznego WebSerwices
60 Przykład wykorzystaniaJeżeli mamy standardowy interfejs do systemów wyszukiwania i rezerwacji biletów lotniczych Linie lotnicze rejestrują w UDDI swoje serwisy Agenci wyszukują w UDDI serwisy różnych linii Mogą korzystać z nich ze zintegrowanego systemu, ponieważ interfejs jest uniwersalny WebSerwices
61 UDDI.org Organizacja, która utrzymuje globalny system UDDIImplementacja standardu UDDI Wybrani członkowie: Cisco Systems, Fujitsu, IBM, Intel, Microsoft Corporation, NEC Corporation, Oracle, SAP,Sun Microsystems To musi być ważne (Przyszły) model finansowania serwisu WebSerwices
62 Architektura Wiele węzłów Każdy węzeł ma swoją autoryzacje rejestracjiReplikacja danych (w nocy) Troche na wzór DNS IBM Ariba Microsoft other UDDI.org queries WebSerwices
63 Marzenia... Wywoływanie jednego Web-Serwisu poprzez drugiKompozycja całych aplikacji z Web-Serwisów – Work-Flow Opis semantyczny Automatyczna budowa work-flow’ów Web-Serwisowe środowisko Gridowe WebSerwices
64 WS-Inspection (WSIL) XML-owy format do zbierania odsyłaczy (referencji) do istniejących opisów usług (WSDL, UDDI) Konwencje dotyczące umieszczenia dokumentów WS-Inspection WebSerwices
65 Przykład WSIL WebSerwices
66 Modelowanie przepływu w usługach sieciowychŁączenie usług sieciowych w złożone procesy Języki WSFL – Web Services Flow Language (IBM) XLANG (Microsoft) BPEL4WS - Business Process Execution Language for Web Services (IBM, Microsoft) WebSerwices
67 Web Services Flow LanguageOpis procesu złożonego z mniejszych elementów Łączenie wielu usług w jedną Przepływ sterowania danych Flow Engine – wykonuje operacje według opisu WSFL Pobranie zamówienia Sprawdzenie karty kredytowej Sprawdzenie magazynu Realizacja zamówienia WebSerwices
68 WSIF Web Services Invocation FrameworkAPI w Javie do korzystania z usług bezpośrednio na poziomie WSDL Wystarczy napisać program korzystając z abstrakcyjnej definicji PortType Środowisko zapewnia dynamiczne wykorzystanie wiązań (binding) dla różnych standardów (SOAP, EJB, Java, JMS) WebSerwices
69 Network for Earthquake Engineering SimulationNEESgrid: national infrastructure to couple earthquake engineers with experimental facilities, databases, computers, & each other On-demand access to experiments, data streams, computing, archives, collaboration NEESgrid: Argonne, Michigan, NCSA, UIUC, USC WebSerwices
70 NeeSGrid - the MOST experimentf1 UIUC Experimental Model f2 U. Colorado Experimental Model NCSA Computational Model WebSerwices
71 Podsumowanie SOA – Architektura serwisowaSOAP – Komunikacja wszystkiego z wszyskim WSDL – Opis co serwis robi UDDI – Rejestr i organizacja globalna WebSerwices