Caché Studio 5
© Daniel Kutáč,
InterSystems CZ, 2002
-- předchozí
--
Ú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ástroje umožň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.
-- pokračování
--
|