Webové služby jako prostředek pro vývoj
Jakmile se zaměříme na vývoj softwaru pro Grid, napadne nás hned několik otázek:
Všechny tyto problémy řeší technologie zvaná Web services (Webové služby).
Potenciál webových služeb je obrovský. S jejich pomocí je snadné integrovat jednotlivé aplikace, které jsou často naprogramovány v mnoha různých programovacích jazycích a navíc jsou provozovány na nejrůznějších platformách. Webové služby, resp. otevřený standard XML (eXtensible Markup Language), který webové služby využívají, komunikaci mezi aplikací a klientem značně usnadňuje. Snahou stratégů webových služeb je dát uživatelům možnost přistupovat k potřebným informacím, a to kdykoliv a kdekoliv - a navíc z libovolného zařízení: nejen z běžného osobního počítače či notebooku, ale také z kapesního počítače a nebo mobilního telefonu. A protože mezi jednotlivými zařízeními jsou nemalé rozdíly, musí webové služby fungovat jako dokonale univerzální rozhraní mezi zdrojem dat a klientem.
Proto tvůrci gridu přišli s upravenou verzí webových služeb, kterou pojmenovali Open Grid Services Architecture (OGSA). Hlavním přínosem této architektury je WSRF (Web Service Resource Framework).
Webová služba je nominálně bezstavová, tzn. že si neponechává žádné data mezi voláním. WSRF poskytuje množinu operací, kterou webová služba může implementovat, aby se stala stavovou. Tj. klienti webové služby mohou komunikovat se službami zdrojů a tak získávat a ukládat data.
Jak WS fungují v praxi ?
Pro další postup je nezbytné dát krátký úvod, jak WS fungují, tak aby jsme mohli v konečné fázi webovou službu naimplementovat. Jak jsem již zmiňoval výše, síla WS je v tom, že jsou nezávislé na platformě a programovacím jazyku. Této vlastnosti je docíleno pomocí WSDL (Web Service Description Language). V praxi to znamená, že pokud objevíme nějakou webovou službu, tak je popsána tímto XML popisem, kterému každý rozumí.
V podstatě všechny operace webové služby můžeme popsat takto:
Do této kategorie patří např. objevení lokace služby či volání několika dalších služeb.
Do této kategorie patří již zmíněný popis služby pomocí nezávislého WSDL.
Do této kategorie patří předávání požadavků mezi klientem a službou. SOAP (Simple Object Access Protocol) specifikuje jak máme formátovat naše požadavky k serveru a jak server formátuje odpovědi.
Do této kategorie spadá případ jak všechny tyto zprávy mají být přenášeny mezi klientem a serverem. Nejčastějším protokolem je HTTP.
Cyklus volání webové služby
V následujícím odstavci se dostaneme k tomu, jak bude celá služba fungovat a jak formulovat dotazy. Programátor webové služby se vždy soustředí jen na popis služby (pomocí WSDL) a logiky služby. SOAP kód je vždy automaticky generován. Tato práce je delegována softwaru, kterému se říká stub. Klient a server mají vygenerované stuby odděleně.
Nyní předpokládejme službu, kterou jsme již popsali pomocí WSDL. Volání služby proběhne v těchto krocích:
Jak vytvořit jednoduchou WS pomocí GT4 ?
Z výše napsaného plyne důležitost webových služeb pro Grid a my si proto zkusíme jednoduchou webovou službu vytvořit pomocí WSRF Globus toolkitu 4.0, který je použit snad v každé komponentě gridu.
Pro další postup je důležitá alespoň základní znalost programovacího jazyka Java a XML. Základní software potřebný pro tento příklad je tedy následující:
Po naistalování těchto balíku je důležité nastavit následující proměnnou: <em class="error">TeX Embedding failed!</em>ANT_HOME
. Po nadefinování těchto proměnných ještě nastavit proměnnou PATH
, např.
setenv PATH {<em class="error">TeX Embedding failed!</em>JAVA_HOME/bin:<em class="error">TeX Embedding failed!</em>GLOBUS_LOCATION/etc/globus-devel-env.csh
Poté provedeme kompilaci klienta:
cd .. cd HelloWebService javac com/pjakl/HelloWorldService/client/Client.java
A následně můžeme klienta spustit a vyzkoušet požadovanou funkčnost:
java com.pjakl.HelloWorldService.client.Client <a href="http://localhost:8080/wsrf/services/HelloWorldService" title="http://localhost:8080/wsrf/services/HelloWorldService">http://localhost:8080/wsrf/services/HelloWorldService</a> Pavel Hello Pavel !
Gratuluji k vytvoření vaší první gridové služby !!!