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

Multi-tier 13. rész

forráskód letöltése
Mostani cikkben a DCOM-, Socket- és Web-kliens bővítését láthatjuk a TSimpleObjectBroker komponenssel.

Az előző cikkben bemutatásra került a TSimpleObjectBroker komponens, a legfontosabb tulajdonságaival és metódusaival. Láttuk, hogy a komponens lehetőségeit, szolgáltatásait igazán hálózati környezetben lehet kihasználni, de ez természetes is, hiszen az egész MIDAS paletta a multi-tier alkalmazások fejlesztéséhez készült, ami az esetek túlnyomó részében egyben hálózati alkalmazást is jelent, bár használható egyedi gépen is. Mivel a példánkhoz a 10. cikk alkalmazásszerverét használtuk, ennek regisztrálva kell lennie rendszerünkben.
A konstansdeklarációban szereplő GUID-et a szerveralkalmazás Szerver_tlb típuskönyvtára PeldaSzerver attribútumának GUID-jéből másolhatjuk ki!


Példaprogramjaink is úgy készültek, hogy azok az olvasók is ki tudják próbálni őket, akik nem rendelkeznek hálózati környezettel.
Jelen cikkünk könyvtárában három példaprogram alkönyvtára található. Az ezekben lévő példaprogramok az előbbi példák kibővítései a TSimpleObjectBroker komponenssel, amelyek szintén kipróbálhatók egy gépen is.

Ahol a példaprogramokban a számítógépnév szerepel, ott a cikkíró számítógépének neve van feltüntetve (nyul), ezt mindenki cserélje ki a saját számítógépének nevével, amit a Windows Vezérlőpult hálózati beállításainál talál meg! (Ahol az IP-cím van megadva, ott valószínűleg nem lesz szükség cserére, mert általánosságban elmondható, hogy a példákban használt 127.0.0.1 -es IP-cím a saját gépet jelenti.)

Mivel már említettük, hogy a mostani cikk példaprogramjai az előző cikkek példáinak bővítései, ezért ebben a cikkben már csak a TSimpleObjectBroker és a kapcsolódást ellátó komponensek (TDCOMConnection, TWEBConnection és TSocketConnection) összefüggéseit tárgyaljuk röviden.

Most nézzük sorban az egyes példaprogramokat:

- DCOM kliensalkalmazás (DCOMKliens könyvtár):
Az adatmodulra ráhelyeztünk egy TSimpleObjectBroker-t (SimpleObjectBroker1), és ennek Servers tulajdonságánál a ServerCollection listában az előző cikkben megismert módon felsoroltuk a rendelkezésre álló szervergépek neveit. (Ha nem hálózaton dolgozunk, akkor a saját gépünk windows-os számítógépnevét írhatjuk be.)
A DCOMConnection1 (TDCOMConnection) komponens ObjectBroker tulajdonságának kiválasztottuk a SimpleObjectBroker1-et. Figyeljük meg, hogy ha a Connected tulajdonságot False-ra állítjuk és kitöröljük a ComputerName tulajdonság értékét, akkor a Connected újbóli True-ra állításakor a ComputerName-ben automatikusan megjelenik a SimpleObjectBroker1 által a szerverlistából szolgáltatott számítógépnév.
Aki hálózati környezetben próbálja ki a programot, vagyis a ServerCollection-ben több gépe is szerepel, az kipróbálhatja a LoadBalanced tulajdonság mindkét értékének hatását a TSimpleObjectBroker működésére (alapértelmezésben False, és egy gépen nem befolyásolja a működést, mert egy szerverből mindegy hogy hogyan választunk).

- WEB kliensalkalmazás (WEBKliens könyvtár):
Az adatmodulra itt is ráhelyeztünk egy TSimpleObjectBroker-t (SimpleObjectBroker1), és ennek Servers tulajdonságánál a ServerCollection listában felsoroltuk a rendelkezésre álló szervergépek neveit.
Példánkban - ahhoz hogy a program egygépes környezetben is működjön - a WebConnection1 Proxy tulajdonságához beírtuk a saját gép IP-címét (127.0.0.1).

- Socket kliensalkalmazás (SocketKliens könyvtár):
A TsimpleObjectBroker Servers tulajdonságánál a szerverlistában szereplő gépeket azonosíthatjuk nevükkel vagy IP-címükkel.
Egygépes (nem hálózati) környezetben is kipróbálható, hogy amennyiben a listában a szervergép nevét adjuk meg, akkor a TSocketConnection kapcsoló komponens Connected tulajdonságát True-ra állítva a Host tulajdonságban megjelenik a TsimpleObjectBroker által szolgáltatott gépnév, amennyiben pedig a szerverlistában a szervergépet az IP-címmel azonosítottuk, akkor a Connected tulajdonság True-ra állításával a TSocketConnection Address tulajdonsága töltődik ki a szerverlistában specifikált IP-címmel. (Hálózatos környezetben itt is érdemes kipróbálni a TSimpleObjectBroker LoadBalanced tulajdonságának hatását.)

Mindhárom példaprogram Form-jára ráhelyeztünk két TEdit komponenst (Edit1, Edit2), és a Form OnActivate eseménykezelőjébe beírtuk az alábbi kódot:
procedure TfrmFoform.FormActivate(Sender: TObject);
type PGUID = ^TGUID;
var 
 CompName: String;
const 
 ID_Srvr:TGUID='{9ADABF83-5277-11D4-B5EE-8FAE3D21A825}';
begin
  Edit1.Text:=DM.SimpleObjectBroker1.
        GetComputerForGUID(ID_Srvr);
  CompName:=Edit1.Text;
  Edit2.Text:=IntToStr(DM.SimpleObjectBroker1.
       GetPortForComputer(CompName));
end;
Ennek hatására az Edit1-ben kiírásra kerül a TSimpleObjectBroker által szolgáltatott szervernév, az Edit2-ben pedig a port száma.

Multi-tier cikksorozat