Serißl CachΘ Studio

"Krok za krokem k dokonalosti."

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

XML

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.

Trocha historie nikoho nezabije

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.

 

Prßce s ôΦist²mö XML

 

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

 

Definice XML projekce t°φdy

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.

Vystavenφ dat v XML

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.

XML Resultset

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)

Pou₧itφ XML v CachΘ 5

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.

Web Services

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

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.

Vytvo°enφ Web Service

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.

CachΘ jako Web Services Server

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.

WSDL

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.