Delphi napot°etφ

Od prvnφ verze Delphi na ja°e roku 1995 uplynuly ji₧ Φty°i roky. ┌sp∞ch tΘto prvnφ verze podnφtil velk² boom na trhu nßstroj∙ typu RAD - nßstroj∙ pro rychl² v²voj aplikacφ. Firma Borland International tak otev°ela dalÜφ novΘ patro budovy software. Vzßp∞tφ za nφ do n∞ho vyÜplhala i celß °ada dalÜφch firem, aby sv²mi produkty posouvaly la¥ku ·rovn∞, ka₧dß sv²m zp∙sobem, stßle o kousek v²Üe.



┌vod

     Aby si firma Borland udr₧ela svou pozici, kontrovala v dalÜφch letech, v₧dy op∞t na ja°e, verzemi Delphi 2 a Delphi 3, kterΘ poka₧dΘ p°inesly celou °adu novinek. Po ·sp∞ÜnΘm p°ijetφ produktu Delphi vyu₧ila vzßp∞tφ firma Borland nov∞ otev°enΘho prostoru a rozÜφ°ila tuto technologii na dalÜφ v²vojovΘ (C++) i aplikaΦnφ (AS/400, SAP) platformy. Nßr∙st palety produkt∙ a Üφ°e jejφho zßb∞ru za poslednφ t°i roky jsou obdivuhodnΘ, ale vznikß zde i otßzka, zda firma nadßle udr₧φ Φi dokonce prohloubφ i dosavadnφ kvalitativnφ rozvoj.

     Zatφm nevφme, zda se takΘ letos doΦkßme dalÜφ novΘ verze Delphi (op∞t se blφ₧φ jaro - dnes, kdy dokonΦuji tuto recenzi je 15. b°ezna) a tak se nßsledujφcφm Φlßnkem vracφme k poslednφ platnΘ verzi - k mutaci oficißln∞ nazvanΘ Delphi 3 Client/Server Suite.

     TΘm∞° ka₧d² Φlov∞k na sv∞t∞ znß genißln∞ jednoduchou a v²sti₧nou rovnost E = mc2. Naproti tomu poΦet lidφ, kte°φ rozum∞jφ podstat∞ rovnosti a tomu, co se za nφ skr²vß, je asi nep°φmo ·m∞rn² poΦtu t∞ch, kte°φ vzorec znajφ. TΘm∞° ka₧d² programßtor a mnoho u₧ivatel∙ poΦφtaΦ∙ znß smysl jednoduchΘ a v²sti₧nΘ zkratky C/S. Naproti tomu poΦet lidφ, kte°φ rozum∞jφ podstat∞ zkratky a tomu, co se za nφ skr²vß, je asi nep°φmo ·m∞rn² poΦtu t∞ch, kte°φ zkratku znajφ.

     Analogie asi nenφ zcela na mφst∞. SkuteΦnostφ vÜak z∙stßvß, ₧e to, co se skr²vß za pojmem C/S neboli klient/server, p°φpadn∞ internet nebo intranet, je dnes v podstat∞ jednφm z vrcholk∙ pyramidy mo₧nostφ, kterΘ v²poΦetnφ technika a modernφ programovΘ prost°edky poskytujφ. V celΘ svΘ Üφ°i v sob∞ integruje a pokr²vß vÜechny nejmodern∞jÜφ programovacφ techniky a dokß₧e se dφky jim vyrovnat s tΘm∞° jak²mikoliv technick²mi prost°edky. Z t∞chto skuteΦnostφ plyne i fakt, ₧e v²vojov² prost°edek, kter² umo₧nφ v²voj kvalitnφ aplikace klient/server, musφ b²t souΦasn∞ nßstrojem, kter² se dokß₧e s t∞mito po₧adavky vyrovnat. Krom∞ toho je zde i °ada dalÜφch po₧adavk∙. Je t°eba, aby v²vojov² prost°edek programßtor∙m prßci usnadnil, aby v²voj probφhal rychle, aby byl co nejmΘn∞ pracn², aby byl p°ehledn², aby.... A takto by se dalo jeÜt∞ chvφli pokraΦovat. Pokusme se podφvat na to, jak se s t∞mito "aby" vyrovnala vedoucφ firma v oblasti v²vojov²ch prost°edk∙ - firma Borland - pomocφ "nejtlustÜφho brat°φΦka" z rodiny Delphi 3, mutace Client/Server Suite.

     Krom∞ v²razn∞ vyÜÜφ ceny je dalÜφch rozdφl∙ mezi mutacemi professional a client/server celß °ada. V dalÜφm textu se podφvßme jak "obtφ₧nΘ" je pou₧itφ t∞chto nov²ch prvk∙, resp. alespo≥ t∞ch hlavnφch z nich - rozhodovacφch kostek, vφcevrstv²ch databßzov²ch aplikacφ, internetov²ch aplikacφ a utilit SQL Monitor a SQL Explorer.


Rozhodovacφ kostka

     Vytvo°enφ tabulky, kde jsou detailnφ informace se souΦty za r∙znΘ ·rovn∞, je sice Φastß a obvyklß, ale nep°φliÜ p°φjemnß a nep°φliÜ oblφbenß programßtorskß prßce. Pro dneÜnφ mana₧ery a vedoucφ pracovnφky je pot°eba takov²ch informacφ Φasto ₧ivotn∞ d∙le₧itß pro chod firmy - vΦasnΘ informace mohou rozhodnout o jejφm bytφ Φi nebytφ. Pokud vznikne z n∞jakΘho d∙vodu pot°eba novΘho pohledu na informace, pak m∙₧e b²t doba k "naprogramovßnφ" novΘ sestavy nebo tabulky p°φliÜ dlouhß a nov² pohled na vztah mezi informacemi m∙₧e b²t v okam₧iku dodßnφ ji₧ bezcenn².

Paleta pro Decision Cube
     Obr.1. Paleta pro Decision Cube.

     SouΦßstφ modifikace C/S je nov² prost°edek, nazvan² Decision Cube. Principem komponenty je zobrazenφ dat z p°ipojenΘho SQL dotazu ze vÜech mo₧n²ch pohled∙ a zßvislostφ. ╚ili lze °φci, ₧e pokud dan² SQL dotaz obsahuje po₧adovanß data, lze jejich vzßjemn² vztah zobrazit pomocφ Decision Cube, a to jak ve form∞ tabulky a p°φsluÜn²ch souΦt∙, tak i prost°ednictvφm p°ipojenΘho grafu. JedinΘ, co k "naprogramovßnφ" pot°ebujete, je posklßdat na formulß° komponenty uvedenΘ na obrßzku 1, propojit je nastavenφm jejich vlastnostφ a nakonec je t°eba definovat p°φluÜn² SQL dotaz.

     Nasklßdßme zmφn∞nΘ komponenty na formulß° a p°ipojφme jednoduchou paradoxovskou tabulku: Tabulka parametr∙

P°ipojenφ tabulky se provede jednoduÜe klepnutφm prav²m tlaΦφtkem myÜi na komponentu DecisionQuery a volbou Decision Query Editor. Zde se zvolφ databßze, vybere tabulka a nastavφ se polo₧ky, kterΘ budou urΦovat dimenze (°ßdky a sloupce) a kterΘ se budou jako hodnoty zobrazovat v rastru a v grafu.

Editor SQL dotaz∙ pro Decision Cube
     Obr.2. Editor SQL dotaz∙ pro Decision Cube.

     P°i definici se automaticky vytvß°φ SQL dotaz, kter² si m∙₧ete prohlΘdnout, resp. i upravit na zßlo₧ce SQL Query. Zm∞ny, kterΘ tam ud∞lßte, se automaticky projevφ i na zde zobrazenΘ zßlo₧ce. Zm∞ny provßd∞jte obez°etn∞, proto₧e chyba v SQL p°φkazu m∙₧e snadno vΘst k havßrii programu.

     K formulaci SQL dotazu m∙₧ete vyu₧φt i program Query Builder (viz tlaΦφtko vlevo dole na obr. 2). Query Builder je vhodn² p°edevÜφm v p°φpadech, kdy sklßdßte SQL dotaz z vφce tabulek.

     DalÜφ zm∞na ji₧ nenφ nutnß a slou₧φ jen k ·prav∞ zobrazovan²ch nßzv∙ polo₧ek. Klepnutφm pravΘho tlaΦφtka myÜi na komponentu DecisionCube a volbou Decision Cube Editor dostanete nabφdku polo₧ek (obr. 3) a m∙₧ete upravit n∞kterΘ parametry zobrazenφ. Druhß zßlo₧ka obsahuje pouze informace o pam∞¥ov²ch nßrocφch komponenty.

Editor nastavenφ Decision Cube
     Obr.3. Editor nastavenφ Decision Cube.

     Tφm jsou vÜechny nutnΘ kroky hotovΘ a p°ekladem zφskßte hotov² program se zobrazenφm databßze podobn²m jako na obrßzku 4. Krom∞ zmφn∞n²ch nastavenφ je mo₧no provΘst samoz°ejm∞ nastavenφ celΘ °ady dalÜφch parametr∙, jak u grafu, tak i u vÜech ostatnφch komponent.

     Na tom, jak jsou data zobrazena, nenφ zdßnliv∞ nic zvlßÜtnφho. Cel² vtip je skryt v komponent∞ DecisionPivot, kterß je na obrßzku 4 v hornφ Φßsti. Vlastnosti tΘto komponenty umo₧≥ujφ "vypφnat" a "zapφnat" jednotlivΘ dimenze zobrazenφ (zde okres, mesto a kraj), p°esunovat dimenze mezi °ßdky a sloupci (oznaΦeny vertikßlnφ a horizontßlnφ m°φ₧kou), volit polo₧ky k zobrazenφ (zde poΦet obyvatel a poΦet nezam∞stnan²ch) a v rßmci jednΘ dimenze si m∙₧ete zvolit, zda chcete zobrazit jednu konkrΘtnφ polo₧ku v rßmci dimenze nebo vÜechny polo₧ky. Tyto volby m∞nφte bu∩ klepnutφm levΘho tlaΦφtka myÜi (zapnutφ/vypnutφ), nebo pravΘho tlaΦφtka (ostatnφ volby). VeÜkerΘ zm∞ny, kterΘ si takto zvolφte, se samoz°ejm∞ okam₧it∞ promφtajφ i do p°ipojenΘ tabulky a grafu. Zapφnat a vypφnat dimenze m∙₧ete i klepnutφm na plus a minus na tabulce. Pikantnφ pak navφc m∙₧e b²t situace, kdy p°φkazem SQL, kter² tvo°φ zdroj dat pro zobrazenφ, propojφte nap°φklad n∞kolik tabulek a n∞kterΘ z nich jsou t°eba na serveru v jinΘm m∞st∞ a jejich obsah je p°enßÜen internetem.

     Z tohoto p°φkladu je vid∞t, ₧e mana₧erskΘ zobrazenφ informacφ z tabulek obsahujφcφch pot°ebnΘ informace lze velmi rychle naprogramovat. I v p°φpad∞, ₧e vznikne pot°eba n∞jakΘho novΘho nßhledu na data, lze snadno a doslova "na poΦkßnφ" vytvo°it nßhled nov².

P°φklad zobrazenφ dat pomocφ komponent palety Decision Cube
     Obr.4. P°φklad zobrazenφ dat pomocφ komponent palety Decision Cube.

     Podobn² prost°edek m∞la firma Borland v tabulkovΘm procesoru "Quatro" (v poslednφ verzi p°ed jeho prodejem). K t∞mto komponentßm nenφ dodßvßn zdrojov² k≤d, Φili je z°ejmΘ, ₧e si chce firma jeÜt∞ n∞jakou dobu asi z konkurenΦnφch d∙vod∙ podr₧et algoritmus pod pokliΦkou.


VφcevrstvΘ databßzovΘ aplikace

     V p°edchozφch verzφch Delphi se v souvislosti s aplikacφ C/S mluvilo v₧dy o dvou slo₧kßch aplikace. Tomu ostatn∞ odpovφdß i oznaΦenφ klient/server. V tΘto verzi auto°i umo₧nili vytvß°et aplikaci, kterß mß vφce ne₧ dv∞ vrstvy. To p°inßÜφ celou °adu nov²ch aspekt∙. Asi hlavnφm prvkem, kter² tuto technologii umo₧nil, je DCOM. Genealogie tohoto pojmu nenφ dlouhß, je spojena s firmou Microsoft a s mφrn²m zmatenφm pojm∙.


COM a DCOM

     Na zaΦßtku byl p°enos dat mezi dv∞ma aplikacemi pomocφ Clipboardu. Ten byl i v zßkladech nßsledujφcφ technologie - DDE (Dynamic Data Exchange). RozÜφ°enφm tΘto techniky vznikß technologie OLE (Object Linking and Embedding). Ta umo₧≥uje kopφrovat data z jednΘ aplikace (OLE server) do druhΘ (OLE klient), p°iΦem₧ tato data mohou b²t p°ipojena ke klientskΘ aplikaci vlo₧enφm (embedding) nebo odkazem (linking). Clipboard byl vyu₧φvßn i p°i tΘto technologii, jejφm₧ "ideov²m" zßkladem se stala specifikace COM (Component Object Model) firmy Microsoft. Na binßrnφ ·rovni definovanΘ rozhranφ umo₧nilo propojenφ objekt∙, kterΘ jsou napsßny v r∙zn²ch jazycφch a pracujφ na r∙zn²ch hardwarov²ch i softwarov²ch platformßch . Snahy po vylepÜenφ OLE vedly k definici OLE2. To sice mß podobn² nßzev a je kompatibilnφ s vlastnostmi OLE, koncepΦn∞ se vÜak od OLE liÜφ. Jeho roÜφ°enφm pak vznikß OLE Automation a OLE Controls. V∙dΦφ myÜlenkou t∞chto pracφ u Microsoftu je snaha, aby operaΦnφ systΘm byl tvo°en °adou objekt∙, kterΘ jsou volßny na zßklad∞ obsahu dokument∙ slo₧en²ch z r∙zn²ch komponent, ani₧ by u₧ivatel musel explicitn∞ tyto objekty znßt a sßm je volat.

     Dnes se pro objekty postavenΘ na technologii OLE Controls (d°φve znßmΘ jako OCX) pou₧φvß oznaΦenφ ActiveX a pro ostatnφ se op∞t pou₧φvß pojem OLE, p°iΦem₧ pojmy OLE a COM se v praxi Φasto zam∞≥ujφ. Zatφm poslednφm "jedl²m" ovocem, kterΘ se Microsoftu na tomto stromeΦku poda°ilo vyÜlechtit, je DCOM (Dynamic COM). Tak je oznaΦena technologie, kterß rozÜi°uje COM o schopnost spoluprßce p°i p°enßÜenφ dat mezi aplikacemi v sφti.


VφcevrstvΘ aplikace

     Vrߥme se nynφ k jedno-, dvou- a vφcevrstv²m aplikacφm. Shr≥me op∞t struΦn∞, co nßm tyto varianty p°inßÜejφ a v Φem jsou jejich hranice mo₧nostφ.

     Aplikace jednovrstvß obsahuje vÜe, co pot°ebuje pro prßci s daty, v jednom programu a na jednom poΦφtaΦi. V²hodou aplikace je jejφ kompaktnost a relativnφ bezpeΦnost. Nev²hodou je obvykle zßvislost na hardwaru a operaΦnφm systΘmu, malß technologickß p°izp∙sobitelnost a zßvislost na objemu dat. Tato varianta byla dominantnφ na sßlov²ch poΦφtaΦφch.

     S rozvojem hardwaru i softwaru, s p°φchodem PC a soustavn²m zvyÜovßnφm jejich v²konu, kapacit pam∞tφ a dalÜφch parametr∙, p°ichßzφ ke slovu architektura klient/server. Dochßzφ k odd∞lenφ logiky zpracovßnφ dat a styku s u₧ivatelem od vlastnφho ulo₧enφ a obhospoda°enφ a zabezpeΦenφ fyzickΘho ulo₧enφ dat . Prvnφ se stalo obsahem klientskΘ Φßsti aplikace a druhΘ se stalo serverovou Φßstφ aplikace. Jedna klientskß Φßst pak obvykle sφdlφ na jednom PC a na serveru pak sφdlφ databßzov² systΘm, p°iΦem₧ server b²vß k dispozici v∞tÜφmu poΦtu klient∙ souΦasn∞. V²hodou je zjednoduÜenφ v²voje klientskΘ Φßsti aplikace, kterß se nemusφ bezprost°edn∞ starat o ulo₧enφ dat. Server na sebe p°ebφrß celou °adu standardnφch Φinnostφ a dßvß u₧ivateli k dispozici data ve tvaru a struktu°e, v jak²ch si je u₧ivatel vy₧ßdß a zajiÜ¥uje, aby si jednotlivΘ klienty navzßjem "nep°ekß₧ely". Rozd∞lenφ souΦasn∞ dovoluje velkou Ükßlovatelnost hardwaru. Klienty mohou mφt mΘn∞ v²konn² hardware, pro server se pou₧ije hardware podle objemu databßze a pokud dojde k jejφmu podstatnΘmu zv∞tÜenφ, staΦφ zam∞nit server za odpovφdajφcφ v²konn∞jÜφ, ani₧ by se to dotklo klient∙. Tato varianta byla zßkladnφm konceptem i v p°edchozφch verzφch Delphi.

     ProblΘmy v dvouvrstvΘ konfiguraci systΘmu zpracovßnφ C/S jsou minimßlnφ a souvisejφ spφÜe s bezpeΦnostnφmi aspekty. V∞tÜφ problΘmy mohou vznikat spφÜe a₧ p°i velk²ch objemech a poΦtech databßzφ. P°esto jsou v mnoha ohledech aplikace t°φ- a vφcevrstvΘ v²hodn∞jÜφ a efektivn∞jÜφ. P°edevÜφm aplikace je rozd∞lena do nejmΘn∞ t°φ logicky samostatn²ch Φßstφ (op∞t to klasickΘ programßtorskΘ heslo "rozd∞l a panuj"), je tedy p°ehledn∞jÜφ a "Φiteln∞jÜφ". V zßkladnφm tvaru jde o vrstvu prezentaΦnφ na stran∞ klientu (po°izovßnφ, zobrazovßnφ sestav, ...), aplikaΦnφ server (obchodnφ pravidla, transformace, zabezpeΦenφ sprßvnosti, ...) a server, zabezpeΦujφcφ prßci s daty v konkrΘtnφch databßzφch. Prost°ednφ vrstvu lze v p°φpad∞ pot°eb dßle d∞lit (nap°φklad m∙₧e b²t zvlßÜ¥ obchodnφ logika a zvlßÜ¥ zabezpeΦenφ) a tφm vznikajφ vφcevrstvΘ aplikace. V²hody tΘto koncepce jsou ji₧ na prvnφ pohled p°ekvapujφcφ. P°edevÜφm tedy krom∞ ji₧ zmφn∞nΘ Φitelnosti je to mo₧nost tvorby takzvan²ch "tenk²ch klient∙" p°enesenφm kritick²ch Φßstφ aplikace na aplikaΦnφ server. Ten pak m∙₧e sφdlit na samostatnΘm poΦφtaΦi nebo na stejnΘm poΦφtaΦi jako server v zßvislosti na velikosti databßze a slo₧itosti aplikacφ. AplikaΦnφ server slou₧φ pro klientskΘ aplikace a p°i zm∞n∞ algoritm∙ nenφ t°eba tyto zm∞ny promφtat do celΘ °ady klient∙, ale jen do jednoho aplikaΦnφho serveru. Velmi v²znamnou v²hodou je mo₧nost p°enesenφ obsahu kontrol a ulo₧en²ch procedur na aplikaΦnφ server a tφm snφ₧enφ nebo zruÜenφ zßvislosti aplikace na konkrΘtnφ databßzi. Rozd∞lenφ Φinnostφ do vφce Φßstφ zvyÜuje snadnost ·dr₧by a p°i sprßvnΘm nßvrhu i pr∙chodnost aplikace. Nev²hodou m∙₧e b²t urΦitß slo₧itost struktury aplikace pro u₧ivatele, kter² d°φve m∞l jeden program na jednom poΦφtaΦi, vedle programu m∞l data a v∞d∞l co kde je, zatφmco nynφ mß k dispozici pouze klientskou Φßst aplikace a musφ se spolehnout, ₧e vÜe pob∞₧φ tak, jak mß. V p°φpad∞ problΘmu musφ b²t k dispozici odbornφk, kter² je schopen do systΘmu sßhnout.


T°φvrstvß aplikace v Delphi 3

     VÜe, co v tΘto kapitole bylo dosud uvedeno, si lze samoz°ejm∞ mnohem podrobn∞ji a p°esn∞ji p°eΦφst v celΘ °ad∞ dalÜφch Φlßnk∙ v Φasopisech, knihßch i na internetu. Hlavnφmi d∙vody, proΦ se o t∞chto skuteΦnostech zmi≥uji, je jednak snaha alespo≥ naznaΦit slo₧itost problematiky, kterou je nutnΘ brßt v ·vahu p°i v²voji aplikacφ klient/server, a jednak p°φle₧itost zde dßle ukßzat na (relativn∞) jednoduchΘm p°φkladu, jak vßm Delphi 3 umo₧≥uje prost∞ a elegantn∞ vytvo°it zßklad t°φvrstvΘ aplikace v kontrastu k tomu, co jsem v²Üe uvedl.

     Zßkladem vytvo°enφ aplikaΦnφho serveru je pou₧itφ Remote Data Modulu (viz obr. 5). Ten toti₧ zajistφ, ₧e v²sledn² produkt mß po spuÜt∞nφ charakter v²Üe zmφn∞nΘho DCOM objektu.

Remote Data Module jako zßklad pro vytvo°enφ aplikaΦnφho serveru
     Obr.5. Remote Data Module jako zßklad pro vytvo°enφ aplikaΦnφho serveru.

     AplikaΦnφ server plnφ ·lohu prost°ednφka mezi klientem a datov²m serverem. V tΘto jednoduchΘ podob∞ nepot°ebujeme na formulß°i ₧ßdnou komponentu, umφstφme sem pouze informativnφ nßpis. Na Remote Data Modulu umφstφme komponentu pro p°φstup k dat∙m (Table nebo Query).

Zßkladnφ struktura aplikaΦnφho serveru
     Obr.6. Zßkladnφ struktura aplikaΦnφho serveru.

     Pro nßÜ ·Φel staΦφ toto nastavenφ. V praxi je v²hodn∞jÜφ navφc doplnit komponentu Provider. Ta sice nenφ nutnß a v p°φpad∞ pot°eby se vytvo°φ na pozadφ, ale explicitnφ umφst∞nφ komponenty Provider mß v²hodu v tom, ₧e u nφ lze nastavit reakci na celou °adu udßlostφ. AplikaΦnφ server ve svΘ nejzßkladn∞jÜφ podob∞ je takto vytvo°en. Je t°eba nastavit v komponent∞ Table p°φsluÜnou databßzi, a pokud budete postupovat striktn∞ podle manußlu, m∞li byste mφt hotov² aplikaΦnφ server. V praxi se vÜak budete s klientskou Φßstφ marn∞ pokouÜet na tento server p°ipojit. V podrobnΘm nßvodu chybφ jeden d∙le₧it² krok. Musφte klepnout na komponentu Table prav²m tlaΦφtkem a zvolit "Export Table1 from data module" (viz obr. 7).

Dopln∞nφ d∙le₧itΘho chyb∞jφcφho kroku
     Obr.7. Dopln∞nφ d∙le₧itΘho chyb∞jφcφho kroku.

     Mßte-li na Data Modulu umφst∞nu komponentu Provider, je t°eba tuto akci provΘst s komponentou Provider a tu pak propojit s komponentou Table. Nynφ ji₧ staΦφ jen p°elo₧it a spustit program a aplikaΦnφ server je hotov.

VygenerovanΘ rozhranφ aplikaΦnφho serveru
     Obr.8. VygenerovanΘ rozhranφ aplikaΦnφho serveru.

Toto prvnφ spuÜt∞nφ je d∙le₧itΘ s ohledem na skuteΦnost, ₧e Remote Data Modul je OLE Automation objekt a aplikaΦnφ server v tΘto podob∞ je DCOM komponentou. K tomu, aby se stal v systΘmu znßm²m, musφ zaregistrovar svou identifikaci - GUID. Zßkladnφ rozhranφ definovanΘ standardem a identifikacφ GUID vygeneruje Delphi pro aplikaci automaticky. Umφstφ ji do samostatnΘ unity a unitu p°ipojφ k projektu (viz obr. 8). Jak je vid∞t na obrßzku 9, objevφ se po spuÜt∞nφ aplikace identifikace aplikaΦnφho serveru v registru Windows 95.

Identifikace GUID ulo₧enß v registru po prvnφm spuÜt∞nφ
     Obr.9. Identifikace GUID ulo₧enß v registru po prvnφm spuÜt∞nφ.

     Nynφ zb²vß klientskß Φßst aplikace. Ta bude slo₧ena z datovΘho modulu, kter² se bude spojovat s aplikaΦnφm serverem a k n∞mu p°ipojφme tabulku, kterß nßm zobrazφ k aplikaΦnφmu serveru p°ipojenou databßzi. Na hlavnφ formulß° umφstφme komponenty DBGrid a DBNavigßtor. Pak nadefinujeme datov² modul a umφstφme na n∞j komponenty podle obrßzku 10.

Zßkladnφ struktura klientu a nastavenφ vlastnostφ komponenty RemoteServer
     Obr.10. Zßkladnφ struktura klientu a nastavenφ vlastnostφ komponenty RemoteServer.

     V komponent∞ RemoteServer je nutnΘ zadat vlastnost ServerName. Pokud jste spustili po vytvo°enφ alespo≥ jednou aplikaΦnφ server, pak se zde objevφ v nabφdce a po jeho volb∞ se automaticky doplnφ i vlastnost ServerGUID. Jak jsme se zmφnili v²Üe, je aplikaΦnφ server DCOM komponentou a to tedy takΘ znamenß, ₧e jej lze propojit s klientem nejen na stejnΘm poΦφtaΦi, ale i na jinΘm poΦφtaΦi v sφti. Proto lze nastavit i identifikaci poΦφtaΦe v sφti, na n∞m₧ se mß aplikaΦnφ server hledat pomocφ vlastnosti ComputerName. Zadßnφ m∙₧ete provΘst obdobn∞, jako kdy₧ poklepete na windowsovou ikonu "sφ¥". Nakonec je pot°eba propojit komponentu ClientDataSet na RemoteServer (pokud nemßte spuÜt∞n v tomto okam₧iku aplikaΦnφ server, pak p°ipojenφm komponenty RemoteServer by se m∞l sßm spustit) a nastavit vlastnost Provider. Zde se nabφdne bu∩ komponenta Table, nebo Provider, podle toho, co jste pou₧ili v aplikaΦnφm serveru. Poslednφm krokem je kompilace, a pokud jste vÜechny komponenty sprßvn∞ propojili a nastavili, spustφ se vßm t°φvrstvß aplikace v plnΘ krßse podobn∞, jak je vid∞t na obrßzku 11.

SpuÜt∞nß t°φvrstvß aplikace
     Obr.11. SpuÜt∞nß t°φvrstvß aplikace.


InternetovΘ aplikace
     Delphi umo₧≥uje snadn² zp∙sob vytvß°enφ klientsk²ch i serverov²ch internetov²ch aplikacφ. Z hlediska vytvß°enφ a Φinnosti je zajφmavß p°edevÜφm serverovß aplikace a jejφ zp∙sob obsluhy po₧adavku klient∙. V Delphi je mo₧nΘ definovat 4 zßkladnφ tvary t∞chto aplikacφ: Microsoft Server DLL (ISAPI), Netscape Server DLL (NSAPI), Console CGI a Windows CGI. Podle zvolenΘho typu se pak pracuje s r∙zn²mi verzemi objekt∙ Application, Request a Response.

     Zßkladnφ schΘma aplikace a pr∙b∞hu zpracovßnφ je na nßsledujφcφm obrßzku Φ. 12. Princip Φinnosti vychßzφ od klientskΘho po₧adavku, kter² je serverem p°edßn aplikaci. Ta implikuje vytvo°enφ objekt∙ TRequest a TResponse.

Struktura internetovΘ serverovΘ aplikace
     Obr.12. Struktura internetovΘ serverovΘ aplikace.

     V objektu TRequest je aplikaci p°edßn klientsk² po₧adavek a veÜkerΘ dalÜφ informace od klientu, pot°ebnΘ k spln∞nφ po₧adavku. ╚innost pak p°evezme komponenta WebDispatcher, kterß je zßkladnφm "motorem" pro obslou₧enφ po₧adavku klientu.

     K vytvo°enφ aplikace je nejjednoduÜÜφ pou₧φt p°eddefinovan² (template) Web Server Modul (menu File/New..., viz obr. 5). Po jeho volb∞ se vßm nabφdne v²b∞r zßkladnφho typu aplikace (viz obr. 13). Modul v sob∞ ji₧ obsahuje komponentu WebDispatcher, tak₧e m∙₧ete ihned

Volba typu aplikace p°i pou₧itφ p°eddefinovanΘho modulu
     Obr.13. Volba typu aplikace p°i pou₧itφ p°eddefinovanΘho modulu.

vyvolat Action Editor (v ObjectInspektoru poklepßnφm na vlastnost Actions nebo volbou Action Editor... po klepnutφ prav²m tlaΦφtkem na vygenerovan² WebModul) a definovat libovoln² poΦet polo₧ek ActionItem. Tyto polo₧ky majφ vlastnosti MethodType a PathInfo, jejich₧ nastavenφ tvo°φ dohromady jak²si case-p°φkaz (°eΦeno terminologiφ Pascalu).

Nastavenφ akcφ pro WebDispatcher a producer-komponenty
     Obr.14. Nastavenφ akcφ pro WebDispatcher a producer-komponenty.

     P°i zpracovßvßnφ po₧adavku klientu prochßzφ WebDispatcher postupn∞ jednotlivΘ polo₧ky ActionItem a porovnßvß po₧adavek ulo₧en² v objektu TRequest s hodnotami nastaven²mi ve zmφn∞n²ch vlastnostech. V okam₧iku, kdy jsou shodnΘ, aktivuje se procedura definovanß u p°φsluÜnΘ ActionItem pro udßlost OnAction. Procedura pak splnφ po₧adavek (obvykle vytvo°enφ n∞jakΘ HTML strßnky informacφ), k Φemu₧ m∙₧e vyu₧φt r∙znΘ "producery". To jsou komponenty, kterΘ dovolujφ jednoduÜe vytvo°it HTML strßnky z p°edem p°ipraven²ch vzor∙ (komponenta PageProducer) nebo zobrazit obsah tabulek databßzφ nebo dotaz∙ ve form∞ tabulek na HTML strßnkßch (komponenty DataSetTableProducer a QueryTableProducer). Takto p°ipravenΘ informace se ulo₧φ do objektu TResponse a vrßtφ se serveru a jeho prost°ednictvφm pak klientu.

     V²Üe zmφn∞nß volba typu aplikace zßvisφ p°edevÜφm na serveru, pro kter² bude aplikace urΦena a neprojevφ se na zp∙sobu vytvß°enφ aplikace (pokud ovÜem nebudete programovat n∞jakΘ speciality). V prvnφch dvou p°φpadech (Microsoft Server a Netscape Server) je aplikace vytvo°ena a na serveru volßna jako DLL knihovna. Oproti dalÜφm dv∞ma zp∙sob∙m je v²hodn∞jÜφ, vzhledem k tomu, ₧e Üet°φ zdroje a Φas zpracovßnφ. Je zde ovÜem takΘ jedno drobnΘ nebezpeΦφ. DLL z∙stßvß v pam∞ti pro p°φpadnΘ dalÜφ pou₧itφ. Pokud je stejnß slu₧ba volßna znovu, a jestli₧e se p°i minulΘm volßnφ p°enastavily nap°φklad vlastnosti Enabled a Default pro polo₧ky ActionItem, jejich nastavenφ z∙stßvß do dalÜφho volßnφ nezm∞n∞nΘ.

     DalÜφmi nov²mi komponentami na zßlo₧ce Internet jsou "zßsuvky" ClientSocket a ServerSocket. Ty umo₧≥ujφ komunikaci mezi dv∞ma aplikacemi na r∙zn²ch poΦφtaΦφch prost°ednictvφm TCP/IP protokolu. Pou₧itφ komponent zapouzd°uje API volßnφ odpovφdajφcφch objekt∙ Windows a umo₧≥uje v²m∞nu dat mezi dv∞ma poΦφtaΦi bez ohledu na technickΘ detaily propojenφ a pou₧φvan² sφ¥ov² software. Pokud op∞t nepot°ebujete n∞jakΘ speciality, staΦφ nastavenφ jen n∞kolika zßkladnφch vlastnostφ, jako nap°φklad portu, p°es kter² bude komunikace probφhat, nebo zda chcete, aby p°enos probφhal asynchronn∞ Φi blokov∞, a obhospoda°enφ n∞kolika zßkladnφch udßlostφ, kterΘ se mohou p°i komunikaci vyskytnout. P∞knou ukßzkou pou₧itφ t∞chto komponent je demonstraΦnφ p°φklad dodßvan² s Delphi, dovolujφcφ "rozhovor" mezi dv∞ma poΦφtaΦi jednoduÜe pouh²m psanφm textu do komponenty TMemo. V₧dy po stisknutφ klßvesy Enter je °ßdek odeslßn partnerovi. Pokud pomineme "nadbyteΦnΘ" °ßdky programu, t²kajφcφ se pr∙b∞₧nΘho informovßnφ o stavu propojenφ, pak krom∞ umφst∞nφ komponent na formulß° (viz obr. 15 ) je k napsßnφ aplikace pot°eba asi 10 °ßdk∙ vlastnφho programu.

DemonstraΦnφ p°φklad pou₧itφ
     Obr.15. DemonstraΦnφ p°φklad pou₧itφ "zßsuvek".


Utility


SQL Explorer

     Utilita je vzhledov∞ a ovlßdßnφm podobnß utilit∞ BDEAdministrator. Zahrnuje vÜechny jejφ funkce, ale krom∞ toho dokß₧e zobrazit jakΘkoliv informace o vÜem, co souvisφ s aliasy, s databßzemi a jednotliv²mi tabulkami.

Zobrazenφ zßkladnφch informacφ SQL Explorerem
     Obr.16. Zobrazenφ zßkladnφch informacφ SQL Explorerem.

     Dokß₧e takΘ zobrazit a vypsat obsahy i struktury databßzφ a tabulek, seznam i obsah ulo₧en²ch procedur, triggr∙, domΘn, generßtor∙ a v²jimek. M∙₧ete zadat SQL p°φkaz a nechat si zobrazit v²sledek. Obsahy tabulek, domΘn a alias∙ je mo₧nΘ i editovat. Sympatick² je i v²pis SQL p°φkaz∙ (na zßlo₧ce Text) pro zalo₧enφ databßze a pro definici jednotliv²ch tabulek (viz obr. 13).

V²pis SQL p°φkaz∙ pro zalo₧enφ databßze vygenerovan²ch SQL Explorerem
     Obr.17. V²pis SQL p°φkaz∙ pro zalo₧enφ databßze vygenerovan²ch SQL Explorerem.

     K ·plnΘmu komfortu zde chybφ snad jen n∞kterΘ dalÜφ mo₧nosti, poskytovanΘ programem Database Desktop (zaklßdßnφ tabulek, restrukturalizace apod.).

Ukßzka pr∙b∞hu sledovßnφ Φinnostφ SQL Monitorem
     Obr.18. Ukßzka pr∙b∞hu sledovßnφ Φinnostφ SQL Monitorem.


SQL Monitor

     Program SQL Monitor po svΘ aktivaci (z menu IDE "Database / SQL Monitor" nebo jako samostatn² program SQLMon) dokß₧e sledovat pr∙b∞h udßlostφ a komunikaci mezi aplikacφ a databßzφ od okam₧iku p°ipojenφ k serveru prost°ednictvφm SQL Links nebo ODBC. Na p°ipojenΘm obrßzku 14 je ukßzka ze sledovßnφ probφhajφcφch aktivit po spuÜt∞nφ v²Üe uvedenΘho p°φkladu t°φvrstvΘ aplikace. Pokud vßs budou p°i lad∞nφ aplikace nebo hledßnφ p°φΦin n∞jakΘho problΘmu zajφmat jen urΦitΘ konkrΘtnφ skupiny udßlostφ, m∙₧ete si je vybrat z nabφdky Options (viz obr. 15).

Volby pro nastavenφ SQL Monitoru
     Obr.19. Volby pro nastavenφ SQL Monitoru.


OLEnterprise

     Na zßv∞r se zmφnφm jeÜt∞ o "trial" verzi produktu OLEnterprise, kter² je s verzφ klient/server dodßvßn. OLEnterprise je produkt, kter² vßm umo₧nφ "vid∞t" a pou₧φvat objekty OLE Automation a RPC server kdekoliv v sφti. Hlavnφm prvkem, kter² tuto slu₧bu zajiÜ¥uje je Business Object Broker. Produkt je jazykov∞ nezßvisl² a je schopen lokalizovat objekty OLE Automation server a zajistit jejich spoluprßci i v p°φpad∞, ₧e byly vytvo°eny v libovolnΘm programovacφm prost°edφ.

Object Explorer - jedna ze Φty° slo₧ek OLEnterprise
     Obr.20. Object Explorer - jedna ze Φty° slo₧ek OLEnterprise.

     Cel² produkt je tvo°en Φty°mi zßkladnφmi Φßstmi. Krom∞ zmφn∞nΘho Business Object Brokeru jsou to Object Explorer, Object Agent a Object Factory. Object Explorer (viz obr. 20) umφ zobrazit (formou dnes ji₧ pro "explorery" standardnφ) OLE objekty v lokßlnφm registru i v registrech ostatnφch poΦφtaΦ∙ v sφti, vΦetn∞ vÜech detailnφch informacφ o vlastnostech, kterΘ lze o OLE objektu zφskat. OLE objekty lze s jeho pomocφ exportovat i importovat. TytΘ₧ akce lze realizovat i formou p°φkaz∙ (command line). Object Agent a Object Factory jsou programy pracujφcφ na klientovi a na serveru v sφti a zprost°edkovßvajφcφ komunikaci a p°esuny dat v sφti. SouΦßstφ dodßvanΘ verze jsou i Φty°i konkrΘtnφ p°φklady ukazujφcφ jak lze s pomocφ prost°edk∙ OLEnterprise z OLE Automation objekt∙ a RPC objekt∙ vytvß°et konkrΘtnφ aplikace pracujφcφ v sφti.


Zßv∞r

     Pokud jste doΦetli vÜe a₧ do t∞chto mφst, pak pravd∞podobn∞ mßte vß₧n² zßjem o Delphi 3 Client/Server Suite. Domnφvßm se, ₧e rozhodn∞ neud∞lßte chybu, pokud se pro koupi rozhodnete. Delphi 3 je programovacφ prost°edφ, kterΘ vßm poskytuje z°ejm∞ to nejmodern∞jÜφ, co dnes v oblasti programovßnφ existuje. P°φklady, kterΘ jsem naho°e uvßd∞l, byly samoz°ejm∞ formulovßny v tΘ nejjednoduÜÜφ podob∞, ale jejich jednoduchost plyne z toho, ₧e systΘm na pozadφ poskytuje velmi silnou podporu. Pokud mßte pocit, ₧e aplikace typu klient/server, resp. internetovΘ a intranetovΘ aplikace jsou jednoduchΘ, plyne to spφÜe z v²Üe zmφn∞nΘ podpory, kterou vßm Delphi nabφzφ prost°ednicvφm "zabalenφ" kritick²ch Φßstφ k≤du do komponent a zprost°edkovßnφm jejich pou₧itφ v co nejjednoduÜÜφ form∞. Aplikace typu klient/server nejsou ve svΘ podstat∞ prßv∞ jednoduchΘ a pokud budete chtφt vytvo°it skuteΦn∞ funkΦnφ a kvalitnφ aplikaci, je t°eba znßt podstatn∞ vφce ne₧ pro programovßnφ b∞₧nΘ aplikace. SkuteΦnostφ je, ₧e aplikace, kterΘ d°φve byly v²sadou velk²ch programßtorsk²ch t²m∙ a specialist∙, se dnes co do nßroΦnosti posunuly o kategorii nφ₧e dφky mo₧nostem, kterΘ Delphi 3 poskytuje. I kdy₧ jednotlivΘ typy v²Üe zmφn∞n²ch aplikacφ samy o sob∞ nejsou v dneÜnφ dob∞ v²jimeΦnΘ, p°esto nesou stßle jist² punc mimo°ßdnosti. T°eba vßs v²Üe popsanΘ mo₧nosti Delphi 3 C/S inspirujφ k napsßnφ aplikace, v nφ₧ prost°ednictvφm internetu propojφte formou vφcevrstvΘ aplikace klient/server tabulky z databßzφ na n∞kolika serverech z r∙zn²ch konc∙ sv∞ta a v²sledek zobrazφte jako n∞kolikarozm∞rn² graf prost°ednicvφm Decision Cube. Mn∞ se to u₧ nynφ v∙bec nejevφ tak problematickΘ...

Ji°φ Ventluka    


Delphi 3 Client/Server Suite
Prost°edek pro vizußlnφ v²voj aplikacφ pro Windows 95 / NT.

V²robce: Borland International, USA.
Poskytl: Borland, s.r.o., Praha.
Minimßlnφ hardwarovΘ po₧adavky: PC 486, 16 MB RAM, CD-ROM, 150 MB na pevnΘm disku.
Minimßlnφ softwarovΘ po₧adavky: Windows 95.
Cena: 82.560 KΦ + DPH.


⌐ 1998 Vogel Publishing, s.r.o.