
A mellékelt példa használatához szükség lesz a múlt héten készített web service alkalmazásra, mely a „WebService készítése: postaköltség meghatározása” című cikk mellékleteként jelent meg.
Nézzük most lépésről-lépésre, hogy miként is jött létre a mellékelt példa.
Nyissunk egy teljesen szokványos Windows Application projektet. Ezen helyezzük el a szükséges beviteli eszközöket, melyeken keresztül a felhasználó közölheti alkalmazásunkkal a csomag utánvételi összegét és súlyát.
A web service használatához a System.Web.Services névtérre szükségünk lesz. Ehhez válasszuk a Project - Add Reference menüpontot a .NET lapon keressük elő ezt és adjuk a projektünkhöz.
Ahhoz, hogy egyszerűen elérhessük ezt a web service-t és felhasználhassuk alkalmazásunkba szükséges, hogy egy ún. proxy objektumot generáltassunk. Ehhez a Visual Studio-hoz mellékelt WSDL.EXE nevű segédprogram használata szükséges. Nyissunk egy parancssort (Visual Studio.NET Command Prompt!) majd írjuk a következőt:
Wsdl http://localhost/Postage/Service1.asmx?WSDL
Értelemszerűen a localhost helyére annak a szervernek a címe kerül, ahol a web service elérhető.
A WSDL futása során generál számunkra egy Service1.cs forráskódot, mely tartalmaz egy olyan objektumot, amelyből példányt létrehozva az adott web service-t használhatjuk úgy mintha az egy egyszerű osztály lenne, amelyet a saját alkalmazásunkban hoztunk létre. A programozás szempontjából a továbbiakban nem is vesszük észre, hogy egy web service függvényét használjuk:
private void button1_Click(object sender, System.EventArgs e)
{
Service1 s1 = new Service1();
label1.Text = s1.AfterBuyPackagesCost(Convert.ToInt32(textBox1.Text), Convert.ToSingle(textBox2.Text)).ToString() + " Ft";
}
Amint az látható, egy web service használata igen egyszerű és nagyon hatékony feladat.
Végezetül pillantsunk bele a létrejött Service1.cs forráskódba.
A létrehozott osztály konstruktorában kerül átadásra a web service elérési útvonala. Ezt szükség esetén módosíthatjuk is.
public Service1() {
this.Url = "http://localhost/PostageSetup/Service1.asmx";
}
Az AfterBuyPackagesCost meghívásakor kerül aktivizálásra a web service megfelelő függvénye, majd a visszaadott érték is konvertálva lesz a számunkra szükséges formára. Amint látható a Service1.cs-ben létrejött AfterBuyPackagesCost függvény paraméter listája épp úgy egyezik a web service-ben létrehozott azonos nevű függvénnyel, mint annak visszatérési értéke. Így a felhasználás szempontjából valóban nincs különbség a két függvény hívása között.
public int AfterBuyPackagesCost(int Value, System.Single Weight) {
object[] results = this.Invoke("AfterBuyPackagesCost", new object[] {
Value,
Weight});
return ((int)(results[0]));
}