WebObjects

Kdybychom tento článek psali anglicky, mohli bychom mu dát nadpis "What's NeXT on Internet" - podíváme se v něm totiž blíže na jednu z nejmodernějších a nejzajímavějších technologií které dnes Internet nabízí, na systém WebObjects firmy NeXT.

(Sluší se poznamenat, že WebObjects 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.").




O co vlastně jde

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é prostředí firmy NeXT se standardními kity (knihovnami tříd), využívanými k naprosté spokojenosti programátorů již více než deset let. Jedinou novinkou je 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 pro DTP, Silicon Graphics pro animace, Suny pro vývojové pracovníky a obyčejné PC pro sekretář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.




Zapojení aplikací do systému

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 zřejmé, že rozhraní, splňující požadavky z minulé věty, 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í 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í.




Struktura aplikace

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, a připravuje se Java, JavaScript a VisualBasic Script.

WO Builder je integrovaný správce pro celou tvorbu WO aplikací. Obsahuje grafický editor, umožňující sestavovat rozhraní vytvářené aplikace z objektů z palet, přesně stejně, jako tomu je při tvorbě standardních aplikací v InterfaceBuilderu (pro ty, kdo neznají NEXTSTEP: Delphi nebo Visual C jsou nepříliš podařené pokusy tento systém napodobit).

Obrázek ukazuje vložení formuláře do připravovaného rozhraní ve WO Builderu běžícím pod Windows (WebObjects jsou k dispozici pro Windows NT a všechny implementace OpenStepu a NEXTSTEPu; hotové WO aplikace mohou pracovat i v řadě dalších prostředí).

Nepleťme si WO Builder s resource editorem, nebo s glorifikovaným editorem HTML, s jakými se setkáváme v jiných systémech. WebObjects pracují s plnohodnotnými objekty; ty mohou standardním způsobem komunikovat navzájem, s využitím systému DO (Distributed Objects) 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 NeXT s 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ž přes dva roky 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, a součástí nejbližší verse bude i Java Script a VisualBasic Script.

Pro tvorbu složitějších aplikací programovat samozřejmě musíme; pak máme k dispozici stejné vývojové prostředí, jaké známe z OpenStepu: 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 (podrobnější údaje, včetně příkladů zdrojového kódu, můžete najít ve článku "OpenStep vs. WIN32 API"). 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.




WebObjects Enterprise

Služby, které jsme popsali v minulých odstavcích, odpovídaly základním balíkům WebObjects, resp. WebObjects Pro. Pro nejnáročnější zákazníky je k dispozici ještě další rozšíření, WebObjects Enterprise. Tam je navíc k službám dosud popsaného systému přidána přímá podpora pro spolupráci s databázovými servery a s existujícím softwarem, pracujícím na mainframech. 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, stejně jako k existujícímu firemnímu systému, napsanému v Cobolu a pracujícímu na sálovém počítači IBM.

Uvědomme si o co vlastně v databázovém systému jde, a v čem WebObjects předhánějí konkurenci: 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 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 -- respektive produkt Enterprise Objects Framework (EOF), který je do nich integrován -- 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. EOF). 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 Enterprise.




Spolupráce s jinými technologiemi

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.




A co bezpečnost...

Mezi nejdůležitější atributy jakéhokoli systému využívajícího Internet samozřejmě patří také bezpečnost: na síti jsou obvykle k dispozici důvěrná data pro zaměstnance a partnery, přitom je třeba zajistit, aby si je nepřečetl -- nebo snad dokonce nezměnil!!! -- kdokoli jiný.

Ani na to samozřejmě u NeXTů nezapomněli; především, i se systémem WebObjects můžete bez jakýchkoli problémů nadále používat svůj firewall. Dále, WebObjects podporují standardně užívané bezpečnostní systémy jako je SSL nebo SHTTP. A konečně, pro nejnáročnější je součástí WebObjects kompletní, spolehlivý a zabezpečený systém pro autorizaci uživatelů využívající technologie ACE/Server a SecurID společnosti Security Dynamics.

Případní zájemci naleznou podrobnosti na http://www.securid.com; za zmínku však stojí to, že systém SecurID využívá dynamická hesla, která se mění automaticky v závislosti na čase, a navíc zajišťuje, že jednou použité heslo již nikdy nebude platit. Díky tomu patří toto zabezpečení mezi nejspolehlivější, jaká vůbec známe; bezpečnější snad již je opravdu jen přestříhnout dráty...




Nikdy jsem o tom neslyšel, používá to vůbec někdo?

První polovinu nadpisu tohoto odstavce by patrně mohla po pravdě citovat většina čtenářů. Příčina je prostá: WebObjects, jako špičková technologie, samozřejmě stojí více než jednoduché systémy pro server scripting. Zakoupí je tedy nejspíše větší podnik, zvažující důkladné své investice; u nás, bohužel, i po osmi letech stále do značné míry platí, že čím větší podnik, tím méně své investice váží...

V tomto článku se nicméně nechci zabývat problémy naší ekonomiky, ale programovým balíkem WebObjects; vraťme se proto k druhé polovině otázky: uživatelů WebObjects je celá řada, a nalezneme mezi nimi jména jako Merrill Lynch, Dell, Nissan nebo Motorola. S WWW stránkami některých uživatelů WebObjects se také můžeme seznámit prostřednictvím http://www.apple.com/webobjects/customers.html/. Na http://www.apple.com/webobjects by ostatně měla být k dispozici i řada dalších informací o WebObjects, včetně kompletního programátorského manuálu; máte-li volnou chvilku, doporučuji návštěvu.





(ostatní články)


Copyright (c) Ondra Čada