%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% :Web Services
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Webové služby}

Původně se internet skládal z~HTML stránek a~dokumentů. Ty byly určeny pro lidského uživatele. S~postupem času vyvstala potřeba internetové zdroje zpracovávat programově. Předpověď počasí by nemusela být nutně spjata s~internetovými stránkami hydrometeorologického ústavu. Řada uživatelů by uvítala přečíst si předpověď na zpravodajském portálu, nebo ji mít dokonce k~dispozici na svém osobním počítači ve formě appletu. Bylo by nemyslitelné, aby si nějaký program ze serveru hydrometeorologického ústavu stáhl celou stránku a~pak se v~neznámém textu snažil najít potřebné údaje. Řešením by bylo mít na tomto serveru aplikaci, která by uměla pro zadaná data počasí určit a~nějakým způsobem vrátit vypočtená data. Takováto aplikace se nazývá \emph{webová služba}.


\subsection{RPC}

RPC (Remote Procedure Call) je původní návrh pro webové služby. Z~pohledu RPC se webová služba skládá z~webových metod, které uživatel volá. Tyto metody jsou podobné jako funkce v~jazyce C++. Mohou brát parametry. Mohou, ale nemusí, vracet hodnotu. Často mají vedlejší efekt. Na webovou službu se pak lze dívat jako na program, který se nachází na vzdáleném počítači. Původní implementace RPC webových služeb -- XML-RPC se dnes už téměř nepoužívá. Byla nahrazena daleko sofistikovanějším protokolem SOAP, který bude popsán v~kapitole \ref{SOAP} RPC návrh je ideální, pokud má webová služba nabízet parametrizované metody s~návratovou hodnotou (tedy sloužit jako knihovna), nebo metody s~vedlejším efektem (např. rezervaci vstupenek).



\subsection{RESTful webové služby}

Alternativní návrh k~RPC webovým službám jsou RESTful webové služby, které webovou službu chápou jako aplikaci určenou jak pro lidského uživatele, tak pro programové zpracování. Namísto webových metod zde vystupují webové zdroje (resources) -- obdoba objektů v~objektově orientovaném programování. Každý zdroj pak reaguje pouze na velmi malý počet metod. Důraz je kladen na přehlednost. Každý zdroj musí nabízet alespoň jednu reprezentaci pro lidského uživatele a~alespoň jednu reprezentaci pro programové zpracování. RESTful návrh je ideální, pokud má webová služba fungovat jako soubor webových zdrojů (encyklopedie, katalog, výukový materiál, ap.). Více o~RESTful webových službách se dozvíte v~kapitole \ref{RESTful Web Services}.
