Delphi - Multi-tier alkalmazásfejlesztés MIDAS komponensekkel

Multi-tier 11. rész

forráskód letöltése
MIDAS komponensekkel való ismerkedésünk során mostani cikkünkben egy Socket kliens készítését ismerhetjük meg a szerverhez. A TSocketConnection a Windows socket-eket használja az alkalmazásszerverhez történő kapcsolódás menedzselésére. A socket tulajdonképpen nem más, mint egy konkrét kapcsolat egy adott porton keresztül.
A TWEBConnection-től eltérően nem HTTP, hanem TCP/IP (Transport Control Protocol/Internet Protocol) protokollt használ ennek megvalósítására. Példánkban az előző cikk szerverét használtuk.
A kliensalkalmazásunk is hasonló a TWEBConnection-nél bemutatotthoz, de itt az alkalmazásszerverhez történő kapcsolódáshoz nem a TWEBConnection-t, hanem a TSocketConnection komponenst használtuk.
Míg a TWEBConnection-nél a szerverre való kapcsolódás URL-cím alapján történik, a TSocketConnection-nél IP-cím vagy hostnév és portcím alapján történik a szerver azonosítása. Ahhoz, hogy a socket kapcsolat létrejöhessen az alkalmazásszerver és a kliensalkalmazás között, az alkalmazásszerveren futnia kell a ScktSrvr.exe-nek (ez a \Program Files\Borland\Delphi5\Bin, vagy Delphi4 esetén a \Program Files\Borland\Delphi4\Bin könyvtárban található).
Ha elindítottuk a a ScktSrvr.exe-t, ikonja megjelenik a tálcán. Kattintsunk rá duplán (vagy egyszer a jobb gombbal), ekkor megjelenik a szerver Form-ja. Itt a Users tab-ra kattintva megjelennek a szerveren éppen aktív socket kapcsolatok.
Az adatmodulunkra felhelyeztünk egy TSocketConnection komponenst. Ahhoz, hogy a kapcsolatot létre tudjuk hozni az alkalmazásszerverrel, a tulajdonságok közül vagy az Address-t kell a saját gépünk IP-címére állítanunk (helyi gép esetén 127.0.0.1), vagy helyette a gépünk (vagy hálózat esetén a szerveralkalmazást futtató gép) hostnevét megadnunk (ez természetesen az IP-címre is ugyanígy működik).
(Amennyiben a példaprogramot helyi intraneten vagy Interneten futtatjuk, a későbbi példákban látni fogjuk, hogy hogyan lehet a szerveralkalmazást tartalmazó számítógépet a hálózaton a TSimpleObjectBroker segítségével kiválasztani, és a kapcsolódást menedzselő komponens számára rendelkezésre bocsátani.)
Az adatmodulunk többi része azonos az előző cikk adatmoduljával, csak itt a TClientDataSet komponensek RemoteServer tulajdonságánál a SocketConnection1-et adtuk meg.

Nézzük a TSocketConnection további tulajdonságait:

InterceptGUID:
Ez a tulajdonság egy COM-objektum GUID-jét adja meg, amely "elfogja" a socket kapcsolat üzeneteit, adatait elküldésük előtt és fogadásuk után. Így lehetőségünk van az adatokat titkosítani, be- és kicsomagolni, stb.

SupportCallbacks:
Meghatározza, hogy a kapcsolódást ellátó (TStreamedConnection osztályból származtatott) komponens (esetünkben TSocketConnection) tudja-e kezelni a visszahívásokat az alkalmazásszerver interfészben.
Ha értékét True-ra állítjuk (alapértelmezés), a kapcsoló komponens el tudja látni a marshaling hívásokat az alkalmazásszervertől a kliensalkalmazáshoz az interfészen keresztül, visszahívásként.
(A "marshaling" fogalmát magyarra leginkább "rendezés"-ként, "rendbe szedés"-ként lehet fordítani) egy olyan mechanizmus, amely megengedi egy kliensnek, hogy interfész függvényhívásokat intézzen egy különálló processzben futó távoli objektumhoz, vagy egy másik géphez.)

Multi-tier cikksorozat