Hlavní navigace

Aplikační server Zope

25. 6. 2002
Doba čtení: 7 minut

Sdílet

Zope je RAD nástroj pro tvorbu webových aplikací. Obsahuje webový a aplikační server, databázový server, objektově orientovanou databázi, session management, týmovou spolupráci, verzování a mnoho dalšího. A je celý napsán v Pythonu. To jste ještě neviděli.

Povím vám, jak jsem k němu přišel. Již řadu let se zabývám programováním webových aplikací. Začal jsem (světe div se) ve Visual InterDevu. Tehdy bylo ASP převratnou novinkou a InterDev zbrusu novým prostředím, ve kterém někdy nefungovalo všechno tak, jak mělo. Měli jsme na krku první zadání webové aplikace a já si pořád s tím InterDevem nějak nerozuměl. Poohlédl jsem se tedy po něčem jiném a objevil PHP (tehdy betaverze 3.0). V PHP jsem byl spokojen. Problém ale nastal s příchodem další, tentokráte již značně rozsáhlé webové zakázky. Ne, že by v PHP něco nešlo, ovšem dělat větší projekt je v PHP poněkud těžkopádné. Při větších projektech se totiž dramaticky projeví potřeba oddělit logiku od presentace. U Sun Microsystems tomu začali říkat MVC (Model-View-Controller) a já začal hledat prostředí, které by splňovalo moje představy.

Jako první jsem samozřejmě narazil na Javu a její JSP/Servlet technologie. Vyzkoušel jsem tedy Tomcat, JBoss a podobná řešení. Celý systém je moderní a je navržen na dnešní požadavky vícevrstvé architektury, což je jeho nespornou výhodou. Na Javě se mi ovšem nelíbila jedna věc – rychlost. Ať si říká kdo chce, co chce, klient chce levné řešení na levném hardwaru, na kterém nepojede jen Java, ale také např. databázový server, samba apod. Proto jsem hned zpočátku tohoto paměťo-žrouta zavrhl a nezabýval se hlouběji tímto vysoce promyšleným a mocným systémem.

V druhé vlně jsem nalezl dva produkty, které by mohly splnit moje očekávání. Nebudu vás napínat, jsou to mod_perl a Zope. Tento článek je o druhém jmenovaném, který nedávno dospěl do vysoce vyzrálé verze schopné obstát na poli komerčních řešení. Ještě, než se do něj pustíme, bych rád napsal pár řádků o Perlu. Perl nabízí již řadu let vysoce stabilní a prověřené řešení pro tvorbu internetových aplikací. Je nenáročný a ve spojení s webovým serverem Apache tvoří dobrou základnu pro vývoj. Webových řešení, postavených na bázi Apache + Perl, je mnoho a vepředu trčí trojice mod_perl/Embper­l/Mason. Nabyl jsem mnoho zkušeností právě se systémem Embperl, který je nyní ve verzi 1.3 a dokončují se práce na verzi 2.0, jež pojede na Apache 2.0 s novým mod_perlem. Aplikace se většinou píše v čistém Perlu a Embperl zprostředkovává pouze presentaci. Embperl umožňuje tzv. EPO (Embperl Objects), které usnadňují celou presentaci. EPO se dají přirovnat k šablonám v PHP. Co se týče výkonnosti, Apache+Embperl zcela postačuje na menší aplikace pro desítky uživatelů.

Všechno to je krásné, jenže já jsem měl na krku informační systém pro malou firmu v téměř šibeničním termínu jeden měsíc. ColdFusion a podobné nesmysly za desítky tisíc dolarů jsem hned zavrhl. Začal jsem zkoumat Mason, ale ten mě nijak nenadchl a navíc se mi jevil dost nedotaženě. Chtěl jsem něco, v čemž bych nemusel začínat od píky. A našel jsem to: ZOPE.

Zope je RAD nástroj pro tvorbu webových aplikací. Obsahuje webový a aplikační server, databázový server (popř. samozřejmě i konektivitu na jiný SQL server), session management, objektové orientovanou databázi, týmovou spolupráci, verzování a je celý napsán v Pythonu. Nelekejte se. Nebudete se muset učit nový jazyk (tedy pokud neznáte Python samozřejmě). Pomocí technologie DTML a ZPT budete skutečně psát celou aplikaci, aniž byste napsali řádek v Pythonu. Tedy pokud nebudete chtít nahrávat soubory na server, ořezat je a uložit do databáze – tam by asi již byl trochu potřeba. Po přečtení úvodních kapitol zcela dokončeného manuálu (což mnoho open source produktů nemá) mě Zope oslnil svou dotažeností. Doufám, že jím oslním i vás.

Zope se dodává klasicky jako instalační balík (můžete si ho i zkompilovat, pokud chcete) a běží samosebou na systému Linux. A taky na Windows a jiných pro nás nezajímavých systémech. Instalací se nebudeme zabývat. Nutno podotknout, že balík obsahuje naprosto vše včetně interpretu Pythonu. Stačí nainstalovat a spustit pomocí skritpu (na windows batu). Pokud instalujete na cílovou mašinu, musíte zadat, aby se Zope spustil při startu (na Windows umí Zope běžet jako service).

Po instalaci a úspěšném spuštění můžete ihned začít pracovat. Spusťtě Mozillu (pardon – váš oblíbený prohlížeč) a přejděte na http://localhos­t:8080/manage. Jak již jistě tušíte, veškerá práce se odehrává v prohlížeči. Má to řadu výhod i nevýhod. Je to rychlé a účinné, na druhou stranu ale musíte zdrojové texty editovat v chudém textboxu, který neumí např. tabelátor (po stisku tabelátoru dostane fokus další prvek na stránce v prohlížeči) a o nějakém zvýrazňování nemůže být ani řeč. Na druhou stranu Zope zvládá jak FTP, tak WebDAV protokoly, takže samotné zdrojové texty můžete editovat ve svém editoru (který pochopitelně tyto protokoly zvládne). Práci v Zope administrátoru se však stejnak nevyhnete.

Jak vidíte na obrázku, řídící centrum Zope se dělí na dvě části. Vlevo je stromová struktura „adresářů“ a vpravo pracujete s objekty. Kdybyste náhodou tyto soubory hledali na svém souborovém systému, tak vězte, že se nalézají v jediném souboru data.fs. Obrovskou výhodou je, že tento soubor má přenositelný formát. Můžete celý webový systém vzít a nakopírovat jej k již nainstalovanému serveru. Po restartu je aplikace obvykle připravena k práci (po nastavení různých databázových spojení). Menší nevýhodou jsou havárie, a proto je nutné zálohovat. Dolování dat z tohoto souboru by bylo asi obtížné. Ovládání je zcela intuitivní a systém obsahuje propracovanou nápovědu.

Zkuste si vytvořit složku a v ní HTML dokument (v systému Zope není zvykem dávat objektům a dokumentům přípony, má to svůj význam, o typu dokumentu se prohlížeč dozví z hlavičky). Otevřte si nové okno prohlížeče a zadejte kýženou adresu. Objeví se samozřejmě vyrendrovaný HTML soubor. To není nic převratného, to umí samozřejmě i linuxový kernel a mnohem rychleji. Pro začátek to ale stačí.

Prvním mocným nástrojem je DTML. Jde o rozšíření jazyka HTML o několik málo (asi dvacet) značek, pomocí kterých můžete modifikovat výsledký dokument. Jelikož je Python čistokrevný objektový jazyk, objektová je i práce s celým Zope systémem. Typyckým příkladem DTML je tento kód:

<dtml-var standard_html_header>

    <h1>Ahoj světe!</h1>
<dtml-var standard_html_footer>

Značky dtml-var provedou vložení objektu, v tomto případě záhlaví a zápatí. Je nutné si uvědomit, že objektem může být v Zopu cokoliv: jiný dokument, metoda, obrázek, java applet, skript v Pythonu nebo Perlu (Zope totiž rozumí i skritpům v Perlu, pokud je samozřejmě nainstalován interpret). Jak tedy vložit obrázek? Ten se musí nejprve do Zopu nahrát (uploadovat). Zope si poznačí rozměry obrázku a všechno kolem (můžete tyto vlastnosti modifikovat v properties) a vy pak použijete prostě dtml-var.

Co je ale největším překvapením pro nováčka, je způsob, jak se objekty při vkládání pomocí dtml-var hledají. Objekt je hledán v „aktuálním“ adresáři, a pokud není nalezen, přejde se o úroveň výše. Na jednotlivé složky je pak možno nahlížet jako na objekty a na jednotlivé objekty (dokumenty) jako na jeho metody. Podadresář je jakýmsi potomkem objektu. Toto vytváří veliké možnosti pro programování jakýchsi šablon. Je to podobné jako EPO v Embperlu. Typickým využitím této vlastnosti je umístění záhlaví, zápatí, obrázků a CSS stylů (všeho, co má vliv na presentaci) do kořene. Všechny podadresáře pak „zdědí“ tyto metody. Jiná sekce webu pak může metody „přetížit“ svými a změnit tak např. CSS styl a použít jiné barvy.

Speciálním typem objektu je metoda, kterou můžete vidět na obrázku. V systému Zope rozeznáváme dvě různé metody, DTML metodu a ZSQL metodu. To první není nic jiného než DTML dokument, který má v sobě obvykle nějakou logiku, a to druhé je asi největší bombou celého systému. Je to totiž vynikající a ničím nenahraditelná SQL metoda. Protože se snažíme oddělit logiku od prezentace, tak právě tou logikou v DTML programování (DTML není jedinou možností v Zope, máme tu ještě ZPT, na které se podíváme příště) jsou metody a presentací jsou DTML dokumenty, které vše „slepí“ dohromady. Příkladem DTML metody je záhlaví a zápatí. V zápatí může být například datum a čas generovaný serverem.

ict ve školství 24

Jediným menším problémem Zopu je naprostá ignorance lokálních zvyklostí jako je desetinná čárka a tvar datumu. Ale i to se dá pomocí pár pluginů a fíglů zvládnout a navíc v nových verzích by se na to mělo myslet. Příště „dorazíme“ DTML, podíváme se na ZSQL metody a používání sezení. Pokud se chystáte vytvářet bezpečný elektronický obchod, tak si na další díl určitě počkejte.

Odkazy

Zope.org