• Bevezet és evezetés
SOAP komponensek Delphiben (Simple Object Access Protocol)
- Az egyszerűen programozható webhozzáférés azt jelenti, hogy a fejlesztők saját programjukat a weben elérhető szolgáltatásokból építik fel komponensről komponensre. - A már megírt kódokat felhasználhatjuk, beépíthetjük programunkba – bizonyos feltételek mellett. „A webszolgáltatás egy szabványos webprotokollon elérhető, programozható logika.”
Ez a rövid, rövid, de pontos definíció határozza meg az összes szempontot, szempontot, ami mérvadó egy ilyen program elkészítésénél: elkészítésénél: 1. PlatformPlatform- és nyelvfüggetlenség: nyelvfüggetlenség: - az adatok kezelése gépgép- és operációsrendszer függő ( tetszőleges programozási nyelvben használhatók). használhatók). 2. Szabványosság: : Szabványosság - olyan felületet kell biztosítani a felhasználók számára, számára, ami támogatja az egységes adatreprezentációt. adatreprezentációt. 3. Elérhetőség: Elérhetőség: - a kommunikációra használjunk használjunk fel egy olyan nyelvet, nyelvet, melyet minden géptípus ismer és elfogad. elfogad.
2. SOAP (Simple Object Access Protocol) A SOAP egy alkalmazás rétegbeli protokoll, protokoll, mely felhasználja a HTTP réteg szolgáltatásait. szolgáltatásait. Ez egy ajánlás, ajánlás, mely: mely: 1. Általános leírást ad az adatok kézbesítésére XML dokumentumként. dokumentumként. 2. Leírja a webszolgáltatásban szereplő egyszerűbb és összetettebb adattípusainak használatát és az azoknak megfelelő üzeneteket. üzeneteket. 3. Megfogalmazza a HTTPHTTP-re történő leképezés szabályait. szabályait.
• Alkalmazott protokollok 1. XML (eXtensible Markup Language) - Az XML biztosítja az egységes adatrepreadatreprezentációt a különböző platformokon. platformokon. - Szövegesen ábrázolja az adatokat. adatokat. Egy webszolgáltatásban minden XML nyelven történik: történik: - a kommunikáció egyes szereplők között, között, - az adatok egységes kezelése, kezelése, - a konfigurációs állományok beállításai. beállításai.
3. WSDL (Web Service Descriptor Language) A WSDL egy jólformált XML dokumentum, dokumentum, melyben szerepel: szerepel: - a szolgáltatás által elvégezhető műveletek listája - elvégzésük módja. módja. A WSDL tartalmazza: tartalmazza: - az adattípusokat, adattípusokat, - az üzenetek struktúráját, struktúráját, - az operációkat, operációkat, - a protokoll kötéseket, kötéseket, - a címeket és a szolgáltatásokat
1
4. UDDI (Universal Description, Discovery and Integration) Ez egy nyilvántartás, nyilvántartás, könyvtár, könyvtár, ami adatokat tartalmaz cégekről, cégekről, és az általuk nyújtott webszolgáltatásokról. webszolgáltatásokról. Ez is XMLXML-alapú, alapú, ami megkönnyíti a kommunikációt és egységesíti a lekérdezéseket. lekérdezéseket. Ezt a nyilvántartást, nyilvántartást, megírt programunkból SOAP protokollon keresztül érhetjük el. el.
•
SOAP Szerver létrehozása
Elsősorban el kell indítani a Delphi 7 – t, majd File -> New -> Other menüpontban ki kell választani a Web Services filet, majd a SOAP Server Applicaton – t, amint ezt az alábbi ábra is mutatja :
A megjelenő World Wide Web szerverszerver-applikációk közül ki kell választani egyet. egyet. Legyen ez most a CGI StandStand-alone executable a felsoroltak közül, közül, habár sokkal ajánlottabb ajánlottabb egy Apache vagy ISAPI/NSAPI DLL – t választani, választani, mert hatékonyabb. hatékonyabb.
Egy új SOAP Szerver Applikáció és SOAP WEB Module generálódik és egy kérdés jelenik meg : “AkarunkAkarunk-e interfészt a SOAP modulunkhoz?” modulunkhoz?” Kisseb szerver esetén célszerű NEM – el válaszolni, válaszolni, komoly szerver esetén jobb ha interfész is van. Válasszuk most tehát a YES –t :
Ezzel létrejött a SOAP Web Module, Module, amely máris három komponenst tartalmaz : -THTTPSoapDispatcher -THTTPSoapPascalInvoker -TWSDLHTMLPublish
2
Ez a három komponens elegendő, elegendő, most már a felhasználandó adatbázis tábláira lehet koncentrálni. koncentrálni. Mentsük le tehát a SOAP Web Module – t, valamint az egész projektet is. is. Most adjunk hozzá hozzá egy újjabb SOAP Data Module – t az 1. – es pont alapján. A SOAP Data Module Wizard - ban adjunk neki nevet és mentsük le
A következőkben az adatbázishoz való kapcsolást kell megvalósítani. Ezt többféleképpen lehet megvalósítani, például ADO, ADO, vagy DataSnap és dbExpress segítségével. Ennek megvalósításától most eltekintek.
Miután létrehoztuk az adatbázissal való kapcsolatot, mindent le kell ismét menteni és kompilálni kell. A kipróbáláshoz elindítjuk a web szervert, szervert, például Xitami, Xitami, és a szerverünk .exe fájlját másoljuk be a Xitami CGICGI-BIN könyvtárába. könyvtárába. Ha futtatjuk az .exe fájlt, akkor nem fog történni semmi, hiszen nem hoztunk létre felületet a szerverünknek. A helyes működéshez, írjuk be az explorerbe explorerbe,, hogy http://localhost/cgihttp://localhost/cgi-bin/szerverneve.exe bin/szerverneve.exe Ha helyesen működik a szerverünk, akkor egy, az alábbihoz hasonló ábrát kell kapjunk :
•
SOAP kliens létrehozása
A szerverrel való kapcsolat létrehozásához, létrehozásához, elhelyezzünk elhelyezzünk a kliensen egy TSOAPConnection komponenst a Delphi7 Web Services menüjéből. menüjéből. Állítsuk be az URL tulajdonságot a szerver által definiált URL – re és külön jelezzük, jelezzük, hogy SOAP – ot használunk, használunk, nem pedig WSDL - t. Tehát a TSOAPConnection komponens URL tulajdonsága valahogy így kéne kinézzen : http://192.168.92.201/cgihttp://192.168.92.201/cgi-bin/SzerverNeve.exe/soap/IAppServer ha IP címet használunk, használunk, vagy pedig: pedig: http://localhost/cgihttp://localhost/cgi-bin/SzerverNeve.exe/soap/IAppServer
•
SOAP komponensek
A SOAP fogalma szorosan összefügg a Web Service fogalmával. fogalmával. Ezért Delphi 7 – ben a SOAP komponenseket a Web Service file alatt találjuk meg, az alábbi sorrend szerint :
Tehát a SOAP klienset klienset az URL segítségével irányítom a szolgáltatás felé, felé, onnan egy magasszintű API továbbítja a részleteket. részleteket.
3
THTTPRIO Statikusan összekötött hívásokat generál, generál, hogy segítségül hívjon interfészeket egy távoli Web Service applikációtól. applikációtól. Ez egy dinamikus metódustáblát generál amit a belső memóriában tárol. tárol. A metódusokat ebből a táblából hajtja végre, végre, SOAP kérésként kódolva a metódust és HTTP kérésként küldi el az üzenetet. üzenetet. Kicsomagolja a HTTP válasz – üzenetet, üzenetet, hogy megkapja a visszatérített értéket vagy, vagy, hogy egy kivételt hozzon létre ha az elküldött üzenet kivételévelt képezett a szerveren. szerveren.
THTTPReqResp Ha proxy szervert akarunk használni, használni, akkor ezt a komponenst kell használni. használni. Ugyanakkor ez végzi el a THTTPRIO által kért metódust úgy, úgy, hogy két parancsot képes kiadni : - “GET” kérést egy WSDL dokumentumhoz - “POST” kérést ahhoz, ahhoz, hogy a metódushívást továbbítsa a szervernek elvégzésre és hogy visszaszolgáltassa a választ. választ. Windows alatt ez a komponens a WININET.DLL – t használja a szerverrel való kapcsolat létrehozására. létrehozására.
TSOAPConnection Egy többrétegű applikáció kliens részében használjuk. használjuk. Segítségével létrehozzuk és fenntartsuk a kapcsolatot egy távoli szerverrel. szerverrel. A TSOAPConnection egy interfészt is szerezhet a szervernek (IAPPSERVER vagy IAPPSERVERSOAP) IAPPSERVERSOAP) Ha DataSnap komponenseket is használunk, használunk, akkor ez nem lehet IAPPSERVER. Egy másik célja ennek a TSOAPConnection komponensnek, komponensnek, hogy egy szolgáltatói listát is kérhet a szervertől. szervertől. Ha meg akarjuk szüntetni a szerverrel a kapcsolatot, kapcsolatot, akkor szintén ezt a komponenst kell használjuk. használjuk.
A szerverrel való kapcsolat kétféleképpen valósítható meg : - vagy az URL tulajdonságban adjuk meg a szerver címét - vagy ha WSDL dokumetummal akarunk kapcsolatba lépni, lépni, akkor a WSDLLocation tulajdonságot kell beállítani. beállítani. Ebben az esetben a Service és Port tulajdonságokat is ki kell tölteni. tölteni.
TOPToSoapDomConvert Kezeli a rendezett és nem rendezett SOAP metódushívásokat. metódushívásokat. Az applikációk általában ezt nem használják közvetlenül. közvetlenül. A THTTPRIO használja inkább a kliensen, kliensen, valamint a THTTPSoapPascalINVOKER vagy a THTTPSoapCppInvoker a szerveren. szerveren. Ha a metódushívás kivétellel ér véget, véget, akkor hibacsomagot generál. generál.
THTTPSOAPDispatcher
Válaszol egy SOAP üzenetre továbbítva azt egy segítőnek, segítőnek, hogy értelmezze. értelmezze. A segítőt a Dispatcher tulajdonságban kell megadni. megadni.
4
TWSDLHTMLPublish Publikál egy WSDL dokumentumlistát ami a WebService applikációt írja le. Az applikáció metódusait és annak paramétereit teszi közzé (így mások is használhassák a WebService – t). Alapértelemben ott fogja publikálni a dokumentumlistát. dokumentumlistát. Azonban ezt meg lehet változtatni az AdminEnabled tulajdonságban, tulajdonságban, majd a WSDL administratort kell elindítani, címet. elindítani, hogy webkeresővel megadjuk az új címet.
• Összefogalalás Az eljárások weben keresztüli integrációja kulcsfontosságú. kulcsfontosságú. Az XML és HTTP engedélyezi ezt a technológiát, technológiát, a SOAP pedig definiálja a kódolási sémát. sémát. A WSDL leírja a szolgáltatást, szolgáltatást, az UDDI pedig hírdeti. hírdeti.
THTTPSOAPPascalInvoker Értelmezi a SOAP kérést és végrehajtja a megfelelő segítségül hívott interfészt. interfészt. A SOAP kérést egy THTTPSOAPDispatcher – től kapja, kapja, elemzi, elemzi, majd egy közeli hívást generál egy regisztrált, regisztrált, segítségül hívott interfésztől. interfésztől. Használja az InvocationRegistry – t (INVREGISTRY), hogy eldöntse a bejövő SOAP kérés megfelelmegfelel- e egy már regisztrált, regisztrált, segítségül hívott interfésznek (invokable interface). C++ ban a THTTPCppInvoker a megfelelője. megfelelője.
A SOAP definiál : - egy kódolási stílust, stílust, amely XML – t használ ahhoz, ahhoz, hogy bemutasson információi gráfokat. gráfokat. - egy standard utat arra, arra, hogy XML – t HTTP – re vigyen át - szabályokat üzenetek átadására XML dokumentumként - hibákat - egy médiumot, médiumot, hogy teljesítse az RPC parancsokat - egy réteget egy többréteges alkalmazásban - boríték fogalma ahhoz, ahhoz, hogy nagyobb méretű adatot is továbbítsunk
5