
Mellékelt példa megnyitása előtt szükséges egy Service nevű virtuális könyvtár létrehozása, mely a példa mappájában található Service alkönyvtárra mutat. Ehhez nyissa meg a mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A kliens alkalmazás futtatása előtt gondoskodnunk kell arról, hogy a Web szerver virtuális mappájában engedélyezzük a névtelen hozzáférést.
A Disco.exe parancssori eszköz
A disco.exe program bemutatása előtt ejtenünk kell pár szót WebService discovery (felfedezés) procedúrájáról, melyhez szervesen kapcsolódik a bemutatandó segédprogram funkcionalitása.
A webes szervizek felfedezése az a folyamat, melyben meghatározzuk a szerviz URL-jét, valamint lekérdezzük annak jellemzőit. Ezek a legelső lépések afelé, hogy elérhessük a szerviz funkcióit egy alkalmazásból. A fejlesztendő, és a szervizünket használó alkalmazásnak már szerkesztési időben ismernie kell a szerviz helyét, képességeit, illetve hogy miként teremthetnek vele kapcsolatot.
Annak érdekében, hogy programból is lekérdezhessük ezeket az információkat, a szerviz alkalmazásnak rendelkeznie kell egy .disco kiterjesztésű állománnyal, melynek neve megegyezik a szerviz osztályának nevével. Az állomány amellett, hogy tartalmazza a szerviz jellemzőit, tartalmazza a hivatkozásokat a szerviz egyéb dokumentumaira (egyéb XML állományok .xsd, .wsdl kiterjesztéssel).
Amennyiben a böngészőnkben megadjuk a szerviz elérési útvonalát, és az URL-t a „?DISCO” kulcsszóval zárjuk le, akkor lekérdezhetjük a fent említett állomány tartalmát. A példa szervizünkben a következő módon tehető ez meg:
http://localhost/Service/WService.asmx?DISCO
A művelet eredményeképpen megjelenik egy szabályos XML-szerkezetű eredményhalmaz.
<?xml version="1.0" encoding="utf-8" ?>
<discovery xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.xmlsoap.org/disco/">
...
</discovery>
A <discovery></discovery> tagok között található elemek tartalmazzák az adott szerviz jellemzőit, sémáit.
A Disco.exe parancssori eszköz alkalmas arra, hogy egy tetszőlegesen megadott URL-en elérhető Webes szerviz számára generálja a szerviz jellemzőit és funkcionalitását leíró állományokat. A program értékeli a szerviz alkalmazás helyét reprezentáló URL-t, és állományokba menti az információkat.
Általánosságban elmondható, hogy a Webes szervizünket beépítő ASP.NET alkalmazásnak nem feltétlenül kell támogatni a DISCOVERY tulajdonságot. A program által generált állományok inputjai lehetnek a VS.NET másik parancssori eszközének, a WSDL.exe segédprogramnak.
A program indításának általános szintaxisa a következő:
- Az URl természetesen a szerviz helyét meghatározó erőforrás-azonosító.
- Az OPTIONS elem helyén kell megadni azokat a kapcsolókat, melyek testre szabott futtatást tesznek lehetővé. Lássuk, melyek ezek:
| Kapcsolók |
Jelentés |
| /d[omain]: domain |
Amennyiben a szerviz elérése proxy kiszolgálón keresztül valósul meg, a proxy domain nevét kell itt megadni a hitelesítés elvégzéséhez. |
| /nosave |
A szerviz jellemzőit leíró állományok nem kerülnek elmentésre. |
| /nologo |
Nem jelenik meg a Microsoft cég két soros bevezetője. |
| /o[ut]: könyvtárnév |
A létrehozott állományok a megadott könyvtárba kerülnek. Alapértelmezett esetben az aktuális könyvtárba. |
| /p[assword]: jelszó |
Amennyiben proxy kiszolgálón keresztül zajlik az adatforgalom, itt lehet megadni a hitelesítő jelszót. |
| /proxy: URL |
A proxy kiszolgáló URL-je, melyeket a HTTP kérésekhez használ. |
| /proxydomain: domain, vagy /pd: domain |
A proxy kiszolgáló domain neve. |
| /proxypassword: jelszó |
Amennyiben proxy kiszolgálón keresztül zajlik az adatforgalom, itt lehet megadni a hitelesítő jelszót. |
| /proxyusername: felhasználónév |
Amennyiben proxy kiszolgálón keresztül zajlik az adatforgalom, itt lehet megadni a hitelesítő felhasználónevet. |
| /username: felhasználónév |
Amennyiben proxy kiszolgálón keresztül zajlik az adatforgalom, itt lehet megadni a hitelesítő felhasználónevet. |
| /? |
Megjeleníti asz összes lehetséges kapcsolót. |
A program a következő módon indítható, a példa szervizünk URL-jét felhasználva:
Disco /out:C:\ http://localhost/Service/WService.asmx
Ekkor keletkezik egy WService.disco, egy WService.wsdl nevű állomány, valamint egy result.discomap nevű állomány, mely tartalmazza a szerviz valamennyi jellemzőjének referenciáját.
Amennyiben a szervizünket egy ASP.NET Web-alkalmazásban szeretnénk felhasználni, és szükség van a szerviz jellemzőinek publikálására, akkor a generált .disco állományt az alkalmazás mappájában kell elhelyezni. Amennyiben az alkalmazás alapértelmezett állománya egy HTML állomány, akkor a <head></head> elemek között a következő hivatkozás helyezhető el:
<HEAD>
<link type='text/xml' rel='alternate' href='MyWebService.disco'/>
</HEAD>
Amennyiben az alapértelmezett állomány egy XML fájl, akkor a következő hivatkozással lehet jelezni a .disco állomány nevét:
<?xml-stylesheet type="text/xml" alternate="yes" href="MyWebService.disco" ?>
A mellékelt példa
A példa két részből áll. A Service mappában helyeztük el a szerviz forráskódját, mely egyetlen metódussal bír, egy számokat összeadó AddNumbers nevű függvénnyel. A metódus két egész paramétert kap, melyeket összeadva egy karakterláncban adja vissza az eredményt.
A Client mappában található a szervizünket felhasználó Windows-os alkalmazás, melyben felhasználjuk a szerviz metódusát a két szám összeadásához. A szerviz eléréséhez szükséges proxy osztályt úgy hozzuk létre, hogy egy Webes referenciát adunk a kliensünkhöz, és az URL mezőben a generált WService.disco állományt adjuk meg.
A hivatkozás LOCALHOST néven jelenik meg, melynek mappájában láthatóak a szükséges állományok, illetve bekerül a mappába Reference.cs néven a proxy osztályt tartalmazó állomány is.