Serißl CachΘ Studio vßm v p°φÜtφch m∞sφcφch bude nabφzet
postupn² v²klad prßce se systΘmem CachΘ vΦ. praktick²ch p°φklad∙. JednotlivΘ
dφly zde budou p°ib²vat podle toho, jak budou vychßzet.
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Θ - jako je 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.
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φ, nap°. dokumenty v sekci
webov²ch strßnek
Technologie CachΘ
nebo jednodennφ trΘnink CachΘ
EntrΘe, kter² firma po°ßdß ka₧d² m∞sφc. V₧dy m∙₧ete svΘ informace doplnit
na americk²ch strßnkßch www.intersystems.com
nebo nßs p°φmo kontaktovat zde.
P°edstavujeme vßm prvnφ 3 dφly vΦetn∞ zdrojov²ch k≤d∙. Pro
praktickΘ p°φklady budete pot°ebovat download verze CachΘ 5,
Beta 3. Pod ikonami jsou ke ka₧dΘmu dφlu p°ipraveny zdrojovΘ k≤dy, kterΘ
vhodn∞ ilustrujφ p°φklady z textu.
V∞°φme, ₧e se budete ke CachΘ Studiu se zßjmem vracet.
CachΘ Studio 3
Chcete rock┤n┤roll? Tak se ptß jedna z televiznφch reklam
na cosi, ani nevφm co. No, rock┤n┤roll vßm sice nenabφdnu, ale i s XML si p∞kn∞
za°ßdφte.
V p°edchozφch dφlech naÜeho serißlu jsme se dozv∞d∞li
o objektech a SQL v CachΘ. Nynφ si povφme o dalÜφ z projekcφ dat
podporovan²ch databßzφ CachΘ, a to o XML.
Ne, nebojte se, nebudu do vßs nudit sßhodlouh²mi fakty,
jen p°ipomenu pßr zßkladnφch. XML (EXtended
Markup Language) je jednφm z jazyk∙ celΘ rodiny zalo₧enΘ na specifikaci
SGML.. Z tΘto specifikace pochßzφ mj. jazyk HTML pro tvorbu webov²ch strßnek.
HTML je vÜak vφcemΘn∞ jazyk statick² a nepopisuje ani tak data, jako jejich
grafickou prezentaci na strßnce webovΘho prohlφ₧eΦe. Postupn²m v²vojem, p°idßvßnφm
r∙zn²ch nestandardizovan²ch znaΦek jednotliv²ch tv∙rc∙ webov²ch prohlφ₧eΦ∙
a dynamickΘho modelu strßnky doÜlo k tomu, ₧e HTML se stal pom∞rn∞
komplikovan²m a nep°ehledn²m. Navφc stßle ne°eÜφ strukturßlnφ popis dat
putujφcφch mezi klientem a serverem.
To byly hlavnφ d∙vody pro vznik samostatnΘho jazyka
(respektive mno₧iny jazyk∙) zalo₧en²ch na SGML, ale pojat²ch jednoduÜeji a
zam∞°en²ch na strukturßlnφ popis p°enßÜen²ch dat.
XML se od jin²ch jazyk∙ v jednom aspektu znaΦn∞ liÜφ.
Nikde toti₧ nenφ definovßna mno₧ina klφΦov²ch slov jazyka, je Φist∞ na tv∙rci
aplikace/dokument∙, jakß slova pou₧ije k popisu dat. Existuje pouze definice
pravidel, kterß musφ b²t spln∞na tv∙rcem XML dokument∙, aby takov² dokument byl
platn²m XML dokumentem. Patronßt nad pravidly definujφcφmi XML (a jinΘ
jazyky pou₧φvanΘ v prost°edφ Internetu) mß organizace Worlwide Web Consortium
(W3C), co₧ je sdru₧enφ firem a u₧ivatel∙, kterΘ se sna₧φ o normalizaci na
Internetu.
Chcete-li vytvo°it aplikace kterß si bude vym∞≥ovat data s
okolφm pomocφ XML musφte mφt v²Üe uvedenΘ po₧adavky na pam∞ti. XML dokument
nesmφ b²t jen zm∞tφ XML znaΦek. K tomu, aby se jednalo o dob°e formovan²
XML dokument, musφ mφt urΦitou hierarchii XML znaΦek. Musφ zaΦφnat xml
hlaviΦkou, musφ mφt jednu xml znaΦku zapouzd°ujφcφ cel² dokument za hlaviΦkou.
Tato znaΦka se musφ v dokumentu vyskytovat prßv∞ jednou, vÜechny ostatnφ znaΦky
se musφ nachßzet o ·rove≥ nφ₧e a mohou se libovoln∞ opakovat. Nebudu vßs
zat∞₧ovat teoriφ, na tΘma XML byla napsßna kvanta samostatn²ch Φlßnk∙ a knih.
Jenom struΦn∞:
K dob°e formovanΘmu XML dokumentu existuje dalÜφ dokument,
kter² popisuje v²znam jednotliv²ch znaΦek, aby jim cφlovß aplikace mohla
rozum∞t a sprßvn∞ je interpretovat. Tento dokument se jmenuje DTD (Document
Type Description) a mß jednu nectnost - jazyk DTD sßm toti₧ nedodr₧uje pravidla
XML. V poslednφ dob∞ je proto tento dokument nahrazovßn jin²m XML schΘmatem.
XML schΘma op∞t, stejn∞ jako DTD, popisuje XML znaΦky pou₧itΘ v XML dokumentu,
ale pou₧φvß d∙sledn∞ XML sßmá o sob∞.
K tomu, abyste vytvo°ili XML projekci libovolnΘ
datovΘ t°φdy, staΦφ mßlo. CelΘ kouzlo spoΦφvß v p°idßnφ t°φdy %XML.Adaptor do seznamu nadt°φd, od nich₧ je vaÜe
t°φda odvozena.
Tedy k tomu, aby z naÜφ t°φdy Osoba byla t°φda ovlßdajφcφ XML, je nutno k t°φd∞ %Library.Persistent p°idat t°φdu %XML.Adaptor a vÜe je hotovo.
Obr. 1
Pozn.: Proto₧e Osoba
obsahuje vno°enou t°φdu Adresa, musφme i tΘto
t°φd∞ p°idat %XML.Adaptor do seznamu nadt°φd.
Nynφ m∙₧eme, podobn∞ jako u SQL projekce, upravovat
p°ednastavenΘ chovßnφ XML projekce pomocφ parametr∙ vlastnostφ. Ka₧dß vlastnost
m∙₧e b²t vystavena v XML dokumentu pod libovoln²m jmΘnem odliÜn²m od nßzvu
vlastnosti. Dßle m∙₧e b²t vystavena bu∩ jako samostatnß xml znaΦka, nebo jako
atribut xml znaΦky oznaΦujφcφ cel² objekt. Nßsledujφcφ obrßzek ukazuje n∞kolik
vlastnostφ s r∙zn²m zp∙sobem projekce. Op∞t mßme volbu, zda projekci popφÜeme
slovn∞, Φi pou₧ijeme okno Inspektora a zadßme p°φsluÜn² parametr zde.
Obr .2.
Vidφte, ₧e je mo₧no tΘ₧ danou vlastnost z XML projekce
vylouΦit.
Dob°e, u₧ umφme definovat projekci t°φdy do XML dokumentu.
Jak ale data do XML dokumentu dostaneme? Lehce, nenφ to nic slo₧itΘho. T°φda %XML.Adaptor, a tudφ₧ i ka₧dß t°φda od nφ
odvozenß, mß k dispozici mj. metodu XMLExport,
kterß automaticky vystavφ data danΘ instance (odborn∞ °eΦeno provede
serializaci), jak ukazuje nßsledujφcφ obrßzek:
Obr. 3
Obrßzek ukazuje nejjednoduÜÜφ zp∙sob vyvolßnφ metody XMLExport, a to pomocφ CachΘ konzoly. Metoda XMLExport mß n∞kolik nepovinn²ch vstupnφch parametr∙,
jimi₧ lze modifikovat vrßcen² v²stup. Tato metoda zapisuje do aktußln∞
otev°enΘho za°φzenφ.
Podobn∞ jako lze data vystavit do XML dokumentu pomocφ
metody XMLExport, je lze naΦφst z XML dokumentu
do databßze (provΘst deserializaci) pomocφ metody XMLImport.
Pro vygenerovßnφ DTD nebo XML schΘmatu lze pou₧φt metody XMLDTD nebo XMLSchema.
Pro prßci s mnoha instancemi objekt∙ pomocφ XML rozhranφ
m∙₧eme s v²hodou vyu₧φt XML Resultsetu, co₧ je analogie SQL Resultsetu. Jak ji₧
sßm nßzev napovφdß, XML Resultset vracφ zßznamy ve form∞ XML. V CachΘ se t°φda
poskytujφcφ XML Resultset jmenuje %XML.DataSet.
P°φklad jejφho pou₧itφ je na nßsledujφcφch obrßzcφch:
Obr. 4 (zdrojov² k≤d)
Obr. 5 (v²sledek)
XML projekce je pou₧ita dφky sv²m vlastnostem
i v samotnΘm v²vojß°skΘm studiu CachΘ od verze 5. XML je zßkladem pro
export a import jak cel²ch projekt∙, tak jejich jednotliv²ch Φßstφ. XML je
implementovßna pomocφ knihoven SAX parseru a je k dispozici na vÜech
platformßch, kterΘ SAX podporujφ.
XML je takΘ zßkladem online dokumentace k verzi 5.
Dokumentace vychßzφ z normy DOCBOOK.
WebovΘ slu₧by jsou novou, prudce se rozvφjejφcφ kategoriφ
softwarov²ch komponent. Jejich primßrnφ funkcφ je zprost°edkovßvat komunikaci
mezi r∙zn²mi aplikacemi. Lze v nich hledat analogii k technologiφm typu COM
(spφÜe DCOM), ovÜem zalo₧enou na protokolu HTTP. Jednφm z mo₧n²ch zp∙sob∙, jak
se webov²ch slu₧eb dotazovat a zp∞t od nich zφskßvat v²sledky, je pou₧itφ XML.
OvÜem aby bylo mo₧no pracovat s ve°ejn²mi slu₧bami, bylo nutno nejd°φve
vyvinout vhodn² protokol pro zadßvßnφ dotaz∙ a p°enos v²sledk∙ zp∞t ke
klientovi. SamotnΘ XML nestaΦφ, s tφm lze operovat maximßln∞ v uzav°en²ch vnitrofiremnφch
prost°edφch, kde m∙₧e b²t naopak ₧ßdoucφ, aby protokol byl nesrozumiteln² pro
vn∞jÜφ sv∞t.
Proto vznikl protokol SOAP, je₧ se stal jednotφcφm
protokolem pro p°φstup k webov²m slu₧bßm. Krom∞ tohoto protokolu ovÜem existujφ
i jinΘ protokoly, je₧ jsou specifickΘ pro ten kter² druh Φinnosti (nap°. HIPAA,
à..)
SOAP nenφ m²dlo, jak by mohl nßzev napovφdat, ale zkratka Simple Object Access Protocol. OvÜem i tato zkratka je
zavßd∞jφcφ. SOAP protokol sice jednoduÜe vypadß, ale jakmile se pokusφte pomocφ
SOAP napsat jakoukoliv aplikaci, zjistφte, ₧e se zdaleka nejednß o jednoduchou
zßle₧itost.
K vytvo°enφ webovΘ slu₧by nabφzφ CachΘ interaktivnφ
Üablonu, kterß provßdφ programßtora jednotliv²mi kroky. K vytvo°enφ novΘ web
service je nutno v polo₧ce File
vybrat New->WebService.
Po zadßnφ nßzv∙ balφΦku, slu₧by a jednotliv²ch metod se
automaticky vytvo°φ kostra webovΘ slu₧by. T∞la metod musφte samoz°ejm∞ napsat
sami.
Obr 6.
Obrßzek ukazuje Üablonu pro definici webovΘ slu₧by v
CachΘ. (Jen na okraj, tato Üablona je vytvo°ena pomocφ technologie CachΘ Server
Pages, kterΘ bude v∞novßn n∞kter² z p°φÜtφch dφl∙ serißlu).
Po napsßnφ t∞l metod m∙₧eme naÜi slu₧bu otestovat. K tomu
slou₧φ vestav∞n² web services server.
P°i kompilaci hotovΘ webovΘ slu₧by CachΘ automaticky
vytvo°φ ko°en slu₧by (t°φdy obsahujφcφ popis slu₧by) a pro ka₧dou metodu slu₧by
zalo₧φ novou t°φdu s implementacφ t∞la metody.
Nßmi vytvo°enß webovß slu₧ba nabφzφ 3 metody. Metoda Info vracφ obsah instance t°φdy Osoba na zßklad∞ zadanΘho ID. Metoda Vytvor vytvß°φ novou instanci osoby na zßklad∞
n∞kolika vstupnφch parametr∙ (vlastnostφ t°φdy) a koneΦn∞ metoda Pocet vracφ poΦet existujφcφch instancφ osob.
Chceme-li si prov∞°it funkci jednotliv²ch metod slu₧by,
staΦφ jen ve studiu vybrat z menu polo₧ku View->Web
Page a otev°e se nßm jednoduch² klient s rozhranφm a s nßvodem
k pou₧itφ.
Obr. 7
Vyvolßme nap°. metodu Vytvor,
jejφ strßnka bude vypadat takto:
Obr. 8
Vypln∞nφm jednotliv²ch polo₧ek formulß°e a stiskem
tlaΦφtka Invoke se provede metoda
slu₧by a slu₧ba nßm vrßtφ bu∩ status OK (1), nebo chybovΘ hlßÜenφ pokud
nap°φklad zadßme datum ve ÜpatnΘm tvaru, obojφ ve formßtu SOAP.
K tomu, abyste mohli libovolnou webovou slu₧bu
zavolat ve svΘ aplikaci, musφte znßt jejφ rozhranφ. To je popsßno pomocφ jazyka
WSDL (Web Service Definition Language), kter² ve form∞ SOAP
protokolu popisuje vÜechny parametry a vstupy a v²stupy danΘ slu₧by. JednotlivΘ
nßstroje pro tvorbu SOAP klient∙ umo₧≥ujφ v r∙znΘm stupni dokonalosti samy
naΦφst WSDL soubor danΘ slu₧by a poskytujφ pak komfortnφ prost°edφ na vysokΘ
·rovni (nap°. MS SOAP Toolkit) nebo si musφte strukturu slu₧by p°eΦφst ze
souboru WSDL sami.
CachΘ automaticky WSDL generuje a m∙₧ete si jej
prohlΘdnout nap°φklad kliknutφm na odkaz vpravo naho°e na hlavnφ strßnce webovΘ
slu₧by (viz. obr. 7)
Zßv∞rem si ukß₧eme volßnφ webovΘ slu₧by a metody Pocet pomocφá
Javy.
V obou p°φpadech je d∙le₧itΘ zadat sprßvnou cestu ke
slu₧b∞, kterß zde nenφ statickou URL, ale volß se jako t°φda CachΘ s p°φponou
.cls.
Obr. 9
Obrßzek znßzor≥uje Φßst IDE JBuilderu s fragmentem
k≤du a v²stupem na konzole.
V²sledek dotazu je nßsledujφcφ: (zachycen pomocφ nßstroje
Trace z MS SOAP Toolkitu)
Obr. 10
P°φÜt∞ se budeme v∞novat CachΘ ObjectScript a tΘ₧ se lehce
dotkneme CachΘ Basicu.
Poznßmka: zdrojovΘ k≤dy p°φklad∙ obsahujφ takΘ volßnφ metody Pocet slu₧by pomocφ MS SOAP Toolkitu ve Visual Basicu.