C# - WSE, avagy a Microsoft új WebService névtere

forráskód letöltése
A Visual Studio.NET első verziójának megjelenése óta a Microsoft számtalan modult alkotott, melyek ígéretük szerint a következő verzióban beépítve lesznek elérhetők. Egy-egy telepítendő verzió azonban már most rendelkezésre áll, így alkalmunk nyílik bemutatni a WebService alkalmazások készítéséhez segítséget nyújtó, technológiájában megújult új névtér-csokrát, melynek új osztályai révén bizonyos funkciókat kevesebb kódolás árán valósíthatunk meg.
A példa használatához szükséges a Web Services Enhancements for Microsoft .NET telepítése. További részletek az „Áttekintés” leírása alatt található.
Mellékelt példa megnyitása előtt szükséges egy WSEServer nevű virtuális könyvtár létrehozása, mely a példa könyvtárában található WSEServer mappára mutat. Ehhez nyissa meg a mellékelt mappában elhelyezett 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 szerviz alkalmazásunk programból való eléréséhez gondoskodnunk kell arról, hogy a virtuális könyvtárban engedélyezve van a névtelen hozzáférés.
Áttekintés
A Microsoft által elkészített csomag a Web Services Enhancements for Microsoft .NET nevet viseli, és cikkünk írásakor a következő Webcímen volt elérhető, mely természetesen megváltozhatott:
http://msdn.microsoft.com/webservices/building/wse/default.aspx
Letöltve az állományt (Web Services Enhancements 1.0 for Microsoft .NET.msi) telepítenünk kell a .NET Framework alá. Az öntelepítő állomány erről gondoskodik, a használható .DLL állomány (Microsoft.Web.Services.dll), és a kapcsolódó dokumentáció alapértelmezésben a következő mappába kerül: %winroot%:\Program Files\Microsoft WSE\v1.0.2312\.
A telepített assembly bekerül a globális assembly-listába, így amikor referenciaként megadjuk alkalmazásainkban, akkor a globális palettáról kell kiválasztanunk, nem pedig valamilyen alternatív mappából.
A csomag osztályainak felhasználásával lehetővé válik, hogy a fejlesztők a legújabb technológiát használhassák a Webes szolgáltatások (szervizek) készítéséhez. A fejlesztési idő lerövidíthető, az elkészített alkalmazásokhoz beépített biztonsági jellemzők adódnak, melyek jobban igazodnak az Internetes üzlet elvárásaihoz.
Az osztályok közt megtalálhatók a digitális aláírást, titkosítást támogatók csakúgy, mint az üzenet továbbítását intelligensen végző router-eket megvalósító osztályok. Az említett képességek a WS-Security, WS-Routing, WS-Attachments, és DIME szabványokon nyugszanak.
A kézhez kapott új eszköz támaszkodik a már létező Web Service technológiákra, mint amilyen az XML, a SOAP és a WSDL.
A fejlesztők folyamatosan építik be az új szabványokat a WSE következő verzióiba, így azt megígérik, hogy napra készen rendelkezésre állnak, azonban a következő verziókban a lefelé kompatibilitást nem biztos, hogy garantálni tudják.
A technológia alapja a SOAP Messaging szolgáltatás, melynek segítségével a kliens és a szerver közt mozgatott információ üzenet blokkokra tagolódik, melynek fejléce és törzse van. A törzs az adó oldalon titkosítva lesz, melyet a vevő oldalon meg kell fejteni. Ennek mikéntjét írja le a WS-Security szabvány. A lényeg a két oldalakon elhelyezett filtereken nyugszik, melyek közül az adó a fejlécet írja, míg a vevő a fejlécet olvassa. Ezek ellenőrzik, hogy a beírt információ helyes-e. Természetesen a kétoldalú kommunikáció értelmében a funkcionalitás kétirányú.
A cikk további részében bemutatunk egy példát, melyben egy összeadó metódussal rendelkező Web szerviz alkalmazást érünk el egy Window-os klienssel, egy Proxy objektum segítségével. Az objektumot a WSDL technológiával hozzuk létre, a Visual Studio.NET WSDL.EXE programjának segítségével generáljuk a szerviz alkalmazás paramétereivel.
WSEServer szerviz alkalmazás
Az alkalmazás egy egyszerű ASP.NET Web szerviz, mely egyetlen metódussal rendelkezik, az AddInt metódussal. A névtér szolgáltatásának, osztályainak eléréséhez meg kell adnunk referenciaként a Microsoft.Web.Services névteret. Ehhez válasszuk a Project - Add reference menüpontot, majd a megjelenő ablakban a .NET lapon keressük elő a Microsoft.Web.Services elemet.
A forráskód elején meg kell adnunk a hivatkozást a Microsoft.Web.Services névtérre:
using Microsoft.Web.Services;
A függvény két paramétert vár, melyek egész számok, visszatérési értéke a két szám összege.
[WebMethod]
public int AddInt(int a, int b)
{
  return a + b;
}
Proxy osztály készítése
A Visual Studio.NET beépített eszköze segítségével készíthetünk egy kliens proxy-t az alkalmazáshoz, melynek segítségével könnyen kapcsolat teremthető a szerviz metódusa és a hívó kliens program segítségével.
A %winroot%:\Program Files\Visual Studio.NET\FrameworkSDK\Bin mappában található program segítségével egy - a szerviz osztályával azonos nevű, .cs kiterjesztésű – állomány generálható, melyet beépítünk az AddNumbers Class Library projektbe. Miután a projektet lefordítottuk, meg kell adni referenciaként kliens-alkalmazásban.
Az AddNumbers.cs állomány a következőképpen generálható parancssorból:
wsdl /out: AddNumbers.cs http://localhost/WSEServer/SumService.asmx
A szerviz metódusa a böngészőből e proxy nélkül is elérhető, ha megadjuk a következő URL-t:
http:// localhost/WSEServer/SumService.asmx?a=<szám1>&b=<szám2>
A kliens elkészítése
A kliens alkalmazásban referenciaként fel kell vennünk a proxy objektumot, melynek módja: válasszuk a Project - Add reference menüpontot, majd a megjelenő ablakban a Projects lapon jelöljük ki az AddNumbers elemet.
A Form-on a szerkesztőmezőkben meg kell adnunk a művelet operandusait, majd meg kell nyomnunk a MŰVELET gombot. Ekkor a következő kód fut le:
AddNumbers an = new AddNumbers();
textBox3.Text = an.AddInt(Convert.ToInt32(textBox1.Text),Convert.ToInt32(textBox2.Text)).ToString();
Nem tettünk mást, csak a kliens proxy példányosítása után meghívtuk annak metódusát, a szükséges paramétereket átadva neki.