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

Multi-tier 10. rész

forráskód letöltése
A Midas komponensekkel történő ismerkedésünk során most a WEB-es kliens készítését vesszük sorra, melyet egy COM szerverhez készítünk. Példaprogramunkhoz a szervert a COMSzerver könyvtárban találjuk. A szervert a már megismert módon regisztráljuk.

A kliensalkalmazásunk adatmodulján elhelyeztünk egy TWebConnection komponenst (WebConnection1). Először az URL (Uniform Resource Locator) tulajdonságot kell beállítanunk. Ez az a URL-cím, ahol a httpsrvr.dll elérhető (a szerveroldalon telepítve kell lennie), ugyanis a TWebConnection komponens HTTP (Hypertext Transfer Protocol) protokollt használ.
A szerveroldalon ehhez telepítve kell lennie a Wininet.dll-nek (ez a Windows\System könyvtárban található, amennyiben rendelkezünk MS Internet Explorer 3, vagy ennél magasabb verziószámú WEB-böngészővel, illetve Netscape 3.6-tól).

A példaprogramunkat helyileg (Internet csatlakozás nélkül) úgy tudjuk kipróbálni, ha a gépünkre telepítünk egy WEB-szerver programot (pl.: PWS). Ilyenkor egy gépen lesz a szerver és a kliens, és ugyanúgy tudjuk használni a TWebConnection-re épülő kliens alkalmazásunkat, mintha egy WEB-szerverhez csatlakoznánk az Interneten, vagy helyi intraneten.
WEB-szervernek példánkhoz megfelel egy Microsoft Personal Web Server (PWS), amit a Windows telepítő CD-jén találhatunk.
A fent leírtak szerint a WEB-szerver scripts\ könyvtárába másoljuk be a httpsrvr.dll-t, amit a Delphi Bin könyvtárban találhatunk (pl.: C:\Program Files\Borland\Delphi5\Bin).
Az URL példánkban a következő: "http://localhost/scripts/httpsrvr.dll", ugyanis a PWS nem rendel a WEB-helyünkhöz domain-nevet, így a domain-nevünk a "localhost" lesz. Ehelyett használhatjuk még a 127.0.0.1 IP-címet is (ami a saját helyi gépünket jelenti), az eredmény ugyanaz lesz. (Persze amennyiben más WEB-szerverünk van telepítve a gépünkre, akkor azt a domain-nevet kell használni, ami a szóban forgó WEB-helyet azonosítja. A DNS (Domain Naming Service) beállításait elvégezhetjük a Windows Vezérlőpultjának Hálózat, TCP/IP, Tulajdonságok párbeszédpanelnél, ezzel itt nem foglalkozunk.
Eztán a UserName tulajdonsághoz megadtuk a SYSDBA-t, a Password-höz a masterkey-t (ezek az adatbázisba való bejelentkezéshez kellenek), a LoginPrompt-ot pedig False-ra állítottuk.
Az Agent tulajdonságnál (felhasználói ágens) meghagytuk az alapértelmezést (MIDAS 3.0), ez a HTTP-üzenetekhez kell, de el is lehet hagyni (opcionális).
Ezek után megadtuk a ServerName tulajdonságot. Ennek legegyszerűbb módja az, hogy rákattintunk a ServerName tulajdonságra, és a megjelenő kombinált listát kinyitjuk. Az ekkor megjelenő lista tartalmazza az összes beregisztrált szerverünket; innen kiválasztjuk a példaprogramunkhoz készített szervert (Szerver.PeldaSzerver). Ha ezt megtettük, a ServerGUID tulajdonságban megjelenik a szerverünk GUID-je (Globally Unique Identifier, globális egyedi azonosító, lásd 04.cikk).
A Connected tulajdonság True-ra állításával tervezési időben leellenőrizhetjük a kapcsolat működését.

Következő komponensként az adatmodulra helyeztünk egy TClientDataSet komponenst (cdsSzemelyek). Ennek RemoteServer tulajdonságánál a megjelenő listából kiválasztjuk a WebConnection1-et, a ProviderName-nél a dspSzemelyek-et, az Active property-t True-ra állítottuk.
A Form-ra helyeztünk továbbá egy TDataSource komponenst is (dsrSzemelyek), amelynek DataSet tulajdonságának a cdsSzemelyek-et adtuk meg és még egy TDataSource komponenst (dsrJelentkezes a cdsJelentkezes-nek).
A Form-on találhatunk még egy TClientDataSet komponenst (cdsJelentkezes). Ennek RemoteServer tulajdonságánál szintén a WebConnection1-et választottuk ki, a ProviderName-nél a dspJelentkezes-t, a MasterSource-höz a dsrSzemelyek-et adtuk meg, a MasterFields-nél pedig a SZEMELYKOD mezőt használtuk a master-detail kapcsolathoz.
Ezzel az adatmodul el is készült.

Szót kell még ejtenünk a TWEBConnection két további tulajdonságáról:

- Proxy:
Ezt a tulajdonságot akkor kell kitöltenünk, ha a komponens a host értékét nem tudja meghatározni helyi szerverként (a szerver nem helyiként van regisztrálva). Ilyenkor a Proxy tulajdonságnak kell tartalmaznia azoknak a proxy-szervereknek a listáját, amelyek szükségesek a kapcsolat létrehozásához. Ha az alkalmazásszerverünk helyiként van regisztrálva, ezt a tulajdonságot nem töltjük ki, egyébként a tulajdonságban felsoroljuk az összes proxy-szerverek host-neveit, amelyek továbbítani tudják a kéréseket a kívánt szervergépek felé.

- ProxyByPass:
Azoknak a helyileg regisztrált szervereknek a host-neveit tartalmazza, amelyek nem igényelnek proxy-szervert.
Segítségével meghatározhatjuk azokat a szervereket, amelyekkel a TWEBConnection komponens közvetlen kapcsolatot tud létrehozni. Ha ezt a tulajdonságot üresen hagyjuk (alapértelmezés), akkor a TWEBConnection komponens megkeresi a regisztrációs állományban a helyileg regisztrált szervereket, és kikerüli a proxy-szervert, amennyiben van ilyen.

Az alkalmazásunk fő Form-ja hasonló az előző példák egyikében (05.cikk) használthoz, ezt itt most már külön nem tárgyaljuk.



Multi-tier cikksorozat