Korzystając z technologii wbudowanych w internetowe serwisy, programy mogą się ze sobą komunikować. To upraszcza życie ludziom i może przynieść wymierne korzyści prowadzonym przez nich stronom WWW.
Gdy w 1989 roku Tim Berners-Lee opracowywał technologię leżącą u podstaw sieci WWW, projektował ją tak, by korzystali z niej ludzie. HTML (Hypertext Markup Language), obecny na większości stron, też zaprojektowano z myślą o ludziach. Jeśli chcemy przeprowadzić transakcję online, znaleźć i kupić książkę, czy wziąć udział w aukcji, musimy to zrobić sami, za pośrednictwem klawiatury. Ale kto powiedział, że sieć jest tylko dla ludzi?
Usługi sieciowe umożliwiły korzystanie z sieci maszynom. Nieoczekiwanie komputery mogą korzystać z serwisów w podobny sposób, jak ludzie. Wewnątrz firm, dzięki pracy specjalistów IT, komputery już od lat współpracują ze sobą. Jednak zmuszenie ich do współdziałania między firmami okazało się bardzo trudne. Powodem było stosowanie różnych formatów danych i standardów w poszczególnych firmach. Bez szczegółowych ustaleń i zaawansowanych technicznych konfiguracji niemożliwe jest ominięcie choćby barier w postaci zapór ogniowych.
Pod koniec lat 90. ubiegłego wieku rozpoczęto prace nad standardem, który ma umożliwić komputerom w różnych firmach współpracę przez internet. Standard oparto na języku XML (eXtensible Markup Language), stosowanym do tworzenia różnych formatów danych. Wykorzystano go do utworzenia wersji HMTL-a – XHTML. XHTML opisuje sposób, w jaki strona powinna wyglądać w przeglądarce, z której korzysta człowiek. Inny język oparty na XML-u może zostać użyty do opisu zasobu serwisu dla komputera.
W praktyce oznacza to, że strony zaczęły wzajemnie oferować sobie usługi. Przykładowo, serwis, który sprzedaje produkty użytkownikom na całym świecie, mógłby udostępniać ceny w ich narodowej walucie. Jednak opracowanie kalkulatora walut, który każdego dnia monitorowałby zmiany kursów, wymagałoby dużego nakładu czasu i wysiłku, nie wspominając o nadzorowaniu jego pracy.
Jeżeli jednak jakaś firma udostępnia najnowszy kalkulator walut jako usługę sieciową, wystarczy po prostu połączyć swoje oprogramowanie z owym kalkulatorem. Następnym razem, gdy ktoś np. z Francji odwiedzi stronę, będzie mógł przejrzeć ceny w oryginalnej walucie, np. funtach lub dolarach, a następnie za pomocą kalkulatora walut, znajdującego się na innym serwerze, szybko przeliczyć cenę na euro.
Wiele dużych firm zajmujących się e-commerce szybko zaczęło korzystać z sieciowych usług. Dla przykładu, Amazon.com ma własną usługę API (Application Programmable Interface), udostępniającą trzy kategorie sieciowych usług: e-commerce, informacje i proste kolejkowanie (simple queuing). Usługi w tych kategoriach umożliwiają przeprowadzenie całego procesu kupna – od przeszukania bazy produktów, do finalizacji transakcji. W gruncie rzeczy sieciowe usługi umożliwiają maszynom komunikowanie się z innymi maszynami. Końcowy rezultat to wzbogacenie treści serwisu z korzyścią dla końcowego użytkownika.
Upowszechnić API
Wiele z bezpłatnych usług sieciowych pojawiło się, żeby umożliwić firmom rozwój własnych stron WWW. Google udostępniło usługi API podmiotom trzecim, podobnie jak Yahoo!. Yahoo! Web Marketing (wcześniej znany jako Overture) umożliwił firmom reklamującym się z Yahoo! monitorowanie swoich kampanii, dzięki dostępowi do danych właśnie poprzez usługi sieciowe.
Według Zawodnego, pracującego dla Yahoo! Developer Network, użytkownicy Yahoo! zazwyczaj korzystają z sieciowych usług portalu na trzy sposoby. Są one stosowane do graficznej prezentacji danych otrzymanych z Yahoo!. Przykładowo, można utworzyć interfejs sieciowy prezentujący najświeższe wiadomości i fotografie dostarczając nowatorski, graficzny sposób przeglądania aktualności.
– Drugą kategorię tworzą ludzie korzystający z naszych danych w pomysłowy sposób. Jeden z programistów wykorzystuje usługę Yahoo! do uzyskania terminów (nazw), z których po analizie tekstu wybierane są szukane słowa kluczowe i frazy. W danych pobieranych z serwisu aktualności Yahoo! wyszukiwane i zestawiane są artykuły zawierające wspólne tematyczne frazy.
Trzecim i prawdopodobnie najbardziej obiecującym sposobem wykorzystania sieciowych usług jest łączenie danych pochodzących z Yahoo! z danymi z innych usług sieciowych – mówi Zawodny. – Do tej pory nie natknęliśmy się na wiele przykładów takiego zastosowania, jeśli chodzi o wyszukiwanie, jednak spodziewam się, że zmieni się to wraz z niedawnym uruchomieniem naszego sprzedażowego API. Ludzie mogą uruchomić serwisy porównujące możliwości dokonywania zakupów.
Ze względu na wykorzystanie usług sieciowych do przyciągnięcia klientów poprzez współpracujących z nimi partnerów, niektóre z nich oferują bezpłatnie usługi. Jednak nie wszystkie postępują w ten sposób. Amazon i Yahoo! oferują bezpłatny dostęp do usług, tak jak Google, które umożliwia programistom odpytywanie swojej wyszukiwarki za pośrednictwem zapytań, wykorzystujących XML.
eBay obrał inną drogę. Udostępnił płatne członkostwo w swoim programie deweloperskim firmom regularnie wysyłającym zapytania za pośrednictwem swoich API. Usługi eBaya udostępniają część funkcjonalności serwisu, jednak nie pozwalają licytować lub zakładać kont. Dla niektórych firm same dane są produktem i usługi sieciowe są wygodnym sposobem ich sprzedaży. W tych przypadkach firmy będą pobierać opłaty.
Jedną z takich firm jest ViaMichelin. Udostępniane przez nią usługi sieciowe związane są z mapami i wyznaczaniem trasy dojazdu. Oprócz rocznego abonamentu za połączenia, firma zdecydowała się na pobieranie opłat za przysyłane zapytania.
– Operujemy terminem \”treatment\”, opisującym żądanie treści jednego typu z drugiego – żądanie mapy, trasy dojazdu lub nałożenia na mapę współrzędnych – wyjaśnia Colin Cambell z ViaMichelin. – Jeśli ktoś wprowadzi dwa adresy i chciałby poznać trasę przejazdu między nimi, korzysta z dwóch zapytań lokalizujących i jednego zapytania obliczającego trasę, co w sumie daje trzy zapytania \”treatment\”.
Praktyka
Jednym z bardzo popularnych sposobów udostępniania usług sieciowych jest protokół SOAP (Simple Object Access Protocol), korzystający z XML-a. Rozwijany przez grupę firm (należy do nich też Microsoft) SOAP spełnia rolę swoistej software\’owej koperty, w którą pakowane są zapytania i dostarczane do usługi sieciowej. SOAP może być przesyłany poprzez zwykłą sieć, z wykorzystaniem protokołu transportującego HTTP, tak jak ma to miejsce w przeglądarkach. To czyni go odpornym na zabezpieczenia zapór ogniowych.
Jednak nie wszystkie systemy wspierają SOAP. Publikowanie i korzystanie z usług sieciowych może być łatwe lub trudne, w zależności od platformy i zastosowanej metody – mówi Ben Robb, konsultant techniczny z internetowego serwisu CScape. Twierdzi on, że płatne platformy przeznaczone dla programistów, takie jak .NET Microsoftu i J2EE (Java 2 Enterprise Edition) firmy Sun, lepiej wspierają usługi sieciowe, jeśli chodzi o wewnętrzny kod i narzędzia do programowania.
– Twórcy oprogramowania pracujący w zintegrowanym środowisku programistycznym Microsoftu – Visual Studio jedynie dodają odwołanie do usługi sieciowej i korzystają z niego do bezpośredniego dostępu do metod i wszystkiego, co dostarcza usługa.
– PHP, open source\’owa platforma, stwarza więcej trudności – ostrzega Kevin Hutchinson z sieciowej agencji analitycznej WebTraffiq, sprzedającej oprogramowanie monitorujące wydajność serwisów internetowych. – To smutne, że PHP nie wydało swojej wersji biblioteki SOAP.
Jego zdaniem SOAP w porównaniu do innych narzędzi jest bardzo \”topornym\” protokołem.
Wiele firm, takich jak Amazon, wspiera alternatywną architekturę nazywaną REST (REpresentational State Transfer). W odróżnieniu od SOAP, który jest interfejsem zakodowanych wiadomości w formacie XML, REST jest raczej programistycznym sposobem przesyłania XML-a poprzez HTML. Tak jak przeznaczona dla ludzi sieć korzysta z dokładnych adresów dla określenia poszczególnych stron WWW, tak REST używa dokładnych adresów do przesyłania zapytań do usług sieciowych. Następnie usługa sieciowa zwraca sformatowany w XML-u dokument z wynikami zapytania.
– Wydaje się, że REST jest bardziej popularny – 80% naszych ludzi raczej korzysta z REST-a niż SOAP-a. Może to być związane z faktem, że REST sprawia wrażenie o wiele prostszego – mówi Young.
Uwolnić swoją usługę
Jeśli opracowaliśmy już swoją usługę sieciową, musimy uświadomić ludzi, jak mają jej używać. WSDL (Web Services Description Language) to oparty na XML-u język mający wspomóc opisanie tego, co utworzone przez nich usługi robią i które polecenia oprogramowania (znane też jako metody), mogą być użyte, by z nich korzystać. Jednym ze sposobów publikacji pliku WSDL, opisującego usługę sieciową, jest publikacja w katalogu UDDI (Universal Description, Discovery and Integration).
UDDI jest specyfikacją dla systemu katalogów, które udostępniają listę usług sieciowych w ten sam sposób, w jaki, dla przykładu, katalogi biznesowe udostępniają dane firm. Twórcy oprogramowania mogą za pomocą swoich narzędzi programistycznych zapytywać UDDI i tworzyć listy dostępnych usług sieciowych z wybranego źródła.
UDDI nie jest powszechnie stosowane. Jeśli jest już używane, to wewnątrz firm, by udostępnić sieciowe usługi własnym programistom w systemach w których pracują, za zamkniętymi drzwiami. Jednak wiele firm, w tym Yahoo!, po prostu publikuje swoje pliki WSDL bezpośrednio na stronach internetowych.
– Sądzę, że jedną z przyczyn dla których nie korzystamy z tego jest to, że kiedy dyskutowaliśmy nad tym na początku roku, rozważaliśmy uruchomienie kilku usług, to okazało się to zbyt dużo – mówi Zawodny. – Może za rok ludzie rzeczywiście będą tego potrzebować.
Jaka będzie przyszłość usług sieciowych? Obecnie są stosunkowo nowe i firmy dopiero zaczynają poznawać ich możliwości. Jednak w miarę jak będzie powstawać coraz więcej zaawansowanych usług, nietrudno będzie wyobrazić sobie strony zbudowane z różnorodnych usług sieciowych pochodzących z wielu różnych firm i organizacji.
Weźmy na przykład dystrybutora elektroniki użytkowej, korzystającego z usług sieciowych producentów, by zaktualizować listę produktów i mechanizmy do składania zamówień. Czy powinniśmy osiągnąć taki poziom zaawansowania w naszym korzystaniu z technologii, by usługi sieciowe stały się jeszcze bardziej spersonalizowane? W przyszłości biuro podróży będzie w stanie zaoferować udostępniany przez kogoś kalendarz online z sugestiami terminów wynajęcia samochodu, kupienia biletu na samolot lub nawet oddania psa do hotelu dla psów. Prawdopodobnie tego rodzaju informacje z sieciowych usług systemowego kalendarza trafią do terminarza telefonu.
Z drugiej strony, im bardziej usługi sieciowe staną się zaawansowane i spersonalizowane, tym bardziej będą wymagać częstszego uzupełniania o osobiste informacje i większego zaangażowania systemów kontrolujących transakcje obejmujące różnorodne systemy online.
Zapowiedź takiego scenariusza możemy obserwować już dziś. Microsoft, IBM i Verisign pracują nad utworzeniem serii różnych zaawansowanych protokołów usług sieciowych, zaprojektowanych do obsługi wszystkiego: od bezpieczeństwa do transakcji handlowych pomiędzy różnymi dostawcami usług. Niektóre z tych technologii przekazano Oasis-Open, organizacji zajmującej się zarządzaniem wieloma standardami sieciowych usług. Udostępniono je firmom, które chcą rozwijać swoje sieciowe usługi.
Owe technologie przeważnie wykraczają ponad to, czego potrzebują dzisiejsi dostawcy usług sieciowych w internecie. Prace nad dostosowaniem usług sieciowych, tak by można było je stosować w biznesowych modelach firm, to wystarczająco duże wyzwanie w dającej się przewidzieć przyszłości.
W skrócie
Interfejs SOAP lub XML-RPC, narzędzia programistyczne oraz dostęp do katalogu UDDI i opis WDSL to w skrócie usługi sieciowe. Proste? Nie dajmy się oszukać, mówi Jamie Turner, z http://www.postcodeanywhere.co.uk. Jeśli chcemy oferować usługi sieciowe w profesjonalny sposób, są sprawy, którymi koniecznie trzeba się zająć.
Udostępniamy swoje serwery sieciowe innym firmom. W takim razie ich błędy równają się naszym problemom. Jeśli ktoś popełnia błąd podczas pisania swojej sieciowej aplikacji i nie przetestuje jej należycie, może na przykład zasypywać nasz serwer regularnymi zapytaniami powodując spowolnienie jego wydajności. Prócz tych \”uczciwych błędów\”, jeśli ktoś np. wejdzie w wyszukiwarkę kodów na naszej stronie, wtedy jak powstrzymamy go przed wykorzystaniem jej jako bezpłatnej wyszukiwarki kodów i używaniem jej przez cały dzień?
Sposobem radzenia sobie z tego rodzaju nadużyciami jest ograniczenie liczby dziennych zapytań. To rozwiązanie bazuje na dziennej średniej zapytań danego klienta. Innym sposobem jest nadzór nad zachowaniem klienta. Jeśli ktoś, kto zwykle wysyła 30 zapytań dziennie, nagle przysyła ich dziesiątki w przypadkowej kolejności, można tak zaprogramować system, by zablokował je do czasu wyjaśnienia sprawy.
Samouczek – Publikowanie usług sieciowych w środowisku .NET
Wiemy już, jak działają usługi sieciowe, jednak jak stosować je w praktyce? Dr Cleveland Gibson, dyrektor Acknowledge Technologies (http://www.acknowledgeco.uk), krok po kroku wyjaśnia, jak używać usług sieciowych Amazon.com na swojej stronie wykorzystując platformę Java.
{tlo_1}
Krok 1. Załadować usługi sieciowe
Po pierwsze trzeba uruchomić WSDL (Web Services Description Language). Można to zrobić w narzędziu Mindreef – SOAPScope (http://www.mindreef.com). Dzięki niemu obejrzymy usługi sieciowe. Załadujmy usługi sieciowe Google (http://www.google.com/apis) i Amazona (http://www.amazon.com/webservices), wyświetlając plik WSDL z Google w idealnym dla twórców oprogramowania formacie – pseudokodzie (ang. pseudocode).
{/tlo}
{tlo_0}
Krok 2. Przetestować
W tym przykładzie użyjemy SOAPScope, który umożliwia obejrzenie usług sieciowych, by załadować zapytania Google Search poprzez formularz strony i otrzymać odpowiedź. Funkcja Preview/Edit umożliwia podgląd żądań pakietów SOAP XML przed ich wysłaniem do usług sieciowych Google\’a. Rezultat otrzymamy w postaci pakietu SOAP XML, którego treść możemy zobaczyć.
{/tlo}
{tlo_1}
Krok 3. Korzystamy z usługi sieciowej
Silnik SOAP pobiera dane z pliku WSDL, generuje kody stopki procedury pośredniczącej (stub code) niezbędne do wywołania operacji w usługach sieciowych. Projekt Axis Apache (http://ws.apache.org) jest jednym z najbardziej popularnych silników usług sieciowych wolnego oprogramowania dostępnych dla użytkowników Javy.
{/tlo}
{tlo_0}
Krok 4. Pakowanie procedur
Następnym krokiem jest dostarczenie klasy opakowania (wrapper class) chroniącego twoich klientów przed wygenerowanym kodem i pokazującego przyjazny dla użytkownika widok usługi sieciowej. Zarówno Google, jak i Amazon dostarczają klasy opakowania nazywane GoogleSearch i Operation Soap. Jednak zdecydowaliśmy się na utworzenie własnej klasy opakowania NetWebSearch, które odwołuje się do klasy opakowania Google\’a.
{/tlo}
{tlo_1}
Krok 5. Udostępniamy NetWebSearch
Aplet wykonawczy na serwerze (ang. servlet) jest sposobem na dostęp do aplikacji opartych na Javie poprzez warstwę transportową HTTP. NetWebSearchServlet umożliwia uzyskanie danych z formularzy na stronie HTML przeznaczonej do korzystania przez użytkowników z klasy opakowania w NetWebSearch, której użyliśmy do komunikacji z usługą sieciową Google\’a. Aplet wykonawczy na serwerze przekazuje z powrotem do przeglądarki klienta wyniki uzyskane za pomocą usługi sieciowej.
{/tlo}
{tlo_0}
Krok 6. Przeszukiwanie i filtrowanie rezultatów
Ostatnim zadaniem jest zbudowanie interfejsu przeznaczonego dla użytkowników, który pozwoli wprowadzać termin, który będzie wyszukany przez usługę sieciową Google\’a. Z poziomu tego formularza HTML jesteśmy w stanie wysłać tekst do URL-a usługi sieciowej hostującej NetWebSearchServlet.
{/tlo}
{tlo_1}
Podsumowanie
Klasa NetWebSearch jest zaledwie początkiem. Może być przystosowana do pracy z wszystkimi największymi wyszukiwarkami. Co więcej, NetWebSearch może umożliwić indywidualne przeszukiwanie załączonych wyników wyszukiwania. Te funkcjonalności mogą być w prosty sposób użyte za pośrednictwem formularzy HTML i NetWebSearchServlet.
{/tlo}
Przedstawiony przykład ukazuje prostotę z jaką usługa sieciowa może być użyta przez aplikacje klienckie, przepakowane, rozszerzone i udostępnione serwisowi biznesowemu minimalnym nakładem sił.
Usługi sieciowe – wiedzieć więcej
Obszerniejsze informacje o usługach sieciowych można znaleźć pod adresami:
WS-1
http://www.ws-i.org
Organizacja Web Services Interoperability, utworzona przez największych sprzedawców branżowych, włączając Microsoft, ma za zadanie popularyzację współdziałania między protokołami usług sieciowych.
XML RPC
http://www.xml-rpc.org
XML-RPC to jeden z prekursorów SOAP oferujący poręczniejsze wysyłanie zdalnych procedur przez XML. Dzięki temu programiści mogą zapytywać komputery za pośrednictwem usług sieciowych.
Wikipedia
http://pl.wikipedia.org/wiki/Web_services
Wikipedia, sieciowa encyklopedia, szybko stała się przewodnikiem po wszystkim, poczynając do Big Brothera po MySQL. Nic więc dziwnego, że znalazło się tu miejsce także dla usług sieciowych.
Oasis-Open
http://www.oasis-open.org
Oasis-Open to nie nastawione na zysk konsorcjum zajmujące się standardami dla biznesu online. Pod jego opieką pozostaje kilka z bardziej zaawansowanych protokołów usług sieciowych.