Seriál Caché Studio

díl 5

© Daniel Kutáč, InterSystems CZ, 2002

 

Úvodem

Seriál Caché Studio nabízí postupný výklad práce se systémem Caché vč. praktických příkladů. V ucelených tématech jednotlivých dílů se jejich autor -
ing. Daniel Kutáč, sales engineer InterSystems B.V. - věnuje možnostem univerzálního aplikačního a databázového serveru Caché vč. posledních novinek. Objasňuje v čem jsou hlavní výhody Caché - např. rychlost a mohutnost databázového stroje, rychlost vývoje, rozšiřitelnost aplikací, snadná kooperace s různými technologiemi a pružná reakce na poslední technologické trendy. Ke každému dílu jsou připraveny zdrojové kódy, které vhodně ilustrují příklady z textu.

Seriál Caché Studio je vhodným doplňkem k ostatním studijním nástrojům, které společnost InterSystems B.V. nabízí: dokumenty v sekci webových stránek Technologie Caché, tištěné materiály nebo jednodenní trénink Caché Entrée, který firma pořádá každý měsíc: http://www.intersystems.cz/.

Vždy můžete své informace doplnit na amerických stránkách http://www.intersystems.com/ nebo nás přímo kontaktovat info@intersystems.cz.

Věříme, že se budete ke Caché Studiu se zájmem vracet.


 

Úvod do technologie Caché Server Pages

Každý systém pro tvorbu aplikací, ať je sebelepší, není dnes dobře prodejný, pokud neobsahuje technologie pro psaní webového rozhraní aplikací. Caché tento obchodní předpoklad splňuje, jelikož obsahuje mocnou technologii pro psaní dynamických webových aplikací.

Caché, jakožto serverově orientovaný systém, neobsahuje grafické prostředí pro tvorbu dokonalých webových stránek. (tuto funkci necháváme jiným), ale obsahuje veškeré nástroje pro tvorbu serverové strany aplikační logiky webových stránek.

Technologie, která výše uvedené nástrojeumožňuje, se nazývá Caché Server Pages, zkráceně CSP.

Jak to vlastně funguje

Caché Server Pages je založena na podobném principu jako ASP.NET nebo JSP. Jedná se o technologii pro tvorbu skriptů vykonávaných na aplikačním serveru. Podobně jako výše uvedené ASP.NET nebo JSP je stránka při prvním dotazu vůbec zkompilována do jazyka příslušné databázové platformy, v našem případě do Caché ObjectScriptu. Při dalších dotazech se již volá zkompilovaný a tedy rychlý kód.

Graficky tento proces znázorňuje následující obrázek.

Obr. 1


Důležitou komponentou v uvedeném schématu je CSP brána. Je to vlastně komponenta, jenž je zodpovědná za přesměrování dotazu z web serveru na aplikační server Caché a naopak při zpáteční cestě. CSP brána existuje buď jako ISAPI/NSAPI/CGI rozhraní, nebo v případě serveru Apache, též jako modul který je možno zkompilovat do jádra Apache serveru. Všechny servery podporující některé z těchto rozhraní tedy zároveň podporují Caché Server Pages.

 

CSP stránky

CSP stránky jsou v podstatě klasické webové stránky, rozšířené o sadu speciálních značek a skripty s vykonáváním kódu na straně serveru.

Pro psaní CSP stránek je možno použít nástroj Caché Studio, s nímž jsme měli možnost se již v minulých dílech našeho seriálu alespoň povrchně se seznámit.

Pro vytvoření nové CSP stránky stačí ve studiu otevřít v menu položku File->New a v zobrazené nabídce vybrat "Cache Server Pages". Poté se vygeneruje jednoduchá kostra webové stránky. Nyní je již jen na programátorovi, jak s novou stránkou naloží.

 

CSP třídy

Existuje ještě jeden způsob vytváření webových stránek, a to prostřednictvím definování tříd odvozených od třídy %CSP.Page.

Tento způsob tvorby stránek poskytuje vývojáři větší volnost při psaní metod stránky. Tato volnost je ale vykoupena nutností psát kód ručně.

Ostatně i stránky vytvořené editováním CSP souborů se převádějí při kompilaci do tříd odvozených od %CSP.Page.

 

CSP značky

Základem pro tvorby dynamických CSP stánek je sada předdefinovaných značek (tagů). Tyto značky jsou definovány pomocí XML a při práci s nimi se chovají jako jakékoliv jiné HTML značky. Mají název, volitelné atributy.

Caché CSP značky lze rozdělit do několika skupin podle účelu.

 

Základní značky

Základními značkami jsou takové, které propojují HTML stránku s aplikačním (potažmo databázovým) serverem. Příkladem základních značek jsou např. <csp:object>, <csp:class>. K základním značkám lze též řadit atribut CSPBIND.

Značka <csp:object> má atribut classname, který říká, jaká třída je svázána s daným formulářem na stránce, dále atribut name, který je názvem reference (OREF) na instanci dané třídy a nakonec atribut objid, který udává způsob získání ID zobrazené instance třídy.

V případě použití značky <csp:object> je nutno použít na stránce formulář <form> a přiřadit mu atribut cspbind s hodnotou rovnou atributu name značky <csp:object>.

 

Řídící značky

Řídícími značkami je množina značek řídích běh programu, zde CSP stránky. Mezi tyto značky patří např.: <csp:if>, <csp:while>, <csp:loop>.

 

Ostatní značky

K ostatním značkám patří například značky pro vykovávání dotazů do databáze, příkladem takové značky může být například <csp:query>.

 

Vlastní značky - pravidla

Pro vývoj komplexních aplikací zpravidla vývojářům sada předdefinovaných značek nedostačuje a vyvstává potřeba mít možnost si vytvářet značky vlastní, ať už pro jednodušší práci s grafickým designem aplikace nebo pro tvorbu vlastní aplikační logiky.

Caché poskytuje možnost definovat vlastní CSP značky, tzv. pravidla. Základem definice značek je sada XML značek. Definice CSP pravidla sestává z několika bloků. V prvním se definuje název pravidla a jeho popis a tvar značky. Následuje úsek deklarace atributů a dále úsek definující akce, které se mají provést při kompilaci vlastního pravidla a též uživatelské stránky obsahující dané pravidlo.

Následující obrázek ukazuje jednoduché pravidlo pro zobrazení zprávy s informací o copyrightu.

Obr. 2

Skriptování

K dynamickému generování obsahu stránky před jejím zobrazením v prohlížeči je možno použít klasický kontejner <script>. Například takovýto skript vnořený do těla stránky zobrazí aktuální datum serveru:

 

Výrazy Caché ObjectScriptu

V libovolném místě CSP stránky je možno vyhodnotit jakýkoliv platný výraz Caché ObjectScriptu pomocí konstrukce #(Výraz Caché ObjectScriptu)#.

Například úsek kódu z předchozí kapitoly by vypadal takto:


Události

Správná dynamická webová aplikace musí být schopna reagovat na různé uživatelem vyvolané události. Programátoři mohou směrovat dynamicky volané události (hyper events) do Caché pomocí syntaktické konstrukce #server()#

Tuto konstrukci je možno použít nejen z HTML kódu, ale též v rámci kódu Javaskriptu.

Např.:

Předávaným parametrem je v tomto případě název Caché třídy a metody, spolu se seznamem parametrů metody.

Metody mohou být definovány mimo danou CSP stránku v např. registrovaných Caché třídách, ale též mohou být součástí CSP stránky samotné.

Takto deklarovaná metoda se přeloží spolu s CSP stránkou do příslušné třídy a stane se její metodu.

Z metod Caché CSP stránek je možno volat zpět do javascriptu a vnořovat úseky javascriptu do Caché ObjectScriptu. Tím se zajistí například dynamické změny obsahu textových polí aj.

Obr. 3


Správa stavu aplikace

Při psaní rozsáhlých aplikací sestávajících se z mnoha mezi sebou komunikujících stránek je nutno vyřešit problém předávání dat mezi těmito stránkami. Na rozdíl od programování v klasickém prostředí klient/server je totiž prostředí inter/intranetu bezestavové. Neumožňuje tedy automaticky udržovat informaci o původci s stavu spojení mezi klientem na straně prohlížeče a serverem.

Tato situace se řeší pomocí různých cookies a tokenů předávaných spolu s posílanými stránkami. Zajistit, aby komunikace mezi prohlížečem a serverem byla ochráněna před nežádoucími útoky, je cílem všech tvůrců aplikací provozovaných na webu.

Caché server pages podporují automatické generování tokenů a případně cookies pro předávání informací o stavu připojení a aplikace.

Pro předávání dat mezi stránkami mohou programátoři používat objekty DOM. Caché implementuje Session, Request a Response pomocí tříd %CSP.Session, %CSP.Request a %CSP.Response.

Tvůrci aplikací zpravidla pracují s prvními dvěma třídami, na ně se v CSP aplikacích odkazují pomocí referencí %session a %request.

Obě třídy mají mj. vícerozměrnou vlastnost Data, která slouží k nastavování hodnot aplikačních proměnných a k jejich čtení.
Následující kód demonstruje použití uvedených objektů.

Obr. 4 - dotaz

Obr. 4 - odpověď

Samozřejmostí je možnost kódování dotazů pomocí označení stránky jako kódované a též jejího znepřístupnění mimo CSP aplikaci nastavením stránky jako privátní.

 

Formuláře

Caché nabízí velice účinného pomocníka při návrhu CSP stránek propojených s persistentními třídami. Jedná se o průvodce návrhu formulářem, který je k dispozici v menu Insert->Form Wizard.

Jeho použití je velice jednoduché, stačí jen vytvořit novou CSP stránku, označit text v kontejneru <body> a spustit průvodce. Průvodce sám pozná referenční a výběrové atributy a přizpůsobí jim obsah formuláře. Stejně tak pozná obrázky a sestaví kód pro načítání jejich obsahu z databáze. V projektu, který je elektronickou přílohou tohoto dílu, je zahrnuta stránka osoba.csp, která demonstruje výsledek použití průvodce.

 

Šablony

Šablony představují další úroveň ulehčení vývoje CSP1 aplikací. Jedná se vlastně o nadstavbu nad CSP pravidly. Jejich cílem je jednak ulehčit programátorovi v tom smyslu, že si nemusí pamatovat přesný tvar značek a jejich atributy, jednak dovolují (u komplexních pravidel) zautomatizovat tvorbu předdefinovaných celých CSP stránek.

Šablony jsou dvojího druhu; neinteraktivní a interaktivní, obojí jsou přístupná z menu Tools->Templates

Neinteraktivní šablony sestávají z jedné CSP stránky a jsou uvozeny značkou <csp:StudioSimpleTemplate> následovanou na dalších řádkách kódem, který se vykoná při vložení šablony do stránky

Obr. 5

Tato šablona vloží do označeného místa CSP stránky aktuální datum.

Interaktivní šablony jsou složitější, sestávají ze dvou CSP stránek. První z nich je uvozena značkou <csp:StudioInteraktiveTemplate> a obsahuje formulář se všemi požadovanými vstupními údaji. Tyto vstupní údaje jsou pak zpracovány druhou CSP stránkou tvořící definici šablony. Tato stránka je uvozena značkou <csp:StudioGenerateTemplate> a obsahuje aplikační logiku šablony.

Šablony je dokonce možno vložit do seznamu položek projektu volaných z menu File->New, a to přidáním klíčového slova new na konec uvozující csp značky šablony.

 

WAP & XML a jiné

CSP technologie umožňuje nejen psát klasické webové stránky a aplikace, podporuje též ostatní standardy používané v internetové a mobilní komunikaci. Těmi hlavními jsou WAP a XML.

Rozdíl proti psaní klasických (D)HTML stránek v CSP a uvedenými spočívá pro vývojáře pouze v tom, že soubor tvoří pomocí WML značek (pro WAP) nebo libovolných (ale samozřejmě předem dohodnutých) XML značek.

Pro správnou interpretaci výsledného kódu musí ještě uvést příslušný MIME typ stránky, například pomocí značky <csp:content type="text/xml">. (zde pro XML výstup)

Jak vidíte, je to jednoduché.

 


Příště se budeme věnovat popisu propojení Caché s technologiemi COM a .NET.


1 Z minulých dílů víme, že šablony lze použít i pro tvorbu tříd a rutin.