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.
|