Pokud dnes vývojář nebo architekt navrhuje novou software aplikaci, musí se rozhodnout, zda bude naprogramována jako tenká (web) nebo tlustá aplikace. Pokusím se shrnout několik vlastností těchto aplikací:
Rozdíl mezi tlustou a tenkou aplikací
V
tomto článku budu tenkými aplikacemi nazývat takové, které běží na serveru a k uživateli se přenáší pouze uživatelské
rozhraní přes protokol HTTP v popisném jazyku (X)HTML. V některých případech se část logiky též přesouvá na web prohlížeč a to
pomocí programovacího jazyku JavaScript. Tlusté (GUI) aplikace oproti tomu běží na přímo na počítači klienta.
Nutnost instalace
Zde vítězí web aplikace. Stačí mít na počítači nainstalován kvalitní web prohlížeč a aplikace běží. Nedovedu si dnes představit osobní počítač na kterém by web prohlížeč nainstalován nebyl. Sice to většinou asi nebude ten nejlepší prohlížeč, ale svou úlohu zvládne. Instalovat se nemusí nic.
Tlustý klient se naopak instalovat musí a to většinou přímo na pracovní stanici. Sice dnes existuji technologie jako je ClickOnce nebo WebStart, které instalaci na klienta velmi usnadňují, ale přesto je tato instalace zapotřebí. Minimálně to činní problém u málo výkonných počítačů nebo u počítačů, kde uživatel nemá právo aplikace na pracovní stanici nainstalovat. Také u velkých firemních sítí je snadnější aplikaci spouštět v rámci webového prohlížeče, protože firemní správci jsou většinou velmi přetíženi a to bez ohledu na množství nutné práce.
Bezpečnost dat
Toto je mnohem složitější problém a nelze jednoznačně určit vítěze. Záleží hodně na typu aplikace. Pokud jde o firemní aplikaci, data by měla být na serveru a také většinou jsou u všech typů aplikací, tedy i u tlustých klientů. V případě individuální aplikace, například email klienta, je situace ještě složitější. Emailové zprávy jsou v téměř vždy odesílány nezašifrované a správce webového serveru si může číst kohokoli emaily. To, že v současné době zažívají free emailové web servery takový rozmach znamená, že to buď uživatelům nevadí, nebo si nebezpečí vůbec neuvědomují. Často jde o zprávy velmi intimní a to jak osobně, tak obchodně. Tedy u v tomto příkladu (soukromý emailový klient) bych z tohoto hlediska jednoznačně preferoval tlustého klienta.
U otázky zavlečení různého zadních vrátek, spyware, virů a podobných škůdců do počítače je na tom web aplikace o něco málo lépe. Na server ji instalují zkušení správci, kteří jsou schopni tato nebezpečí řešit a bránit se proti nim. Infikování serveru je ovšem mnohem větší průšvih, než infikování pár pracovních stanic.
Spolehlivost
Spolehlivější je samozřejmě lepší, pokud aplikace běží jako webová pouze na serveru. Platí to ale pouze v případě, kdy je možno se na aplikaci kdykoliv napojit. Pokud aplikace běží v rámci veřejného internetu a uživatel má občas potíže s jeho dostupností, například u vytáčeného připojení, není aplikace na serveru výhodou, ale naopak. U nasazení webových aplikací je výhodou i snadnější zálohování dat.
Spolehlivost z hlediska kvality programového kódu si nedovoluji jednoznačně posoudit. Lépe je na tom asi tlustá aplikace, webové aplikace se totiž dnes programují pomocí Ajaxu (Asynchronous JavaScript and XML), kterému chci věnovat samostatný článek a ten se obtížně ladí a udržuje. Dnes se ale již objevují první vývojářská prostředí a kvalitní frameworky, která snadněji dovolují programovat web/Ajax aplikace.
Ovladatelnost a vzhled
Zde si dovolím říci, že tlustá aplikace jednoznačně vítězí. Sice dnes existují velmi kvalitní knihovny (například UI komponenty Telerik pro ASP.NET), které umožní webovým aplikacím se tlustým velmi přiblížit, ale pořád to zdaleka není ono. Navíc některé aplikace se za stavu současných technologií dají jako tenké web aplikace naprogramovat velmi těžko. Např. programovací nástroje, celkově multimédia, graficky náročné hry apod.
Ergonomie je další podkapitolou v této oblasti, kde tlusté aplikace vítězí. Jedinou webovou aplikaci, kterou viděl a šla ovládat, alespoň částečně klávesnicí, je Gmail. U tlustých aplikací se Microsoftu podařilo nasadit určitý vzhled a způsob ovládání a ten většina producentů software akceptuje a dodržuje. Zkušený uživatel, který zasedne k neznámé aplikaci nemá s naučením její ergonomie většinou žádné velké problémy. U webových aplikací to tak není. Každá se ovládá úplně jinak a často mám pocit, že návrháři soutěží v tom, jak uživateli položit co nejobtížnější kviz - jak to ovládat?
Programování
Zde se vrátím k problémům s Ajaxem. Aby se dala webová aplikace lépe ovládat, je nutné využít technologii Ajax. Zde potom bohužel nastane několik významných problémů, které velmi znepříjemní programování a aplikace a její testování. Každý, kdo programoval takovou aplikaci, ví přesně o čem píši. Proto je většinou programování web aplikací náročnější a složitější.
Multiplatformnost
Možnost nasadit aplikaci na více platforem má více rozměrů. Za prvé je nutné určit jaké je cílové zařízení. Může jít o osobní počítač, chytrý mobilní telefon, elektronický diář apod. V nejobvyklejším případě jde o osobní počítač. Zde je potom otázkou vlastní operační systém. Pokud jde o pracovní stanice, není těch operačních systémů zase tolik: MS Windows, GNU/Linux a Mac OS X. Ostatní operační systémy nejsou významné. Ve všech výše uvedených případech je vítězem tenká web aplikace. Problémy samozřejmě nastávají u malých zařízení, jako jsou mobilní telefony, kde displej nemá dostatečnou velikost, ale v ostatních případech je vše jasné. Pro všechny jenom trochu důležité platformy je k dispozici minimálně jeden webový prohlížeč, který dostatečně ctí standardy a umožňuje ovládat a zobrazovat příslušnou web aplikaci.
U tlustých aplikací je v současné době sice také několik přenositelných možností (Java, WxWidgets, Qt, REALBasic, XUL, ...), ale tyto nástroj mají problémy a multiplatformní vývoj je mnohem složitější a nákladnější než vývoj pro jeden operační systém.
Náklady (vývoj, stanice a celkové)
Náklady na vývoj jsou díky problémů s Ajaxem vyšší u web aplikací, ale v ostatních parametrech tento druh aplikací vede. V naprosté většině případů, především tehdy, kdy se aplikace kupuje a nevytváří vlastními silami, jsou levnější web aplikace. Pracovní stanice stačí i ty nejjednodušší s minimálními HW nároky a náklady na správu a upgrade jsou také mnohem menší - téměř vše stačí obsluhovat pouze na serveru.
Microsoft
V čem je Microsoft problém? V tom, že pokud chcete psát tlustou aplikaci, budete ji pravděpodobně psát pro některý z operačních systémů této velké firmy. Pro některé vývojáře je právě to problém. Nejde tolik o technickou, jako spíše psychologickou záležitost, ale to její význam nijak nezmenšuje. Řešení tohoto problému hledejte v podkapitole Závěr.
Ostatní problémy u web aplikací
Webové tenké aplikace mají několik dalších menších problémů:
- Vzhledem k tomu, že se téměř veškeré výpočty a práce s daty odehrává na serveru, je toto zařízení často přetíženo. Naopak často velmi výkonné počítače v roli pracovních stanic zahálejí a jejich potenciál není využit.
- Přenášet větší množství dat na pomalejších linkách, na kterých je mnoho uživatelů nuceno pracovat, je náročné a práci velmi zdržuje. Představme si například tabulku z tabulkového procesoru, která je součást projektu. Pokud je projekt řízen pomocí webové aplikace, je nutné tento soubor neustále přenášet sem a tam mezi stanicemi přes web rozhraní, což je problém nejen pro vývojáře, ale i pro samotné uživatele. Zde je výhodné použít například přenosový protokol WebDav, který je kvalitně implementován do všech důležitých desktopových operačních systémů.
- Nepřímá interakce aplikace s uživatelem: například email klient - kdy přijde nový email, není pro tlustou aplikaci žádný problém zobrazit nové okno, které na tuto novou událost upozorní. V případě webové aplikace to je velmi složité, až nemožné.
| Výhody jednotlivých řešení | |
|---|---|
| Tlustá aplikace | Tenká (web) aplikace |
|
|
Závěr
Závěr zdaleka není jednoznačný. Každý si musí udělat svůj názor sám. Samozřejmě velmi záleží na typu rozhodované aplikace. Dovolím si přednést několik vlastních bodů.
- V případě, že je aplikace malá a je důležité v prvé řadě uživatele neodradit, například instalací, od jejího užívání, doporučuji web aplikaci. Příklad: on-line obchod.
- Pokud je aplikace UI složitá a některé její aspekty jdou naprogramovat pomocí web technologií těžko, zvolím tlustou aplikaci.
- Pokud nenávidím Microsoft, navštívím psychologa. Microsoft není ďábel, jde pouze o komerční společnost, která se snaží maximalizovat svůj zisk.
- Pokud zkušený uživatel pracuje s aplikací denně, bude preferovat tlustou aplikaci. Pokud jde o nezkušeného uživatele nebo bude pracovat s aplikací výjimečně, bude preferovat web aplikaci.
- Naprostá většina uživatelů si nechce na svůj počítač nic nového instalovat.
- Web aplikace jsou také módní záležitostí. Zkuste prosím spočítat, kolik minut za dnešní den jste pracoval(a) na nějaké web aplikaci a naopak na nějaké tlusté aplikaci. Na druhé straně, pokud čtete tento spot a dočetl(a) jste ho až sem, tak nejste typickým uživatelem počítače. Typický uživatel počítače si není schopen na něj sám nic nainstalovat, ale obsluhovat web aplikaci většinou zvládne.
- Širokopásmový internet není samozřejmostí téměř nikde na světě.



