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.