Author: DavidK Date: 2010-02-09 18:01:28 +0100 (Tue, 09 Feb 2010) New Revision: 1689 Modified: others/dokumentace/technicalGuide/architecture/ others/dokumentace/technicalGuide/architecture/0architecture.tex others/dokumentace/technicalGuide/architecture/4webapp.tex others/dokumentace/technicalGuide/architecture/7communication.tex Log: documentation updated Property changes on: others/dokumentace/technicalGuide/architecture ___________________________________________________________________ Added: svn:ignore + out Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-09 10:31:54 UTC (rev 1688) +++ others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-09 17:01:28 UTC (rev 1689) @@ -31,6 +31,7 @@ %\usepackage[left=2cm]{geometry} %\usepackage[bookmarks=true]{hyperref} +\usepackage{url} \begin{document} Modified: others/dokumentace/technicalGuide/architecture/4webapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/4webapp.tex 2010-02-09 10:31:54 UTC (rev 1688) +++ others/dokumentace/technicalGuide/architecture/4webapp.tex 2010-02-09 17:01:28 UTC (rev 1689) @@ -19,7 +19,7 @@ \caption{Schéma projektů řešení ELVYS} \end{figure} - \subsection{webServer2} + \subsection{webServer2}\label{webapp_architecture_webServer2} WebServer2 je stěžejní částí webové strany řešení. Je to webová aplikace umožňující uživatelům provádět veškeré činnosti spojené s agendou plánování dokumentů, správy společností, uživatelů, zobrazování reportů a všech dalších věcí, které by měl systém ELVYS umět podle \textit{dokumentu analýzy}. \\ @@ -29,10 +29,23 @@ Ukládání session\-state na serveru - \subsection{dispatcher} + \subsection{dispatcher}\label{webapp_architecture_dispatcher} Tato aplikace umožňuje kioskům získávat od serveru informace o plánování. + \subsection{XML, XSD, HTTP, JAXB} + [DO KAP.4 mozna] + + Tělo většiny zpráv posílaných přes internet je tvořeno XML dokumentem nesoucím určitá data. + Všechny komplexnější XML\footnote{Extensible Markup Language (XML), \url{http://www.w3.org/XML/}} dokumenty (např. jakýkoliv XXXConfig přenášený ze serveru na kiosek) mají + definován formát pomocí jazyka XML Schema\footnote{XML Schema language, \url{http://www.w3.org/XML/Schema}} + + \subsection{Technologie Java Servlet} + [DO KAP.4 mozna] + K vytváření bodů vzdáleně přístupných přes HTTP protokol je v systému ELVYS použita technologie Java Servlet. Tato technologie + umožňuje namapování java třídy implementující určité rozhraní na nějaké URL. Java třída poté na daném URL poslouchá a zpracovává HTTP požadavky.\\ + Pomocí této technologie jsou vytvořeny všechny přístupové body do aplikace \textbf{dispatcher}. - \subsection{elvysCommons} + + \subsection{elvysCommons}\label{webapp_architecture_elvysCommons} V tomto modulu se nachází sdílený kód a sdílené zdroje, které používá jak projekt webServer2, tak projekt dispatcher. \subsection{LayoutDesigner} Jedná se o java applet, grafický editor, který je součástí webové aplikace (konkrétně tedy aplikace webServer2) a umožňuje uživateli navrhovat Modified: others/dokumentace/technicalGuide/architecture/7communication.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/7communication.tex 2010-02-09 10:31:54 UTC (rev 1688) +++ others/dokumentace/technicalGuide/architecture/7communication.tex 2010-02-09 17:01:28 UTC (rev 1689) @@ -13,33 +13,100 @@ \end{description} \section{Technologie použité pro komunikaci přes síť} - \subsection{Komunikační protokol a způsob komunikace} + + \subsection{Volba komunikačního protokolu a způsobu komunikace} Při návrhu komunikace mezi kiosky a webovou aplikací stáli autoři před rozhodnutím, jaký komunikační middleware či protokol použít. Zvažovali několik aspektů komunikace: \begin{itemize} - \item{Jednoduchý scénář komunikace} - \item{Server Java, klient c++} Vzhledem k tomu, že server je napsán v jiném programovacím jazyce, než - klient, musí být komunikace platformě nezávislá. - \item{messaging} - \item{Web Services} - \footnote{http://www.w3.org/2002/ws/} + \item \textbf{Jednoduchý scénář komunikace} Požadavkem je vytvoření jednoduché komunikační infrastruktury. Předpokládá + se podpora jenom několika málo různých typů předávaných informací, nejlépe ve formě zpráv. + Podpora transakčního zpracování komunikace není potřebná. + \item \textbf{Server Java, klient c++} Vzhledem k tomu, že server je napsán v jiném programovacím jazyce, než + klient a tyto komunikační uzly můžou být provozovány na různých systémech, musí být komunikace nezávislá na jazyce i na platformě. + \item \textbf{Skryté rozhraní komunikace} Navrhované komunikační rozhraní bude skryté uvnitř systému ELVYS- nebude tedy + přístupné pro uživatele systému. Není tedy ani nutné toto rozhraní standardizovat. + \item \textbf{Snadná, rozšiřitelná implementace} + V neposlední řadě musí být komunikace rychle naimplementována a rozšíření komunikačního rozhraní nesmí být příliš pracné. \end{itemize} - Z důvodu jednoduchého schématu - Kandidátem číslo jedna měly být Web Services. WebServices jsou ale pro tento styl komunikace - \subsection{XML, XSD, HTTP, JAXB} - Tělo většiny zpráv posílaných přes internet je tvořeno XML dokumentem nesoucím určitá data. - Všechny komplexnější XML\footnote{Extensible Markup Language (XML), http://www.w3.org/XML/} dokumenty (např. jakýkoliv XXXConfig přenášený ze serveru na kiosek) mají - definován formát pomocí jazyka XML Schema\footnote{XML Schema language, http://www.w3.org/XML/Schema} - + Zvažovány byly tyto protokoly a middleware: + \begin{itemize} + \item \textbf{CORBA} \footnote{Common Object Request Broker Architecture (CORBA), \url{http://www.omg.org/technology/documents/corba_spec_catalog.htm}}\\ + Middleware CORBA poskytuje platformní nezávislost, robustnost řešení, spolehlivost a má spoustu dalších + výhod. Jeho způsob komunikace (vzdálené volání procedur) ovšem není vzhledem k požadavkům uvedeným výše příliš vhodný a + jeho použití pro tak jednoduchou komunikaci je příliš složité a robustní. + \item \textbf{Message-oriented middleware} \\ + Použití middlewaru pracujícího na principu přenosu zpráv (např. ActiveMQ\footnote{ActiveMQ, \url{http://activemq.apache.org/}}) by bylo pro systém ELVYS vhodnější, + bohužel složitost realizace takového řešení by byla příliš složitá. + \item \textbf{Proprietární řešení pomocí TCP/UDP}\\ + Implementace vlastního komunikačního protokolu postaveného na TCP/UDP zcela neodpovídá požadavkům kladeným na + komunikační infrastrukturu. + \item \textbf{Web Services} \footnote{Web Services (WS), \url{http://www.w3.org/2002/ws/}}\\ + Použití webových služeb je takřka ideální volbou pro implementaci požadované komunikaci + (jak z hlediska shody s požadavkami, tak z hlediska zkušeností autorů s touto technologií). + Pro pohodlnou práci s webovými službami (svázání kódu aplikace s WSDL\footnote{wsdl} popisným souborem, + zpracování SOAP\footnote{SOAP} protokolu) je zapotřebí používat na straně serveru i klienta speciální knihovny. + Implementace webových služeb nemusí být založena na protokolu SOAP(který + používá pro svou práci nejčastěji HTTP protokolu), lze využít i zjednodušenou variantu + využívající k přenosu přímo HTTP protokol (tato varianta se často nazývá Web Services over HTTP; WSDL popis zůstává). + \item \textbf{REST services}\footnote{Representational State Transfer (REST), \url{http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm}} + TODO + + \item \textbf{Proprietární řešení inspirující se Web Services a REST } + Vzhledem k požadavku na jednoduchost rozhraní a chybějícímu požadavku na nutnost publikovat a standardizovat rozhraní + bylo možné využít zjednodušeného přístupu k Webovým službám . Autoři se rozhodli implementovat rozhraní používající komunikaci + přes HTTP protokol bez definování WSDL popisných souborů. Komunikace je založená na posílání XML dat přes HTTP POST request/response. + Na rozdíl od REST služeb používá řešení komunikace autorů pouze HTTP POST metodu a + vstupní parametry (identifikace zdroje, např. číslo kiosku, ke kterému se dotaz vztahuje) + jsou službám předávány pro jednoduchost přes User-Agent atribut HTTP POST hlavičky. Tělo požadavku/odpovědi potom obsahuje + přenášená data (XML data či jednoduché řetězcové hodnoty či + Base64\footnote{Base64} zakódovaný obsah přenášených MIME\footnote{MIME} typů). + \end{itemize} + + + Více o architektuře aplikace dispatcher je k nalezení v \textit{kapitole \ref{webapp_dispatcher}, str. \pageref{webapp_dispatcher}}. + + + \section{Rozhraní mezi webovou aplikací a kiosky}\label{interface_web_and_kiosk} + Serverová aplikace \textbf{dispatcher} možňuje vzdálené připojení k aplikaci \subsection{Posílání XML dat přes HTTP} \subsection{VPN} - Serverová část i kiosky jsou propojeny pomocí VPN\footnote{virtual private network (VPN), http://www.vpnc.org/} - a tudíž spolu komunikují pře - + Serverová část i kiosky jsou propojeny pomocí VPN\footnote{virtual private network (VPN), \url{http://www.vpnc.org/}} + a v rámci této virtuální sítě spolu komunikují pomocí zabezpečeného SSL spojení. Více informací o použití VPN v řešení ELVYS je možno nalézt v \textit{kapitole \ref{deployment_VPN} (\pageref{deployment_VPN})} + \subsection{Komunikační metody} + V této části textu je uveden seznam metod, neboli HTTP přístupových bodů, které je možno na straně serveru kontaktovat. Všechny přijímají + pouze HTTP POST požadavky, HTTP GET přístupová metoda pro žádný není naimplemnetována. + + TODO tato sekce + + \begin{description} + \item[Upload obrázku obrazovky kiosku] + Tato metoda slouží k uplaodu obrázku obrazovky kiosku na server. Obrázek je poslán.... + \begin{description} + \item[parametry] - + \item[useragent] screenshot<elvysID> + \item[odpověď] - + \end{description} + \item[Generování categoryConfig] + Tato metoda slouží k vygenerování categoryConfig konfiguračního souboru pro klienta... + \textbf{Detailní popis vygenerované zprávy:}\\ + categoryConfig obsahuje informace o ..\\ + odpovídající XSD popis \textbf{categoryConfig.xsd} lze nalézt v příloze\ref{appendix_categoryConfig.xsd} + + \item[Generování appConfig] + + + \item[Generování documentConfig] + + \item[Generování] + + + + + \end{description} \section{Rozhraní mezi webovou aplikací a LayoutDesignerem}\label{interface_web_and_LD} \textbf{Komunikace mezi webovým serverem a appletem} @@ -107,8 +174,26 @@ \subsection{textMeter} \subsection{videoMeter} \section{Rozhraní pro ovládání webové aplikace webServer2}\label{interface_web} + \subsection{SSL?} \section{Rozhraní pro práci s informačními kiosky}\label{interface_kiosk} -\section{budoucnost: WS-API}\label{interface_kiosk} -\subsection{Rozhraní přes WebServices} -K systému v současné době není možno přistupovat přes webservices, ale... mame oddělenou BL od prezentacni vrstvy, takže je to ready.. - Vzhledem k tomu, že business logika je uložena v \ No newline at end of file + popsána v \textit{kapitole \ref{client_interface} (str. \pageref{client_interface})} +\section{Rozhraní v budoucnosti}\label{interface_kiosk} +Vzhledem k tomu, že aplikační logika serverové části řešení ELVYS je znovupoužitelná +(obsažena v projektu \textbf{elvysCommons}, který je vložen do projektů \textbf{dispatcher} a \textbf{webServer2}), +je na snadě +Více informací o projektu \textbf{elvysCommons} je možno získat v \textit{kapitole \ref{webapp_architecture_elvysCommons} (str. \pageref{webapp_architecture_elvysCommons})} + +\subsection{WS-API} +Možnost do budoucnosti, která se přímo nabízí je vytvoření aplikačního rozhraní pro přístup k částem aplikace pomocí +Web Services (zkráceně WS-API). Toto API by mohlo být použito pro spolupráci systému ELVYS s jinými systémy. +Takovýmito systémy by mohly být například internetové stránky městských úřadů obsahující zveřejněné dokumenty. Takováto spolupráce +by mohla jistě umožnit i jednoduché automatické plánování dokumentů. + +Realizace tohoto rozhraní by byla jistě časově náročnou operací a nebyla zamýšlena jako součást základní implementace řešení ELVYS. + +\subsection{FTP nahrávání dokumentů} +Další možností, kde lze využít znovupoužitelnou aplikační logiku je nahrávání dokumentů pomocí FTP serveru. Tyto soubory by +na straně serveru mohla automaticky zpracovávat obslužná aplikace. Tím by se urychlilo a zpříjemnilo nahrávání většího množství +dokumentů na server. + +Ani tohle zlepšení nebylo plánováno do základní verze řešení ELVYS. \ No newline at end of file