Hlavní navigace

Cocoon v příkladech: Aplikace Cocoonu, jeho konkurenti a následovníci

19. 5. 2004
Doba čtení: 4 minuty

Sdílet

V tomto dílu se podíváme na open-source i komerční aplikace založené na Cocoonu a na další projekty, které mají ke Cocoonu přímý vztah nebo které Cocoon nějakým způsobem ovlivnil.

Avalon

Avalon je komponentový framework, na kterém je Cocoon založen. Stejně jako Cocoon patří do rodiny projektů Apache Jakarta. Je to projekt velmi zajímavý, zvláště svým poměrně čistým architektonickým řešením. Komponenty jsou jasně ohraničeny a mají přesně definovaný životní cyklus (implementuje se jako interface v Javě). Celým frameworkem se táhne jako červená nit návrhový vzor „Inversion of Control“, který poněkud odporuje zažité představě vícevrstvé aplikace, kde horní vrstvy zavisí na vrstvách spodních. Tento vzor má nicméně své výhody, obzvláště bych zde vyzdvihl to, že podporujepřiro­zenou cestou návrh a vývoj bezpečné aplikace a že zajišťuje tvorbu nezávislých a dobře ohraničených komponent. Ačkoliv nejčastějším použitím frameworku bude tvorba webových služeb, není vyloučeno jeho použití i na samostatné aplikace (textové nebo GUI), pokud je budeme chtít mít komponentové. Protože každá komponenta Cocoonu je i komponentou z hlediska Avalonu, lze doporučit seznámení s Avalonem všem, kteří chtějí navrhovat a programovat komponenty pro Cocoon. Avalon obsahuje některé komponenty (logovací subsystém, internacionalizace aplikace, konfigurační utility aj.) i několik komponentových kontejnerů (Merlin, Excalibur, Phoenix, Fortress), z nichž každý se hodí pro jiné účely.

Forrest

Forrest je open-source aplikace pro off-line generování celých webů včetně navigace pomocí záložek a menu a PDF reprezentací jednotlivých stránek (ale i celého webu) pro tisk. Ačkoliv je Forrest určen spíše pro publikování technické dokumentace (obsahuje definice pro často používané dokumenty, jako jsou howtos, FAQ, seznamy todo apod.), lze jej použít i pro naprosto obecné webové prezentace. Takto se pomocí Forrestu prezentuje například Winnacunnet High School:

Prezentace Winnacunnet High School

Zdroje informací jsou dokumenty v předepsaném formátu XML (ale mohou to být například i dokumenty pořízené pomocí OpenOffice.org 1.1 Writeru, DocBook, RSS aj.), které jsou (na rozdíl od běžné praxe v Cocoonu) validovány proti DTD. Modularita DTD umožňuje jejich snadné rozšíření. Konfigurační soubory ( skinconf.xml, sitemap.xmap aj.) a stylesheety XSLT jsou validovány taktéž, zde se však používá RELAX NG. Výstup Forrestu lze ovlivňovat pomocí skinů. Několik skinů obsahuje vlastní distribuce Forrestu, ale není problém si požadovaný skin vytvořit.

Logickou strukturu generovaného webu je nutné popsat v souboru  site.xml:

<?xml version="1.0"?>
<site label="Forrest" href="" tab="home"
      xmlns="http://apache.org/forrest/linkmap/1.0">

  <about label="About">
     <index label="Index" href="index.html"/>
     <license label="License" href="license.html"/>
     <your-project label="Using Forrest"
                   href="your-project.html">
        <new_content_type href = "#adding_new_content_type"/>
     </your-project>
     <changes label="Changes" href="changes.html"/>
     <todo label="Todo" href="todo.html"/>
     <live-sites label = "Live sites" href="live-sites.html"/>
   </about>

  ...

</site> 

Tento soubor definuje jednak zdrojové i cílové soubory (každému cílovému souboru html bude odpovídat stejnojmenný zdrojový soubor xml), jednak se z něj automaticky generuje menu pro navigaci mezi stránkami webu.

Práce s Forrestem je celkem příjemná, rozhodně jsem neměl dojem, že je nějak komplikovaná. Forrest umožňuje použití Cocoonu i pro ty autory a tvůrce webu, kteří nepotřebují na svých stránkách interaktivitu webové aplikace, nicméně by přesto chtěli oddělit tvorbu obsahu od jeho prezentace nebo využít ostatních výhod Cocoonu (například generování nejen HTML, ale i CHTML a WML stránek apod.). Myslím si, že množina potenciálních uživatelů Forrestu je nezanedbatelná (sám bych se do ní také zařadil), protože sehnat webový hosting s Cocoonem není nic jednoduchého a rozhodně nic levného, kdežto z nabídek hostingu statických stránek si zřejmě vybere každý. S Forrestem se dá webová prezentace „ladit“ i celkem příjemně a rychle, neboť je zde obsažena i funkce „on-line“ generování stránek.

ForrestBot je nástroj na automatické spouštění Forrestu a automatickou publikaci generovaných souborů na určený server. To umožňuje tvorbu „polodynamických“ stránek, které jsou sice z hlediska webového serveru statické, ale lze je automaticky aktualizovat v čase blížícím se reálnému.

Forrest byl zvolen za standard pro generování dokumentace projektů Apache.

Lenya

Lenya je open-source Content Management System založený na Cocoonu. Obsahuje WYSIWIG editor, takže redaktoři nejsou nuceni učit se XML. Součástí je i administrace systému (sledování systému, správa uživatelů apod.). Tento projekt je prozatím v „inkubátoru“ – není tedy ještě dostatečně zralý pro reálné nasazení. Je však dosti aktivní (od začátku roku bylo vydáno několik verzí), takže bych očekával jeho zralost (nebo alespoň pubertu) v poměrně blízké době.

CASTA\\ CMS

CAST\\ CMS je komerční Content Management System založený na Cocoonu.

OXF

OXF společnosti Orbeon je, dá se říci, „komerční Cocoon“ (či spíše komerční konkurent Cocoonu). Je založen na téměř stejné filozofii tvorby webovských aplikací. Používá taktéž roury (zde pomocí XPL – XML Pipeline Language) založené na událostech SAX. Obsahuje i nativní integraci s oblíbeným frameworkem Struts. Na stránkách společnosti najdeme i rozdíly oproti Cocoonu. OXF přirozeně není open-source.

ict ve školství 24

Popoon

Společnost Bitflux vytvořila svůj Content Management System v PHP. Protože ale se tvůrcům tohoto systému líbil Cocoon (nebo jej pro práci potřebovali), transformovali jej (no, přesněji řečeno, jeho základ) do PHP, nazvali Popoon a uvolnili jako open-source. Popoon používá soubor sitemap.xmap se stejnou syntaxí jako Cocoon (tedy, neobsahuje všechno, roury se ale definují stejným způsobem) a dělá totéž co Cocoon: dynamicky, pomocí XSLT, generuje výstup z XML zdrojů. Komponenty lze psát v PHP.

Závěr

Nechtěl jsem zde popsat všechny známé aplikace Cocoonu (našlo by se ještě několik komerčních portálových frameworků, základy pro wiki web nebo blog a jiné) – je to jen můj subjetivní výběr projektů a produktů, které se mi zdály zajímavé.