You are on page 1of 22

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Delphi. Techniki
bazodanowe i internetowe
Autorzy: Peter Darakhvelidze, Eugene Markov
Tumaczenie: Jan Ostrowski, Grzegorz Werner
ISBN: 83-7361-661-6
Tytu oryginau: Web Services Development with Delphi
Format: B5, stron: 592

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Stwrz aplikacje sieciowe,


wykorzystujc uniwersalne mechanizmy wymiany danych
Wykorzystaj technologie COM, SOAP i ActiveX
Zaimplementuj zoone mechanizmy dostpu do baz danych
Napisz bezpieczne aplikacje, stosujc szyfrowanie przesyanych danych
Uyj w aplikacjach jzyka XML
Aplikacje rozproszone s coraz czciej uruchamiane nie tylko w sieciach lokalnych,
ale take w sieci WWW. Wymiana danych w tak rozlegym rodowisku sieciowym
wymagaa opracowania technologii, ktre zapewniayby jednoznaczno
i bezpieczestwo przesyanych danych. Na rynku pojawiy si mechanizmy COM
i COM+, SOAP oraz kilka innych. Coraz wiksz popularno zyskuje jzyk XML
pozwalajcy na unifikacj struktur danych w aplikacjach. W oparciu o takie
mechanizmy powstaj rozproszone aplikacje biznesowe i obliczeniowe, zwane
usugami sieciowymi lub usugami WWW.
Ksika Delphi. Techniki bazodanowe i internetowe opisuje moliwoci tworzenia
aplikacji sieciowych za pomoc rodowiska Delphi z wykorzystaniem rnych
technologii. Przedstawia kolejno najpopularniejsze z nich oraz moliwoci ich
zastosowania w projektach realizowanych w Delphi. Zawiera informacje powicone
przetwarzaniu danych z wykorzystaniem jzyka XML oraz protokou SOAP, a take
tworzeniu usug WWW opartych na tych technologiach. W ksice opisano rwnie
zagadnienia zwizane z korzystaniem z baz danych systemy lokalne, mechanizmy
klient-serwer oraz rozproszone, a take technologie dostpu do danych, od ADO do
dbExpress.

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Mechanizmy COM i COM+


Kontrolki ActiveX
Architektura aplikacji bazodanowych
Technologia DataSnap
Aplikacje internetowe
Obsuga gniazd w Delphi
Kryptografia i ochrona przesyanych danych
Korzystanie z danych w formacie XML
Protok SOAP
Stosowanie mechanizmw WebSnap

Spis treci
Wstp ............................................................................................... 7

Cz I

Aplikacje COM i COM+...................................................11

Rozdzia 1. Mechanizmy COM w Delphi .............................................................. 13


Podstawowe pojcia ........................................................................................................ 14
Obiekty COM w Delphi .................................................................................................. 22
Serwery COM w Delphi.................................................................................................. 30
Biblioteki typw w Delphi .............................................................................................. 32
Proste obiekty COM w serwerach wewntrzprocesowych.............................................. 34
Uywanie interfejsw wewntrzprocesowego serwera COM ......................................... 46
Podsumowanie ................................................................................................................ 48

Rozdzia 2. Automatyzacja................................................................................. 49
Podstawowe pojcia Automatyzacji ................................................................................ 49
Implementacja Automatyzacji w Delphi ......................................................................... 53
Obiekt Automatyzacji...................................................................................................... 55
Przykadowa aplikacja Automatyzacji ............................................................................ 65
Podsumowanie ................................................................................................................ 69

Rozdzia 3. Komponenty ActiveX........................................................................ 71


Jak dziaaj formanty ActiveX? ...................................................................................... 72
Implementowanie komponentw ActiveX w Delphi....................................................... 76
Uywanie gotowych komponentw ActiveX .................................................................. 79
Tworzenie wasnych komponentw ActiveX.................................................................. 83
Podsumowanie ................................................................................................................ 90

Rozdzia 4. Technologia COM+ (Microsoft Transaction Server) ........................... 91


Jak dziaa MTS? .............................................................................................................. 92
Tworzenie aplikacji MTS w Delphi ................................................................................ 98
Testowanie i instalowanie komponentw MTS............................................................. 106
Optymalizacja dziaania MTS ....................................................................................... 108
Przykad prostego obiektu transakcyjnego .................................................................... 109
Podsumowanie .............................................................................................................. 114

Cz II

Delphi. Techniki bazodanowe i internetowe

Technologie dostpu do danych ....................................115

Rozdzia 5. Architektura aplikacji bazodanowych.............................................. 117


Oglna struktura aplikacji bazodanowej ....................................................................... 119
Zestawy danych............................................................................................................. 125
Indeksy .......................................................................................................................... 139
Parametry kwerend i procedur skadowanych ............................................................... 143
Mechanizmy zarzdzania danymi ................................................................................. 148
Wyszukiwanie danych................................................................................................... 149
Filtrowanie danych........................................................................................................ 150
Korzystanie z zakadek.................................................................................................. 152
Pola ............................................................................................................................... 153
Obiekty pl.................................................................................................................... 153
Podsumowanie .............................................................................................................. 166

Rozdzia 6. Technologia dbExpress .................................................................. 167


Dostp do danych za pomoc dbExpress....................................................................... 169
Sterowniki dostpu do danych....................................................................................... 170
Poczenie z serwerem bazy danych.............................................................................. 170
Zarzdzanie zestawami danych ..................................................................................... 174
Transakcje ..................................................................................................................... 177
Uywanie komponentw obsugujcych zestawy danych ............................................. 178
Metody edycji danych ................................................................................................... 189
Interfejsy dbExpress ...................................................................................................... 192
Debugowanie aplikacji opartych na technologii dbExpress .......................................... 195
Dystrybuowanie aplikacji dbExpress ............................................................................ 198
Podsumowanie .............................................................................................................. 198

Rozdzia 7. Korzystanie z ADO w Delphi............................................................ 199


Podstawowe informacje o ADO .................................................................................... 199
Dostawcy ADO ............................................................................................................. 205
Obsuga ADO w Delphi ................................................................................................ 206
Komponent TADOConnection...................................................................................... 207
Zestawy danych ADO ................................................................................................... 218
Polecenia ADO.............................................................................................................. 233
Obiekt bdu ADO ........................................................................................................ 235
Tworzenie przykadowej aplikacji ADO ....................................................................... 236
Podsumowanie .............................................................................................................. 240

Cz III Rozproszone aplikacje bazodanowe...............................241


Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu ................... 243
Struktura wielowarstwowej aplikacji Delphi................................................................. 244
Trjwarstwowa aplikacja Delphi................................................................................... 246
Serwery aplikacji........................................................................................................... 247
Mechanizm zdalnego dostpu DataSnap ....................................................................... 249
Dodatkowe komponenty brokery pocze .............................................................. 256
Podsumowanie .............................................................................................................. 259

Rozdzia 9. Serwer aplikacji............................................................................. 261


Architektura serwera aplikacji....................................................................................... 262
Interfejs IAppServer ...................................................................................................... 263
Zdalne moduy danych .................................................................................................. 264

Spis treci

5
Dostawcy danych .......................................................................................................... 271
Interfejs IProviderSupport ............................................................................................. 275
Rejestrowanie serwerw aplikacji ................................................................................. 275
Tworzenie przykadowego serwera aplikacji................................................................. 276
Podsumowanie .............................................................................................................. 279

Rozdzia 10. Klient wielowarstwowej aplikacji rozproszonej ................................ 281


Architektura aplikacji klienta ........................................................................................ 282
Klienckie zestawy danych ............................................................................................. 283
Komponent TClientDataSet .......................................................................................... 284
Agregaty........................................................................................................................ 293
Zagniedone zestawy danych ...................................................................................... 297
Dodatkowe waciwoci pl klienckiego zestawu danych............................................. 298
Obsuga bdw............................................................................................................. 299
Tworzenie przykadowego uproszczonego klienta ........................................................ 302
Podsumowanie .............................................................................................................. 305

Cz IV Tworzenie aplikacji internetowych.................................307


Rozdzia 11. Gniazda ......................................................................................... 309
Wprowadzenie do architektury sieciowej...................................................................... 310
Obsuga gniazd w Delphi .............................................................................................. 323
Podsumowanie .............................................................................................................. 331

Rozdzia 12. Kryptograficzna ochrona w internecie ............................................. 333


Podstawowe terminy i pojcia kryptograficzne............................................................. 334
Podpisy cyfrowe, certyfikaty i sposb ich uycia.......................................................... 338
Wprowadzenie do CryptoAPI ....................................................................................... 343
Nawizywanie zabezpieczonego poczenia sieciowego za pomoc protokow
internetowych ............................................................................................................. 351
Podsumowanie .............................................................................................................. 357

Rozdzia 13. Wtki i procesy ............................................................................. 359


Podstawowe informacje o wtkach ............................................................................... 359
Klasa TThread ............................................................................................................... 365
Przykad wielowtkowej aplikacji Delphi ..................................................................... 368
Problemy z synchronizacj wtkw .............................................................................. 372
Sposoby synchronizacji wtkw ................................................................................... 373
Lokalne dane wtku....................................................................................................... 380
Unikanie jednoczesnego uruchomienia dwch egzemplarzy aplikacji.......................... 380
Podsumowanie .............................................................................................................. 381

Cz V

Dane XML w aplikacjach rozproszonych ........................383

Rozdzia 14. Dokumenty XML ............................................................................ 385


Podstawowe wiadomoci o XML-u .............................................................................. 385
Podstawy skadni XML-a .............................................................................................. 388
Obiektowy model dokumentu ....................................................................................... 393
Implementacja DOM w Delphi ..................................................................................... 401
Podsumowanie .............................................................................................................. 418

Rozdzia 15. Korzystanie z danych XML.............................................................. 419


Konwertowanie danych XML ....................................................................................... 420
XML Mapper ................................................................................................................ 423
Konwertowanie danych XML w aplikacjach rozproszonych ........................................ 427

Delphi. Techniki bazodanowe i internetowe


Wykorzystanie danych XML w aplikacjach rozproszonych ......................................... 429
Przykad aplikacji wykorzystujcej dane XML............................................................. 435
Podsumowanie .............................................................................................................. 437

Cz VI Aplikacje rozproszone i usugi WWW .............................439


Rozdzia 16. Aplikacje serwera WWW. Technologia WebBroker .......................... 441
Publikacja danych w internecie. Serwery WWW.......................................................... 442
Rodzaje aplikacji serwerw WWW .............................................................................. 443
Podstawowe wiadomoci o interfejsach CGI i ISAPI ................................................... 444
Struktura aplikacji serwera WWW w Delphi ................................................................ 445
Strony WWW w aplikacjach serwera WWW................................................................ 455
Cookies.......................................................................................................................... 460
Korzystanie z baz danych.............................................................................................. 461
Przykad aplikacji serwera WWW ................................................................................ 469
Podsumowanie .............................................................................................................. 474

Rozdzia 17. Usugi WWW i protok SOAP. Strona klienta ................................. 475
Czemu SOAP?............................................................................................................... 476
Zasady funkcjonowania protokou SOAP ..................................................................... 478
Architektura usug WWW w Delphi ............................................................................. 485
Klient usug WWW ....................................................................................................... 486
Podsumowanie .............................................................................................................. 498

Rozdzia 18. Serwer usug WWW.


Wspdziaanie aplikacji pracujcych na rnych platformach .......... 499
Przykad realizacji usugi SimpleEchoService ......................................................... 500
Przeznaczenie i waciwoci komponentw strony serwera.......................................... 502
Narzdzia zwizane z tworzeniem aplikacji SOAP podejcie firmy Microsoft........ 510
Narzdzie SOAP Trace ................................................................................................. 517
Podsumowanie .............................................................................................................. 519

Rozdzia 19. Technologia WebSnap ................................................................... 521


Struktura aplikacji WebSnap......................................................................................... 521
Projektowanie aplikacji WebSnap................................................................................. 538
Projektowanie interfejsu i obsuga danych .................................................................... 541
Uwierzytelnianie uytkownikw................................................................................... 550
Korzystanie z XML-a i XSL-a ...................................................................................... 554
Podsumowanie .............................................................................................................. 558

Dodatki .......................................................................................561
Dodatek A Zawarto CD ............................................................................... 563
Skorowidz...................................................................................... 565

Rozdzia 8.

Technologia DataSnap.
Mechanizmy
zdalnego dostpu
W poprzedniej czci ksiki omwilimy zagadnienia zwizane z tworzeniem tradycyjnych aplikacji bazodanowych, ktre korzystaj z baz danych w lokalnym komputerze
albo sieci. Nie zajmowalimy si jednak aplikacjami, ktre musz by rwnie dobrze
przygotowane do wsppracy z komputerami w sieci lokalnej oraz z wieloma maszynami zdalnymi.
Oczywicie, w takim przypadku model dostpu do danych musi by rozszerzony, poniewa tradycyjne sposoby tworzenia aplikacji bazodanowych s nieefektywne, kiedy
mamy do czynienia z du liczb zdalnych komputerw.
W tym rozdziale omwimy model rozproszonej aplikacji bazodanowej, tak zwan
aplikacj wielowarstwow, a cilej jej najprostsz wersj, trjwarstwow aplikacj
rozproszon. Skada si ona z nastpujcych czci:
serwera bazy danych,
serwera aplikacji (oprogramowanie porednie),
aplikacji klienta.

Wszystkie trzy czci s poczone przez mechanizm transakcji (poziom transportu)


oraz mechanizm przetwarzania danych (poziom logiki biznesowej).
Jeli uoglnimy model trjwarstwowy, zauwaymy, e zwikszanie liczby warstw nie
wpywa na serwer bazy danych ani na klienta aplikacji. Dodatkowe warstwy komplikuj
tylko oprogramowanie porednie, ktre moe na przykad zawiera serwer transakcji,
serwer zabezpiecze itp.
Wszystkie komponenty i obiekty Delphi, ktre umoliwiaj tworzenie aplikacji wielowarstwowych okrela si wsplnym mianem DataSnap.

Cz III Rozproszone aplikacje bazodanowe

244

W starszych wersjach Delphi (3, 4 i 5) komponenty te nosiy nazw MIDAS (od ang.
Multi-tier Distributed Application Services).

Wikszo komponentw omwionych w nastpnych rozdziaach jest dostpna na


specjalnej karcie DataSnap palety komponentw Delphi. Do projektowania aplikacji
rozproszonych potrzebnych jest jednak kilka dodatkowych komponentw, ktrym rwnie powicimy naleyt uwag.
W tym rozdziale opiszemy nastpujce zagadnienia:
struktur aplikacji wielowarstwowych,
strategi dostpu do zdalnych baz danych w technologii DataSnap,
zdalne moduy danych,
komponenty dostawcze,
komponenty transakcyjne zdalnych pocze DataSnap,
dodatkowe komponenty brokery pocze.

Struktura wielowarstwowej
aplikacji Delphi
Wielowarstwowa architektura aplikacji bazodanowych wzia si z koniecznoci przetwarzania w serwerze da wielu zdalnych klientw. Na pozr zadanie to mona zrealizowa za pomoc tradycyjnych aplikacji typu klient-serwer, ktrych kluczowe elementy
opisalimy w poprzednich rozdziaach. Jeli jednak liczba zdalnych klientw jest dua,
cay ciar przetwarzania spada na serwer bazy danych, ktry dysponuje do skromnymi rodkami implementowania zaawansowanej logiki biznesowej (procedury skadowane, wyzwalacze, widoki itp.). Programici s zmuszeni znacznie komplikowa
kod klientw, co jest wysoce niepodane, jeli wiele zdalnych komputerw korzysta
z tego samego serwera. Kiedy oprogramowanie klienckie staje si bardziej skomplikowane, ronie prawdopodobiestwo bdu, a wiadczenie usug jest trudniejsze.
Architektur wielowarstwow wymylono w celu rozwizania powyszych problemw.
Wielowarstwowa aplikacja bazodanowa (zobacz rysunek 8.1) skada si z:
cienkich (uproszczonych) aplikacji klienta, ktre zapewniaj tylko usugi

transmisji, prezentacji i edycji, a take podstawowego przetwarzania danych,


jednej lub wielu warstw oprogramowania poredniego (serwera aplikacji), ktre

moe dziaa w jednym komputerze albo by rozproszone w sieci lokalnej,


serwera baz danych (Oracle, Sybase, MS SQL, InterBase itp.), ktry zapewnia

obsug danych i przetwarza dania.

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

245

Rysunek 8.1.
Wielowarstwowa
architektura aplikacji
bazodanowej

Zatem w tej architekturze klienty s bardzo prostymi aplikacjami, ktre zajmuj si


tylko transmisj danych, lokalnym buforowaniem, prezentowaniem danych za pomoc
interfejsu uytkownika, edycj i podstawowym przetwarzaniem danych, std te czsto
spotyka si nazw cienki klient dla tego typu aplikacji.
Aplikacje klienta nigdy nie korzystaj bezporednio z serwera bazy danych; robi to za
pomoc oprogramowania poredniego. Oprogramowanie porednie moe skada si
z jednej warstwy (w najprostszym modelu trjwarstwowym) albo mie bardziej skomplikowan struktur.
Oprogramowanie porednie odbiera dania klientw, przetwarza je zgodnie z zaprogramowanymi reguami logiki biznesowej, w razie potrzeby przeksztaca je w format
odpowiedni dla serwera bazy danych, a nastpnie wysya do serwera.
Serwery baz danych realizuj otrzymane dania i wysyaj wyniki do serwera aplikacji,
ktry przekazuje je klientom.
Prostszy, trjwarstwowy model skada si z nastpujcych elementw:
uproszczonego klienta,
serwera aplikacji,
serwera bazy danych.

W naszych rozwaaniach skupimy si na modelu trjwarstwowym. W rodowisku programistycznym Delphi znajduje si zbir narzdzi i komponentw do budowania klientw oraz oprogramowania poredniego. W rozdziale 9. Serwer aplikacji zajmiemy
si oprogramowaniem porednim, a w rozdziale 10. Klient wielowarstwowej aplikacji rozproszonej opiszemy kwestie projektowania klienta. Serwer aplikacji wsppracuje z serwerem bazy danych, korzystajc z jednej spord technologii dostpowych
obsugiwanych przez Delphi (zobacz cz II Technologie dostpu do danych). S
to technologie ADO, BDE, InterBase Express i dbExpress. Programista moe wybra
najodpowiedniejsz technologi w zalenoci od konkretnego zadania i od parametrw
serwera bazy danych.
Aby serwer aplikacji mg wsppracowa z klientami, musi obsugiwa jeden spord
poniszych standardw rozproszonego dostpu do danych:

Cz III Rozproszone aplikacje bazodanowe

246
Automatyzacja,
WEB,
CORBA,
MTS,
SOAP.

Aplikacje zdalnego klienta tworzy si za pomoc specjalnego zbioru komponentw,


okrelanych wspln nazw DataSnap. Komponenty te zawieraj standardowe mechanizmy transportu danych (DCOM, HTTP, CORBA i gniazda) i nawizuj poczenia
midzy klientem a serwerem aplikacji. Ponadto komponenty DataSnap zapewniaj
klientowi dostp do funkcji serwera aplikacji za porednictwem interfejsu IAppServer
(zobacz rozdzia 9. Serwer aplikacji).
Podczas tworzenia aplikacji klienta wan rol odgrywaj komponenty, ktre zawieraj zestawy danych. To rwnie zaley od technologii dostpu do danych, co zostanie
omwione w rozdziale 10. Klient wielowarstwowej aplikacji rozproszonej.
Oprcz wymienionych wyej korzyci, poziom poredni serwer aplikacji zapewnia dodatkowe udogodnienia, ktre maj due znaczenie, jeli chodzi o zwikszenie
niezawodnoci i wydajnoci aplikacji.
Poniewa komputery, w ktrych dziaaj klienty, s do powolnymi maszynami, przeniesienie skomplikowanej logiki biznesowej na stron serwera znacznie zwiksza ogln wydajno rozwizania. Nie chodzi tylko o szybszy sprzt, ale take o optymalizacj wykonywania podobnych da klientw. Jeli na przykad serwer bazy danych jest
przeciony, serwer aplikacji moe samodzielnie przetwarza dania (kolejkowa je
lub anulowa), nie nakadajc dodatkowego obcienia na serwer bazy danych.
Korzystanie z serwera aplikacji zwiksza bezpieczestwo systemu, poniewa moesz
zorganizowa autoryzacj uytkownikw i inne rodki bezpieczestwa, nie oferujc
bezporedniego dostpu do danych.
Moesz rwnie uywa chronionych kanaw komunikacji danych na przykad
protokou HTTPS.

Trjwarstwowa aplikacja Delphi


Przyjrzyjmy si bliej poszczeglnym czciom trjwarstwowej aplikacji Delphi (zobacz
rysunek 8.2). Jak ju wspomniano, za pomoc Delphi mona napisa zarwno cz
klienck aplikacji trjwarstwowej, jak i oprogramowanie porednie, czyli serwer aplikacji.
Czci aplikacji trjwarstwowej buduje si z komponentw DataSnap, a take innych
specjalnych komponentw, ktre odpowiadaj przede wszystkim za funkcjonowanie
klienta. Dostp do danych uzyskuje si za pomoc jednej spord technologii obsugiwanych przez Delphi (zobacz cz II Technologie dostpu do danych).

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

247

Rysunek 8.2.
Diagram
wielowarstwowej
aplikacji
rozproszonej

Podczas pisania aplikacji trjwarstwowej lepiej skorzysta ze zbioru projektw ni


z pojedynczego projektu. Wanie do tego suy narzdzie Project Manager (View\
Project Manager).

Dane s transmitowane midzy serwerem aplikacji a klientami poprzez interfejs IApp


Server, zapewniany przez serwer aplikacji. Interfejsu tego uywaj komponenty
dziaajce zarwno po stronie serwera (TDataSetProvider), jak i po stronie klienta
(TClientDataSet).
Zbadajmy teraz szczegowo poszczeglne czci aplikacji trjwarstwowej.

Serwery aplikacji
Serwer aplikacji realizuje logik biznesow aplikacji rozproszonej i zapewnia klientom
dostp do bazy danych.
Z punktu widzenia programisty najwaniejsz czci kadego serwera aplikacji jest
jego zdalny modu danych (ang. remote data module). Wyjanijmy, dlaczego.
Po pierwsze, w zalenoci od implementacji, zdalny modu danych zawiera gotowy
do uycia serwer, ktry wystarczy tylko zarejestrowa i skonfigurowa. Aby utworzy
modu danych, uyj jednej z kart Multi-tier, WebSnap lub WebServices magazynu Delphi
(zobacz rysunek 8.3).
Remote Data Module zdalny modu danych, ktry zawiera serwer

Automatyzacji. Uywa si go do nawizywania pocze za porednictwem


DCOM, HTTP i gniazd. Wicej szczegw znajdziesz w rozdziale 9.
Serwer aplikacji;
Transactional Data Module zdalny modu danych, ktry zawiera Microsoft

Transaction Server (MTS);


CORBA Data Module zdalny modu danych, ktry zawiera serwer CORBA;
Soap Server Data Module zdalny modu danych, ktry zawiera serwer

SOAP (ang. Simple Object Access Protocol);


WebSnap Data Module zdalny modu danych, ktry jako serwera uywa

usug WWW i przegldarki WWW.

Cz III Rozproszone aplikacje bazodanowe

248
Rysunek 8.3.
Wybieranie zdalnego
moduu danych
z magazynu obiektw
Delphi

Po drugie, zdalny modu danych umoliwia interakcj z klientami. Modu udostpnia


klientowi metody specjalnego interfejsu IAppServer (albo interfejsu wywiedzionego
z IAppServer). Metody tego interfejsu pomagaj zorganizowa proces transmisji i odbierania pakietw danych z aplikacji klienta.
Po trzecie, podobnie jak tradycyjny modu danych (zobacz rozdzia 5. Architektura
aplikacji bazodanowych), zdalny modu danych zawiera komponenty niewizualne
oraz komponenty dostawcze. Wszystkie komponenty do obsugi pocze i transakcji,
a take komponenty, ktre zawieraj zestawy danych zapewniaj poczenie midzy
aplikacj trjwarstwow a serwerem bazy danych. Mog to by zbiory komponentw
dla rnych technologii dostpu do danych.
Oprcz zdalnego moduu danych integraln czci kadego serwera aplikacji s komponenty dostawcze, TDataSetProvider. Kady komponent, ktry zawiera zestaw danych
przeznaczony do przekazania klientowi musi by zwizany z komponentem dostawczym
w zdalnym module danych.
W tym celu zdalny modu danych musi zawiera odpowiedni liczb komponentw
TDataSetProvider. Komponenty te przekazuj pakiety danych do klientw, a cilej
do komponentw TClientDataSet. Zapewniaj take dostp do metod swojego interfejsu IProviderSupport. Za pomoc metod tego interfejsu mona zarzdza przesyaniem
pakietw danych na niskim poziomie.
Programista zwykle nie musi tego robi. Wystarczy wiedzie, e wszystkie komponenty
obsugujce dane zarwno po stronie klienta, jak i serwera uywaj tego interfejsu. Jeli jednak zamierzasz utworzy wasn wersj DataSnap, opis tego interfejsu
bdzie bardzo uyteczny (zobacz rozdzia 9. Serwer aplikacji).

Aplikacje klienta
Aplikacja klienta w modelu trjwarstwowym powinna zawiera minimalny zbir funkcji, a wikszo operacji zwizanych z przetwarzaniem danych powinien wykonywa
serwer aplikacji.
Aplikacja zdalnego klienta musi przede wszystkim zapewni poczenie z serwerem
aplikacji. W tym celu uywa si nastpujcych komponentw DataSnap:

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

249

TDCOMConnection uywa technologii DCOM,


TSocketConnection uywa gniazd Windows,
TWebConnection uywa protokou HTTP,
TCORBAConnection uywa poczenia w ramach architektury CORBA

(niedostpny w wersji 7)
TSOAPConnection uywa poczenia poprzez WebServices
Komponent TSOAPConnection zostanie omwiony oddzielnie.

Komponenty poczeniowe DataSnap uywaj interfejsu IAppServer, ktry korzysta


z komponentw dostawczych dziaajcych po stronie serwera, oraz klienckich komponentw TClientDataSet do przekazywania pakietw danych.
Dane s obsugiwane przez komponenty TClientDataSet, ktre dziaaj w trybie buforowania danych.
Do prezentacji danych i tworzenia interfejsu uytkownika w aplikacji klienta su
standardowe formanty z karty Data Controls palety komponentw Delphi.
Wicej informacji o projektowaniu klientw w wielowarstwowych aplikacjach bazodanowych znajdziesz w rozdziale 10. Klient wielowarstwowej aplikacji rozproszonej.

Mechanizm zdalnego dostpu DataSnap


Do przekazywania danych midzy komponentem dostawczym a klienckim zestawem
danych (zobacz rysunek 8.2) niezbdne jest utworzenie cza transportowego midzy
klientem a serwerem, ktre zapewnia fizyczn transmisj danych. Mona to zrobi za
pomoc rnych protokow transportowych obsugiwanych przez system operacyjny.
Rne typy pocze, ktre umoliwiaj skonfigurowanie kanau komunikacyjnego
i rozpoczcie wysyania i odbierania informacji, s zawarte w kilku komponentach
DataSnap. Aby utworzy po stronie klienta poczenie korzystajce z konkretnego
protokou transportowego, wystarczy umieci na formularzu odpowiedni komponent
i prawidowo ustawi kilka jego waciwoci. Komponent ten bdzie wsppracowa
ze zdalnym moduem danych, ktry stanowi cz serwera aplikacji.
Poniej opiszemy komponenty poczeniowe, ktre obsuguj takie protokoy jak DCOM,
gniazda TCP/IP, HTTP i CORBA.

Komponent TDCOMConnection
Komponent TDCOMConnection obsuguje transmisj danych z wykorzystaniem technologii Distributed COM lub COM+ i suy przede wszystkim do nawizywania pocze
w obrbie sieci lokalnej.

Cz III Rozproszone aplikacje bazodanowe

250

Aby skonfigurowa poczenie DCOM, musisz najpierw poda nazw komputera,


w ktrym zainstalowany jest serwer aplikacji. W przypadku komponentw TDCOMConn
ection musi to by zarejestrowany serwer Automatyzacji. Nazw komputera okrela
waciwo:
property ComputerName: String;

Jeli nazwa jest prawidowa, waciwo


property ServerName: String;

umoliwia wybr jednego spord dostpnych serwerw w oknie Object Inspector.


Po wybraniu serwera waciwo
property ServerGUID: String;

jest wypeniana automatycznie globalnym identyfikatorem zarejestrowanego serwera


Automatyzacji.
Aby klient mg pomylnie poczy si z serwerem aplikacji, trzeba ustawi obie
waciwoci w opisanej wyej kolejnoci. Sama nazwa serwera albo sam identyfikator
GUID nie zagwarantuje dostpu do zdalnego obiektu COM.
Do otwierania i zamykania poczenia suy waciwo
property Connected: Boolean;

albo metody
procedure Open;
procedure Close;

Transmisj danych midzy klientem a serwerem zarzdza interfejs IAppServer komponentu TDCOMConnection:
property AppServer: Variant;

Dostp do tego interfejsu mona uzyska rwnie za pomoc metody:


function GetServer: IAppServer; override;

Waciwo
property ObjectBroker: TCustomObjectBroker;

pozwala skorzysta z instancji komponentu TSimpleObjectBroker, aby uzyska list


dostpnych serwerw w czasie wykonywania aplikacji.
Metody obsugi zdarze komponentu TDCOMConnection s wymienione w tabeli 8.1.

Komponent TSocketConnection
Komponent TSocketConnection zapewnia poczenie midzy klientem a serwerem z wykorzystaniem gniazd TCP/IP. Aby poczenie zostao pomylnie otwarte, serwerowa
cz aplikacji musi by wyposaona w serwer gniazd (aplikacja ScktSrvr.exe; zobacz
rysunek 8.4).

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

251

Rysunek 8.4.
Serwer gniazd
ScktSrvr.exe

Tabela 8.1. Metody obsugi zdarze komponentu TDCOMConnection


Deklaracja

Opis

property AfterConnect: TNotifyEvent;

Wywoywana po nawizaniu poczenia.

property AfterDisconnect: TNotifyEvent;

Wywoywana po zamkniciu poczenia.

property BeforeConnect: TNotifyEvent;

Wywoywana przed nawizaniem poczenia.

property BeforeDisconnect: TNotifyEvent;

Wywoywana przed zamkniciem poczenia.

type TGetUsernameEvent =
procedure(Sender: TObject);
var Username: String) of object;
property OnGetUserName:
TGetUsernameEvent;

Wywoywana tu przed wywietleniem okna logowania,


ktre suy do autoryzacji zdalnego uytkownika. Dzieje
si tak, kiedy waciwo LoginPrompt jest ustawiona
na True. Parametr Username moe zawiera domyln
nazw uytkownika, ktra pojawi si w oknie logowania.

type TLoginEvent = procedure(Sender:


TObject; Username, Password: String)
of object;
property OnLogin: TLoginEvent;

Wywoywana po nawizaniu poczenia, jeli


waciwo LoginPrompt jest ustawiona na True.
Parametry Username i Password zawieraj nazw
uytkownika i haso wprowadzone podczas autoryzacji.

Waciwo
property Host: String;

musi zawiera nazw komputera z serwerem. Ponadto waciwo


property Address: String;

musi zawiera adres serwera.


W celu otwarcia poczenia trzeba ustawi obie powysze waciwoci.
Waciwo
property Port: Integer;

Cz III Rozproszone aplikacje bazodanowe

252

okrela numer portu. Domylny numer portu to 211, ale programista moe zmieni port,
na przykad po to, aby umoliwi uywanie go przez rne kategorie uytkownikw
albo utworzy chroniony kana komunikacji.
Jeli nazwa komputera zostaa okrelona prawidowo, obok waciwoci
property ServerName: String;

w oknie Object Inspector pojawi si lista dostpnych serwerw Automatyzacji. Po


wybraniu serwera zostanie automatycznie ustawiona waciwo
property ServerGUID: String;

ktra zawiera identyfikator GUID zarejestrowanego serwera. Mona rwnie ustawi


j rcznie.
Metoda
function GetServerList: OleVariant; virtual;

zwraca list zarejestrowanych serwerw Automatyzacji.


Do otwierania i zamykania poczenia suy waciwo
property Connected: Boolean;

albo jedna z metod


procedure Open;
procedure Close;

Kana gniazda TCP/IP mona szyfrowa za pomoc waciwoci


property InterceptName: String;

ktra zawiera identyfikator obiektu COM obsugujcego szyfrowanie-deszyfrowanie


kanau. Identyfikator GUID tego obiektu jest okrelony przez waciwo:
property InterceptGUID: String;

Wskazany obiekt COM przechwytuje dane przechodzce przez kana i przetwarza je


zgodnie z wasnym kodem. Moe to by szyfrowanie, kompresja, manipulowanie szumem itp.
Obiekt COM, ktry zapewnia dodatkowe przetwarzanie danych przechodzcych przez
kana, musi zosta utworzony przez programist. Obiekt przechwytujcy dane musi
obsugiwa standardowy interfejs IDataIntercept.

Oczywicie, po stronie serwera musi znajdowa si zarejestrowany obiekt COM, ktry


wykonuje odwrotn operacj. W tym celu uywa si serwera gniazd (zobacz rysunek 8.5).
acuch Intercept GUID musi zawiera identyfikator GUID obiektu przechwytujcego dane.
Metoda
function GetInterceptorList: OleVariant; virtual;

zwraca list obiektw przechwytujcych zarejestrowanych w serwerze.

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

253

Rysunek 8.5.
Rejestrowanie
przechwytujcego
obiektu COM
w serwerze gniazd

Komponent TSocketConnection udostpnia interfejs IAppServer, ktry organizuje proces


transmisji danych midzy klientem a serwerem:
property AppServer: Variant;

Dostp do tego interfejsu mona rwnie uzyska za pomoc metody:


function GetServer: IAppServer; override;

Waciwo
property ObjectBroker: TCustomObjectBroker;

pozwala skorzysta z instancji komponentu TSimpleObjectBroker, aby uzyska list


dostpnych serwerw w czasie wykonywania aplikacji.
Metody obsugi zdarze komponentu TSocketConnection s takie same jak metody
komponentu TDCOMConnection (zobacz tabela 8.1).

Komponent TWebConnection
Komponent TWebConnection czy klienta z serwerem za pomoc protokou transportowego HTTP. W celu zarzdzania tym komponentem trzeba zarejestrowa bibliotek
wininet.dll w komputerze z klientem. Zwykle nie wymaga to dodatkowej pracy, poniewa plik ten znajduje si w systemowym folderze Windows, jeli w komputerze
zainstalowany jest Internet Explorer.
W komputerze z serwerem musi by zainstalowane oprogramowanie Internet Information Server 4.0 (lub nowsza wersja) albo Netscape Enterprise 3.6 (lub nowsza wersja).
Oprogramowanie to zapewnia komponentowi TWebConnection dostp do biblioteki dynamicznej HTTPsrvr.dll (znajdziesz t bibliotek w katalogu BIN Delphi), ktra rwnie
powinna by umieszczona w serwerze. Jeli na przykad plik HTTPsrvr.dll jest umieszczony w folderze Scripts programu IIS 4.0 w serwerze www.someserver.com, to waciwo
property URL: String;

powinna zawiera nastpujc warto:


http://someserver.com/scripts/httpsrvr.dll

Jeli adres URL jest prawidowy i serwer jest odpowiednio skonfigurowany, to przy
waciwoci
property ServerName: String;

Cz III Rozproszone aplikacje bazodanowe

254

w oknie Object Inspector pojawi si lista wszystkich nazw zarejestrowanych serwerw


aplikacji. Jedn z tych nazw trzeba przypisa waciwoci ServerName.
Po ustawieniu nazwy serwera jego identyfikator GUID zostanie automatycznie przypisany
waciwoci:
property ServerGUID: String;

Waciwoci
property UserName: String;

oraz
property Password: String;

w razie potrzeby mog zawiera nazw i haso uytkownika, ktre zostan uyte podczas
autoryzacji.
Waciwo
property Proxy: String;

zawiera nazw serwera poredniczcego (proxy).


Moesz doczy nazw aplikacji do nagwka komunikatu HTTP, korzystajc z waciwoci:
property Agent: String;

Do otwierania i zamykania poczenia suy waciwo:


property Connected: Boolean;

Podobne funkcje peni metody:


procedure Open;
procedure Close;

Dostp do interfejsu IAppServer mona uzyska za pomoc waciwoci


property AppServer: Variant;

albo metody
function GetServer: IAppServer; override;

List dostpnych serwerw aplikacji zwraca metoda:


function GetServerList: OleVariant; virtual;

Waciwo
property ObjectBroker: TCustomObjectBroker;

pozwala skorzysta z instancji komponentu TSimpleObjectBroker, aby uzyska list


dostpnych serwerw w czasie wykonywania aplikacji.
Metody obsugi zdarze komponentu TWebConnection s takie same jak metody komponentu TDCOMConnection (zobacz tabela 8.1).

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

255

Komponent TCORBAConnection
Komponent TCORBAConnection zapewnia aplikacji klienta dostp do serwera CORBA.
W celu skonfigurowania poczenia z serwerem wystarczy ustawi jedn waciwo:
type TRepositoryId = type string;
property RepositoryId: TRepositoryId;

Musimy poda nazw serwera i zdalnego moduu danych, oddzielajc je ukonikiem.


Jeli na przykad nazwa serwera to CORBAServer, a nazwa moduu to CORBAModule, waciwo ta powinna mie warto:
CORBAServer/CORBAModule

Adres serwera mona rwnie poda w notacji IDL (od ang. Interface Definition Language):
IDL: CORBAServer/CORBAModule:1.0

Waciwo
property HostName: String;

powinna zawiera nazw komputera z serwerem albo jego adres IP. Jeli nie ustawisz
tej waciwoci, komponent TCORBAConnection poczy si z pierwszym znalezionym
serwerem, ktry ma parametry okrelone przez waciwo RepositoryId. Nazwa serwera CORBA jest zawarta we waciwoci:
property ObjectName: String;

Do otwierania i zamykania poczenia suy waciwo:


property Connected: Boolean;

Podobne funkcje peni metody:


procedure Open;
procedure Close;

Jeli z jakiego powodu poczenie nie zostanie otwarte, mona zapobiec zawieszeniu
aplikacji za pomoc poniszej waciwoci:
property Cancelable: Boolean;

Kiedy ta waciwo jest ustawiona na True, poczenie zostanie anulowane, jeli nie
uda si go nawiza w czasie jednej sekundy. Moesz rwnie ustawi metod obsugi
zdarzenia:
type TCancelEvent = procedure(Sender: TObject; var Cancel: Boolean;
var DialogMessage: String) of object;
property OnCancel: TCancelEvent;

ktra jest wywoywana przed anulowaniem poczenia.


Kiedy poczenie zostanie otwarte, klient moe uzyska dostp do interfejsu IAppServer
za pomoc waciwoci
property AppServer: Variant;

Cz III Rozproszone aplikacje bazodanowe

256

albo metody
function GetServer: IAppServer; override;

Metody obsugi zdarzenia komponentu TCORBAConnection s dziedziczone (z wyjtkiem


opisanej wyej metody Cancel) po klasie TCustomConnection. Metody te opisano w tabeli 8.1.
TCORBAConnection nie jest dostpny w Delphi 7. Korzystanie z technologii CORBA
jest moliwe w Delphi 7, ale nie w poczeniu z technologi DataSnap.

Dodatkowe komponenty
brokery pocze
Kolekcja DataSnap zawiera zestaw dodatkowych komponentw, ktre uatwiaj zarzdzanie poczeniami midzy zdalnymi klientami a serwerami aplikacji. Wyjanijmy, jak
si ich uywa.

Komponent TSimpleObjectBroker
Komponent TSimpleObjectBroker zawiera list serwerw, z ktrych mog korzysta
klienty wielowarstwowej aplikacji rozproszonej. List t tworzy si w fazie projektowania aplikacji. W razie potrzeby (na przykad jeli serwer bdzie nieczynny lub przeciony), komponent poczeniowy aplikacji klienta moe uy jednego spord dodatkowych
serwerw z listy komponentu TSimpleObjectBroker w czasie dziaania aplikacji.
Aby wczy t funkcj, podaj list serwerw w komponencie TSimpleObjectBroker
i zdefiniuj wskanik do niego we waciwoci ObjectBroker swojego komponentu poczeniowego (zobacz wyej). Jeli poczenie zostanie ponownie nawizane, nazw
serwera bdzie mona pobra z listy komponentu TSimpleObjectBroker.
Lista serwerw jest zdefiniowana przez waciwo:
property Server: TServerCollection;

W fazie projektowania aplikacji list serwerw tworzy si za pomoc specjalnego edytora (zobacz rysunek 8.6), ktry mona wywoa przez kliknicie przycisku waciwoci
w oknie Object Inspector.
Rysunek 8.6.
Edytor listy serwerw
przechowywanej
w komponencie
TSimpleObjectBroker

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

257

Waciwo Servers to kolekcja obiektw TServerItem. Klasa ta ma kilka waciwoci,


ktre umoliwiaj opisanie kluczowych parametrw serwera.
Waciwo
property ComputerName: String;

definiuje nazw komputera, w ktrym dziaa serwer aplikacji. Moesz te ustawi nazw
serwera, ktra bdzie wywietlana na licie serwerw:
property DisplayName: String;

Za pomoc poniszej waciwoci moesz okreli, czy rekord serwera bdzie dostpny,
czy niedostpny:
property Enabled: Boolean;

Kiedy prba uycia rekordu z listy nie powiedzie si, waciwo


property HasFailed: Boolean;

przybierze warto True i od tego momentu rekord bdzie ignorowany.


Waciwo
property Port: Integer;

zawiera numer portu, ktrego uyto w celu poczenia si z serwerem.


Kiedy poczenie jest nawizywane, wartoci powyszych waciwoci s podstawiane
w miejsce odpowiednich waciwoci komponentu poczeniowego:
DCOMConnection.ComputerName :=
TSimpleObjectBroker(DCOMConnection.ObjectBroker).Servers[0].ComputerName;

Oprcz listy serwerw komponent TSimpleObjectBroker zawiera tylko kilka dodatkowych


waciwoci i metod.
Metoda
function GetComputerForGUID(GUID: TGUID): String; override;

zwraca nazw komputera, w ktrym zarejestrowany jest serwer z identyfikatorem GUID


okrelonym przez parametr GUID.
Metoda
function GetComputerForProgID(const ProgID): String; override;

zwraca nazw komputera, w ktrym zarejestrowany jest serwer o nazwie okrelonej


przez parametr ProgID.
Waciwo
property LoadBalance: Boolean;

suy do wybierania serwera z listy. Jeli ma warto True, serwer jest wybierany losowo;
w przeciwnym razie sugerowana jest pierwsza dostpna nazwa serwera.

Cz III Rozproszone aplikacje bazodanowe

258

Komponent TLocalConnection
Komponentu TLocalConnection uywa si lokalnie w celu uzyskania dostpu do istniejcych komponentw dostawczych.
Waciwo
property Providers[const ProviderName: String]: TCustomerProvider;

zawiera wskaniki do wszystkich komponentw dostawczych, ktre znajduj si w tym


samym module co dany komponent TLocalConnection. Poszczeglne pozycje tej listy
s indeksowane wedug nazw komponentw dostawczych.
czn liczb komponentw dostawczych na licie zwraca waciwo:
property ProviderCount: Integer;

Ponadto, stosujc komponent TLocalConnection, moemy uzyska lokalny dostp do


interfejsu IAppServer. Uyj waciwoci
property AppServer: IAppServer;

albo metody
function GetServer: IAppServer; override;

Komponent TSharedConnection
Jeli interfejs IAppServer zdalnego moduu danych uywa metody, ktra zwraca wskanik do analogicznego interfejsu innego zdalnego moduu danych, to pierwszy modu
nazywamy macierzystym, a drugi potomnym (zobacz rozdzia 9. Serwer aplikacji). Komponent TSharedConnection czy aplikacj klienta z potomnym moduem
danych serwera aplikacji.
Waciwo
property ParentConnection: TDispatchConnection;

powinna zawiera wskanik do komponentu poczeniowego z macierzystym zdalnym


moduem danych serwera aplikacji. Nazw moduu potomnego okrela waciwo:
property ChildName: String;

Jeli interfejs macierzystego zdalnego moduu danych zosta skonfigurowany prawidowo, lista w oknie Object Inspector bdzie pokazywa nazwy wszystkich moduw
potomnych.
Interfejs IAppServer potomnego zdalnego moduu danych jest zwracany przez waciwo
property AppServer: Variant;

albo metod
function GetServer: IAppServer; override;

Metody obsugi zdarzenia komponentu TSharedConnection s dziedziczone po klasie


TCustomConnection. (zobacz tabela 8.1).

Rozdzia 8. Technologia DataSnap. Mechanizmy zdalnego dostpu

259

Komponent TConnectionBroker
Komponent TConnectionBroker zapewnia scentralizowan kontrol nad poczeniem
midzy klienckimi zestawami danych a serwerem aplikacji. Waciwo Connection
Broker we wszystkich klienckich zestawach danych musi wskazywa instancj komponentu TConnectionBroker. Dziki temu zmiana rodzaju poczenia (na przykad z HTTP
na gniazda TCP/IP) nie wymaga modyfikowania waciwoci RemoteServer we wszystkich komponentach TClientDataSet wystarczy zmieni waciwo:
property Connection: TCustomRemoteServer;

Dostp do interfejsu IAppServer mona uzyska za pomoc waciwoci


property AppServer: Variant;

albo metody
function GetServer: IAppServer; override;

Metody obsugi zdarze komponentu TConnectionBroker opisano w tabeli 8.1.

Podsumowanie
Wielowarstwowe aplikacje rozproszone zapewniaj efektywn interakcj midzy wieloma
zdalnymi, uproszczonymi klientami a serwerami aplikacji za pomoc oprogramowania
poredniego. W aplikacjach wielowarstwowych najczciej uywa si modelu trjwarstwowego, w ktrym oprogramowanie porednie skada si tylko z serwera aplikacji.
W Delphi do tworzenia aplikacji trjwarstwowych uywa si komponentw DataSnap
i zdalnych moduw danych. Wszystkie te narzdzia s dostpne w wersjach obsugujcych rne protokoy transportowe.
Trjwarstwowe aplikacje rozproszone korzystaj te z komponentw TDataSetProvider
oraz TClientDataSet, ktre obsuguj zestawy danych po stronie klienta.

You might also like