Mendelova univerzita v Brně Provozně ekonomická fakulta RESTful web service v Javě Literární rešerše práce Vedoucí práce: Ing. Jan Turčínek, Ph.D. Pavel Savrov Brno 2016
OBSAH 2 Obsah 1 Protokoly implementaci webových služeb 3 1.1 XML-RPC................................. 3 1.2 SOAP................................... 3 1.3 REST................................... 3 2 Java a Web 5 2.1 Webové aplikace............................. 5 3 Reference 6
1 PROTOKOLY IMPLEMENTACI WEBOVÝCH SLUŽEB 3 1 Protokoly implementaci webových služeb 1.1 XML-RPC Extensible Markup Language Remote Procedure Call je předekem takzvaných webových služeb a API. Vyvinut v roce 1998 na žádost společnosti Microsoft. Ve svém jádru je reinkarnace RPC zpráv pomocí formátování XML. XML-RPC se skládá že 3 malých části: datový model, struktura požadavků a struktura odpovědi. Specifikace protokolu definuje 6 jednoduchých základních datových typu: int, double, boolean, string, datetime.iso8601 a base64. Tyto základní typy mohou být kombinované ještě do 2 složitých datových typů: pole (posloupnost hodnot) a struktura (klíč - hodnota). Kazdy požadavek se skládá z jedneho XML souboru s kořenovým elementem extttmethodcall. Uvnitř tohoto elementů se zapisuje další element - extttmethodname. Tento element definuje proceduru které bude vyvolávána a předává jí parametry že složky extttparams. Odpověď je velmi podobná požadavku ale má pár změn. Element extttmethodcall je nahrazen extttmethodresponse, který obsahuje jenom jeden parametr. (S. Laurent, 2015) Zřejmá výhoda protokolu je jeho jednoduchost, a v důsledku toho, snadnost provedení. Struktura XML je snadno čitelna a lze jí jednoduché pochopit, ale je slabé standardizovaná. 1.2 SOAP SOAP je zkratkou z Simple Object Access Protocol. Je protokolem pro výměnu zpráv založených na XML přes síť, hlavně pomocí HTTP protokolu. SOAP zpráva je obyčejným XML souborem, který se skládá že 4 části: extttenvelope, extttheader, extttbody a extttfault. První část definuje začátek a konec zprávy, je povinná. Hlavička obsahuje volitelné atributy pro zpracování zprávy. Tělo zprávy obsahuje data, je povinné. Poslední část poskytuje informace když nastane nějaká chyba. (E. Newcomer, 2002) SOAP je vhodnější pro komplexní architektury, kde interakce s objekty je nad rámcem teorie CRUD (Create Read Update Delete), XML se aktivní používá pro kódování požadavků a odpovědí, přísné typizace dát, což zaručuje jejich integritu při přenosu mezi klientem a serverem. Struktura XML souboru je mnohem složitější než u XML-RPC. (V. Vaswani, 2010) 1.3 REST REST jako termín byl představen Royem Fieldingem, jedním že zakladatelů protokolu HTTP, pouze v roce 2000. Ve své disertací (R. Fielding, 2000) popsal základní principy REST (Representational Státě Transfer). REST není ani protokol ani nějaký standart, REST je architektura rozhraní. Webová služby které používají REST
1.3 REST 4 se jmenují RESTful. Toto rozhraní není závislé na nějakém protokolu, ale ve většině případů se používá HTTP. (Habrahabr, 2008) Zaměření RESTful služby je na zdroje a jak zajistit přístup k těmto zdrojům. Můžeme si zvolit vchodny spusob reprezentace tehto zdrojů - XML nebo JSON. Velkým rozdílem od XML-RPC je to že XML-RPC využívá HTTP protokol jenom jako transport pro XML soubor, ale REST využívá všechny možnosti HTTP. Využívá se dobře známé HTTP metody: extttget(read-only přístup ke zdrojům), exttt- PUT(vytvořit nový zdroj), extttdelete(smazat zdroj), extttpost(aktulizovat nebo vytvořit nový zdroj) a další. (J. Webber, 2010) Výhodou jsou jednoduchost, flexibilita, rychlost zpracování (zvláště důležité pro velké stránky), multi-formát. (V. Vaswani, 2010; M. Rodriguez, 2015)
2 JAVA A WEB 5 2 Java a Web Pojem web aplikace odkazuje na softwarový systém, který poskytuje uživatelské rozhraní pomocí web prohlížeče. Příkladem mohou být redakční publikační systémy, wiki, online obchody a různé vyhledávací programy. Vývoj web aplikace se stal velmi důležitým oborem pro zlákáni běžných uživatelů k Internetu. Dnes hodně firmy spoléhají na web pro řízení interní logiky firmy a pro poskytování různých služeb zákazníkům. To nemají být jenom velké podniky, nyní web aplikace jsou dostupné pro každého. (D. Nourie, 2013) Ve zkratce lze říct, že každá webová stránka může patřit k statickým nebo k dynamickým. Pojem statická webová stránka znamená, že obsah dokumentu je uložen v souborovém systému. Dynamická webová stránka má tento kontent uložený v databázi. Výhoda používání dynamických stránek je v tom, že obsah se může změnit v důsledku interakce uživatele se stránkou. Dnes každý moderní web je dynamický. (M. Spaanem, 2013) Existuje velké množství různých programovacích jazyků a frameworků, které se používají pro vývoj web aplikací. Java je jedním ze starších a spolehlivých jazyků pro vývoj web aplikací různé složitosti. (Stack Exchange, 2016) Je důležité si všimnout, že pro vývoj webových aplikací nestačí platforma Java Standart Edition. K tomuto účelu se používá Java Enterprise Edition. Rozdíl je v tom, že Java EE obsahuje v sobě Java SE a více dalších technologií jako například: Enterprise JavaBeans, JavaServer Pages, Java Persistence API a JSP Standard Tag Library. Uvedené webové komponenty zajišťují rozšíření možnosti pro webový server. (Oracle, 2013) 2.1 Webové aplikace Moderní aplikace v současnosti využívají téměř výhradně třívrstvé architektury. Hlavními stavebními kameny jsou: webová aplikace na prezentační vrstvě, vrstva komponentové aplikační logiky a vrstva přístupu k databázi a integraci s dalšími systémy. (D. Hanel, 2009) Pro praktické použití je třeba aplikační moduly sestavit do speciální adresářové struktury a vytvořit z nich archivy, které pak budou nasazeny na aplikační server. Existuje několik typu takových archivu: WAR, EJB JAR, EAR. WAR archiv obsahuje komponenty prezentační vrstvy, EJB JAR - vrstvy obchodní logiky, EAR neobsahuje vlastní kód, ale se skládá z několika EJB JAR archivů. (E. Jendrock, 2010) Funkční webová aplikace vznikne až po nasazení na aplikační server, který poskytuje požadované služby. Tyto služby jsou popsané v konfiguracích jednotlivých modulů. Proces je řízen pomocí tzv. deployment descriptors. Každý takový soubor určuje možnosti nasazení modulů, nastavení bezpečnosti a popisuje konkrétní požadavky pro konfigurace. Používá se jazyk XML. (I. Evans, 2010)
3 REFERENCE 6 3 Reference VASWANI, Vikram. Zend framework: a beginner s guide. New York: McGraw-Hill, c2010. ISBN 007163939X. RODRIGUEZ, Michael. RESTful Web services: The basics. In: IBM Corporation[online]. 2015 [cit. 2016-06-08]. Dostupné z: https://www.ibm.com/developerworks/webservices/library/ws-restful/. ST. LAURENT, SIMON., St. Laurent, Simon., Joe. JOHNSTON a Edd. DUMBILL. Programming Web services with XML-RPC. Sebastopol, Calif.: O Reilly, c2001. ISBN 0596001193. NEWCOMER, Eric. Understanding Web services: XML, WSDL, SOAP, and UDDI. Boston: Addison-Wesley, c2002. ISBN 0201750813. JIM WEBBER, Savas Parastatidis and Ian Robinson. REST in practice. Farnham: O Reilly, 2010. ISBN 9780596805821. FIELDING, Roy. Architectural Styles and the Design of Networkbased Software Architectures [online]. University of California, Irvine, 2000 [cit. 2016-06-08]. Dostupné z: https://www.ics.uci.edu/fĩelding/pubs/dissertation/fielding_dissertation.pdf Disertace. Architektura REST. In: Habrahabr [online]. Moskva: s.r.o. Habr, 2008 [cit. 2016-06-09]. Dostupné z: https://habrahabr.ru/post/38730/. NOURIE, Danna. Java Technologies for Web Applications. In: Oracle Technology Network[online]. 2006 [cit. 2016-05-24]. Dostupné z: http://www.oracle.com/technetwork/articles/java/webapps-1-138794.html. SPAANEM, Matt. Static vs. Dynamic Websites: What are They and Which is Better? In: Rocket Media[online]. 2013 [cit. 2016-06-08]. Dostupné z: https://rocketmedia.com/blog/static-vs-dynamic-websites/. STACKEXCHANGE. Stack Overflow Developer Survey 2016 Results. In: Stack Exchange Inc[online]. 2016 [cit. 2016-06-08]. Dostupné z: http://stackoverflow.com/research/developer-survey-2016/. ORACLE. The Java EE 6 Tutorial. In: Oracle Corporation[online]. 2013 [cit. 2016-06-08]. Dostupné z: http://docs.oracle.com/javaee/6/tutorial/doc/bnacj.html. HANEL, David. Vícevrstvá architektura [online]. 2009 [cit. 2016-06-08]. Dostupné z: http://java.vse.cz/jsf/chunks/ch02s03.html. JENDROCK, Eric. Packaging Enterprise Beans in EJB JAR Modules. In: Oracle Corporation[online]. 2010 [cit. 2016-06-08]. Dostupné z: https://docs.oracle.com/cd/e19798-01/821-1841/gipnz/.
3 REFERENCE 7 EVANS, Ian. The Java EE 5 Tutorial. In: Oracle Corporation[online]. 2010 [cit. 2016-06-08]. Dostupné z: http://docs.oracle.com/javaee/5/tutorial/doc/bnaby.html.