pátek 1. června 2007

Google Gears - když offline je online

Vždycky, když si myslím, že mě už svět webových aplikací nemá čím překvapit, tak se objeví Google a rozšlape můj náhled jako domeček z karet. Poslední majstrštik se jmenuje Google Gears a jedná se o framework, který umožňuje webové aplikaci fungovat v hybridním online/offline módu.

Představte si, že děláte web aplikaci pro plánování úkolů. U takové aplikace by nebylo na škodu, kdyby si člověk mohl svoje úkoly prohlížet i bez nutnosti, aby byl neustále připojený k serveru. Jinými slovy, je potřeba distribuovat část dat na klientskou stranu a vyřešit problémy s cacheováním statických resourcu a nebo zajistit synchronizaci klientského stavu po přechodu zpět do online módu. To vše samozřejmě pokud možno, bez toho aby si byl uživatel nutně vědom rozdílu.

Následující obrázek (pochází ze stránek Google Gears) ukazuje architekturu aplikace, která výše uvedené problémy řeší a nebo se o to alespoň pokouší.

Základním blokem je takzvaný Data Switch, což je chytrá škatulka, která se rozhoduje podle stavu připojení, jestli se budou požadavky směrovat na server a nebo zpracovávat lokálně. Data Switch je vlastně proxy objekt, který přímo volá Server Data Layer a nebo Local Data Layer což jsou jenom můstky, které převádějí volání v intencích klienta (forma lokálního požadavku např. dotaz do DB) či serveru (HTTP požadavek). Local Data Layer ovšem otevírá Nerudovu otázku Kam s ním? resp. Kam s daty?.

Z tohotu důvodu je na klientu potřeba trvalé datové úložiště, k tomu se nabízí přímo databáze. Jenže klientské úložiště znamená, že musí docházet k synchronizaci stavu mezi klientem a serverem a to podchycuje krabička jménem Sync Engine využívající Comet přístup viz článek Komety přilétají. Tohle všechno jsou úkoly, pro které tu je Google Gears.

Google Gears má tři základní komponenty.

  • LocalServer - lokálně cacheuje statické resources (obrázky, HTML, javascript) podle jejich URL
  • Database - relační databáze, běžící na lokále, která slouží pro ukládání dat
  • WorkerPool - thread pool, který umožňuje asynchronní exekuci na klientu např. synchronizaci se serverem.

Z implementačního hlediska je Google Gears směsicí javascriptu a specifického rozšíření prohlížeče. To znamená, že pokud se aplikace rozhodne využít Google Gears, musí jej mít klient nainstalovaný. To je samozřejmě nevýhoda, ale těžko si představit jiné řešení nabízející stejné možnosti bez požadavků na klienta.

Google Gears je podle mě dalším dílkem do skládačky technologií, které Google používá pro koncept dekstopových aplikací v prostředí webu, viz jejich kancelářský balík. Google Gears se stejně jako jakákoliv jiná technologie nehodí úplně pro všechny typy webových aplikací, ale svoje místo jako Google Web Toolkit si určitě najde.