Professional Documents
Culture Documents
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
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Wstp ............................................................................................... 7
Cz I
Rozdzia 2. Automatyzacja................................................................................. 49
Podstawowe pojcia Automatyzacji ................................................................................ 49
Implementacja Automatyzacji w Delphi ......................................................................... 53
Obiekt Automatyzacji...................................................................................................... 55
Przykadowa aplikacja Automatyzacji ............................................................................ 65
Podsumowanie ................................................................................................................ 69
Cz II
Spis treci
5
Dostawcy danych .......................................................................................................... 271
Interfejs IProviderSupport ............................................................................................. 275
Rejestrowanie serwerw aplikacji ................................................................................. 275
Tworzenie przykadowego serwera aplikacji................................................................. 276
Podsumowanie .............................................................................................................. 279
Cz V
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
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.
244
W starszych wersjach Delphi (3, 4 i 5) komponenty te nosiy nazw MIDAS (od ang.
Multi-tier Distributed Application Services).
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
245
Rysunek 8.1.
Wielowarstwowa
architektura aplikacji
bazodanowej
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:
246
Automatyzacja,
WEB,
CORBA,
MTS,
SOAP.
247
Rysunek 8.2.
Diagram
wielowarstwowej
aplikacji
rozproszonej
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
248
Rysunek 8.3.
Wybieranie zdalnego
moduu danych
z magazynu obiektw
Delphi
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:
249
(niedostpny w wersji 7)
TSOAPConnection uywa poczenia poprzez WebServices
Komponent TSOAPConnection zostanie omwiony oddzielnie.
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.
250
albo metody
procedure Open;
procedure Close;
Transmisj danych midzy klientem a serwerem zarzdza interfejs IAppServer komponentu TDCOMConnection:
property AppServer: Variant;
Waciwo
property ObjectBroker: TCustomObjectBroker;
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).
251
Rysunek 8.4.
Serwer gniazd
ScktSrvr.exe
Opis
type TGetUsernameEvent =
procedure(Sender: TObject);
var Username: String) of object;
property OnGetUserName:
TGetUsernameEvent;
Waciwo
property Host: String;
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;
253
Rysunek 8.5.
Rejestrowanie
przechwytujcego
obiektu COM
w serwerze gniazd
Waciwo
property ObjectBroker: TCustomObjectBroker;
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;
Jeli adres URL jest prawidowy i serwer jest odpowiednio skonfigurowany, to przy
waciwoci
property ServerName: String;
254
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;
albo metody
function GetServer: IAppServer; override;
Waciwo
property ObjectBroker: TCustomObjectBroker;
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;
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;
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;
256
albo metody
function GetServer: IAppServer; override;
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
257
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;
suy do wybierania serwera z listy. Jeli ma warto True, serwer jest wybierany losowo;
w przeciwnym razie sugerowana jest pierwsza dostpna nazwa serwera.
258
Komponent TLocalConnection
Komponentu TLocalConnection uywa si lokalnie w celu uzyskania dostpu do istniejcych komponentw dostawczych.
Waciwo
property Providers[const ProviderName: String]: TCustomerProvider;
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;
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;
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;
albo metody
function GetServer: IAppServer; override;
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.