Na začátek se sluší poznamenat, že WebObjects ani zdaleka nejsou první špičkovou síťovou technologií od NeXTů; první byl už samotný NeXTStep, bez kterého bychom dnes žádné WWW neměli. Nechme promluvit Tima Berners-Lee, který technologii WWW vytvořil: "At CERN in 1990, I developed the first client and server World Wide Web app using NeXT's tools in just two months. It was a combination of NeXTs object-oriented environment, neat development tools, and a powerful class library which made it all possible."
WebObjects je především prostředek pro programátory; my se v tomto školení však programováním nezabýváme. Proto si jen ve vší stručnosti ukážeme, jaké výhody systém WebObjects nabízí.

WebObjects není nic více -- a také nic méně -- než prostředí, umožňující velmi snadno vytvářet a udržovat aplikace, jejichž uživatelským rozhraním je Internet. Uvědomme si, že zde vlastně jdeme ještě dál, než 'obyčejné' metody server scripting: nemáme k dispozici další vývojový systém, který bychom se teprve museli učit, a který je pouhou nadstavbou nad HTTP serverem; neseznamujeme se s novými knihovnami a neučíme se nová paradigmata. Namísto toho využíváme ten nejlepší dosud vytvořený systém pro tvorbu aplikací: plně objektové vývojové prostředí Mac OS -- OpenStep, respektive jeho zdokonalenou a rozšířenou variantu, již dnes Apple nazývá Cocoa. Jedinou novinkou je zde uživatelské rozhraní vytvořených aplikací: je jím Internet, přesněji řečeno, WWW.
Jinými slovy, každá WO aplikace (aplikace, vytvořená pod systémem WebObjects), je přístupná přes HTTP server prostřednictvím obyčejného URL. Zvolí-li jej uživatel ve svém browseru, server aplikaci spustí, a ta pak s uživatelem (resp. s jeho browserem) komunikuje prostřednictvím HTML protokolu a jeho případných nadstaveb (jako je Java).
Uvědomme si, že díky plně objektovému prostředí nejenže není problém takové aplikace snadno vytvářet a udržovat; stejně snadno můžeme "Webovské" uživatelské rozhraní doplnit ke kterékoli aplikaci, kterou již máme hotovou. Chce-li tedy některá firma umožnit přístup k některým ze svých aplikací zákazníkům prostřednictvím Internetu -- a to bude podle mého osobního názoru během krátké doby chtít každý -- měla by zvážit využití systému WebObjects. Ten totiž -- na rozdíl od ostatních alternativ -- umožní přímé využití již hotového kódu, s minimálními nebo žádnými změnami.
WebObjects nabízejí ideální řešení i pro firemní systémy (Intranet). Kterýkoli zaměstnanec může mít snadno ze svého WWW browseru prostřednictvím lokální sítě přístup ke kterékoli z firemních aplikací. Odhlédneme-li od ostatních výhod, nesmírně to zjednoduší údržbu -- každá aplikace je na jednom místě, běží jen v jednom prostředí... Zásadní výhody tohoto přístupu pak ocení tam, kde potřebují pracovat s více platformami: Macintoshe jako základ a pro seriózní práci, Silicon Graphics pro animace, Suny pro CAD a obyčejné PC s MS Windows pro uklízečky? S WebObjects to není žádný problém, různorodé systémy mohou de fakto sdílet aplikace aniž by bylo zapotřebí cokoli portovat, stačí, aby na každé z platforem byl k dispozici WWW browser. Totéž je samozřejmě snem všech produktů pro server scripting; zatím však pouze WebObjects nabízejí dostatečnou míru integrace s dosavadním software -- od proprietary aplikací přes databázové servery až po software pracující na sálových počítačích -- na straně jedné, a dostatečně snadnou tvorbu i údržbu aplikací nových na straně druhé, aby toho bylo možné dosáhnout v praxi.
Každá WebObjectová aplikace musí mít k dispozici standardní rozhraní, jehož prostřednictvím může komunikovat s HTTP serverem (a skrze něj s uživateli). Takové rozhraní by samozřejmě mělo být efektivní, plně objektové, a mělo by být k dispozici na většině rozšířených serverů.
Je bohužel zřejmé, že rozhraní, splňující požadavky z minulé věty, vlastně neexistuje: jediné rozhraní, které je k dispozici na většině serverů, je CGI (Common Gateway Interface); to je ale značně neefektivní, a o objektech se mu ani nezdá. Systém WebObjects proto mezi aplikace a server vkládá další úroveň, tzv. adaptor.

Všechny WebObjectové aplikace komunikují s adaptorem prostřednictvím rozhraní, splňujícího všechny požadavky; sám adaptor pak se serverem komunikuje tak, jak to v případě konkrétního serveru jde. Standardně je k dispozici samozřejmě universální adaptor, který pro komunikaci se serverem využívá CGI; máme však k dispozici i adaptory, využívající lepších protokolů (např. NSAPI, ISAPI), a máme k dispozici i prostředky pro tvorbu adaptoru vlastního.
Kompletní systém, umožňující běh WO aplikací, tedy obsahuje dva moduly: HTTP server a adaptor, schopný s tímto serverem komunikovat. Základní Apache server a několik adaptorů je standardní součástí WebObjects; systém adaptorů však bez problémů umožňuje, abychom s WebObjecty nadále beze změny využívali server, se kterým jsme spokojeni -- ať je to kterýkoli, nebo abychom přešli na jiný server bez nutnosti jakkoli zasahovat do existujících WO aplikací.
Aplikace (ostatně nejen WebObjektová) se skládá z dat a kódu. Typickými daty WebObjektové aplikace jsou WWW stránky nebo jejich části; kód pak určuje co se se stránkami -- nebo s jejich částmi -- vlastně má dít. Data vytvoříme pomocí aplikace WebObjects Builder; kód napíšeme ve standardním jazyce C, C++ nebo Objective C. K dispozici je i script (interpretovaný jazyk) WebScript, velmi podobný Objective C, nebo Java.
Jádro aplikace se skutečně ve WebObjects nikterak neliší od jader docela standardních aplikací: všechny pracují s plnohodnotnými objekty; ty mohou standardním způsobem komunikovat navzájem, s využitím systému DO (distribuovaných objektů) mohou komunikovat s objekty v jiných procesech/na jiných počítačích, díky systému D'OLE mohou spolupracovat s OLE objekty ve Windows a podobně...
Uvědomme si co to znamená -- díky využití distribuované technologie se systémem WebObjects vlastně nepřipadá v úvahu zahlcení serveru. Při klasické technologii mívá server často co dělat, aby vůbec stačil obsloužit všechny klienty; přidáme-li mu další povinnosti s interpretováním scriptů a třeba prohledáváním databází, narazíme snadno na jeho limity. Pak musíme přidat další HTTP server, omezený na předem zvolenou podmnožinu IP adres... Ve WebObjects naprosti tomu můžeme snadno jednotlivé úlohy distribuovat na jiné počítače; můžeme dynamicky přidávat další `servery' (ne HTTP servery, na to stačí jeden, ale výkonné servery, zajišťující zpracování klientských požadavků), aniž by bylo zapotřebí (HTTP) server restartovat: to ilustruje další obrázek:

A co se spolupráce s OLE objekty týká: nejméně jedna z komerčně využívaných WO aplikací (uvědomme si, že na rozdíl od konkurenčních technologií jsou WebObjects již řadu let na trhu a kvalitně slouží mnoha zákazníkům) nabízí klientům mimo jiné jakýsi specializovaný spreadsheet. Výpočty, potřebnými pro udržení jeho tabulky v konsistentním stavu, se ale aplikace nezabývá: prostě si na to prostřednictvím OLE zavolá Excel (který díky technologii Distributed OLE ani nemusí běžet na stejném počítači jako HTTP server nebo WO aplikace; stačí, je-li přístupný prostřednictvím sítě).
Je-li aplikace jednoduchá, může se snadno stát, že žádný program již ani nemusíme psát: standardních objektů je ve WebObjects skutečně hodně, služby, které nabízejí jsou luxusní, a jejich schopnost vzájemné spolupráce je taková, že si to programátor pracující v prostředí Windows nedokáže ani představit (věřte mi, nejsou to plané řeči: znám několik takových programátorů, a kdykoli se mi kterýkoli z nich koukal přes rameno jak se programuje v OpenStepu, spadla mu čelist). Stačí-li pro dokončení aplikace jen pár programových řádků, nepotřebujeme překladač -- můžeme použít plně objektový interpretovaný jazyk WebScript nebo Java Script.
Pro tvorbu složitějších aplikací programovat samozřejmě musíme; pak máme k dispozici stejné vývojové prostředí, které Mac OS X nabízí pro tvorbu obecných aplikací: plně objektový systém, umožňující tzv. vizuální programování na špičkové úrovni, podporující jednoduchý a přitom špičkový programovací jazyk Objective C (s možností využít i méně kvalitní, ale známější C++ nebo Javu), nesmírně rozsáhlé knihovny standardních objektů, zahrnující mj. UNICODE stringy, hashovací tabulky umožňující slovníkové vyhledávání v konstantním čase, distribuované objekty kompatibilní se standardem CORBA na jedné straně a s technologií OLE na straně druhé, a mnohem a mnohem více... WebObjects navíc nabízejí speciální podporu pro řešení úloh, které bývají v HTTP obvykle problematické, jako je např. udržování kontextových informací pro každého klienta.
Službami, jež jsme dosud popsali -- a které samy o sobě daleko předčí jakoukoli konkurenci -- ale systém WebObjects nekončí. Ten totiž nabízí navíc přímou podporu pro spolupráci s databázovými servery; prakticky bez psaní dodatečného kódu tak můžeme WO aplikaci propojit s daty, uloženými třeba v serveru Oracle nebo Informix.
Uvědomme si o co vlastně v databázovém systému jde, a v čem jsou WebObjects natolik unikátní. Existuje řada produktů, které umožňují takový nebo onaký přístup k databázím; až na výjimky se však jedná o dvouúrovňová řešení: aplikace využívá knihovny, jejichž prostřednictvím může číst a měnit údaje v databázovém serveru. Uživatele hračkových operačních systémů typu Windows to snad potěší; pro náročné systémy, potřebné v řízení podniků, to nestačí. Důvod je jednoduchý: důležitá nejsou jen data, ale také jejich interpretace. Umístíme-li interpretaci dat až na úroveň aplikací, narazíme na obtížně řešitelné problémy při jejich údržbě: konsistenci dat zajistí databázový server, ale konsistenci interpretací musíme zajistit ručně. To stojí spoustu práce navíc, a nakonec stejně na něco zapomeneme...
WebObjects Enterprise naproti tomu podporují tříúrovňové řešení (aniž by jej bylo nutné explicitně programovat; právě v tom je rozdíl oproti jiným systémům): databázový server ukládá vlastní data a zajišťuje jejich konsistenci. Nad ním je vrstva datových objektů, které zajišťují konsistentní interpretaci: jedná se o plnohodnotné objekty, tj. spojení dat a kódu; data jsou přebírána z databázového serveru, zatímco kód je doplněn v rámci WebObjects (resp. modulu Enterprise Objects Framework, který s WebObjects úzce spolupracuje). Teprve nad touto vrstvou jsou vlastní aplikace:

To znamená, že v systému WebObjects různé WO aplikace (a s nimi i případné standardní, ne-WWW aplikace, využívající EOF) sdílejí společné datové objekty; ne pouze data, ale i jejich interpretace. Změníme-li pak interpretaci, budou ji automaticky využívat všechny aplikace: bez překladu, bez restartu, bez problémů. Stejně automaticky, jako jsou v klasické dvouúrovňové architektuře všem aplikacím okamžitě k dispozici změněná data. Takové služby, spolu s plně objektovým modelem a spolu s WWW rozhraním, nenalezneme v žádném jiném produktu než právě ve WebObjects.
WebObjects obsahují podporu pro využití jiných technologií. Konkrétně, není vůbec žádný problém připravit WO aplikaci, která klientům dynamicky podle potřeby posílá Java applety nebo řídící prvky ActiveX; snadno lze zajistit, aby se využitá služba volila dynamicky podle toho, jaký browser ten který klient využívá.
Komunikace samozřejmě není jednosměrná -- např. Java applet může komunikovat s objekty uvnitř WO aplikace, a jejich prostřednictvím dále s kterýkoli modulem, přístupným ze serveru.
Copyright © OCSoftware, 2000; all right reserved