WebElektronika

Webszolgáltatás (host) készítése .NET környezetben

person access_time 2014.06.28.
Készítünk a VS2012 segítségével egy asmx-es webszolgáltatást, amely HTTP protokollt használ. A következő részben pedig elkészítjük ezt a webszolgáltatást használó klienst.


Indítsuk el a VS2012-t és hozzunk létre egy üres Web Site-ot (File / New / Web Site). Válasszuk ki az "ASP.NET Empty Web Site" template-et (1. ábra).


1. ábra   Egy üres web site létrehozása
 

Ezután a projekthez adjunk hozzá egy Web Service sablont (2. ábra), amelynek a neve webelektronika.asmx


2. ábra   A webszolgáltatás sablonjának kiválasztása
 

Ekkor két file jön létre a projektünkben, ez látható is a Solution Explorerben (3. ábra), a Web.config már látható itt, de csak a debug mód használatánál jön létre (a screenshot az első tesztelés után készült)


3. ábra   Solution Explorer
 

"Kívülről" csak a webelektronika.asmx látható, a web.config és a webszolgáltatás logikája, a webelektronika.cs nem. Az *.asmx kiterjesztésű file-ban találjuk meg a hozzátartozó C# file elérési útvonalát (4. ábra).


4. ábra   Az *asmx file belseje
 

A létrejövő C# file-ban (5. ábra) találjuk a szükséges névtereket (System.Web, System.Web.Services), a webszolgáltatás névterét, amely URI-ként van megadva és szabadon módosítható.


Az osztályunk tartalmaz még egy konstruktort, illetve egy "HelloWorld()" metódust. Fontos, hogy a webszolgáltatásunk metódusainak publikusnak kell lennie, illetve, alkalmaznunk kell a "WebMethod" attribútumot is. 


5. ábra   A legenerált C# file
 

Egészítsük ki néhány webmetódussal (Osszead(), Szoroz(), Nagybetu(), Levag()) a Visual Studio által legenerált C# sablont.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

/// <summary>
/// Summary description for webelektronika
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class webelektronika : System.Web.Services.WebService {

    public webelektronika () {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

    [WebMethod]
    public int Osszead(int a, int b)
    {
        return a + b;
    }

    [WebMethod]
    public int Szoroz(int a, int b)
    {
        return a * b;
    }

    [WebMethod]
    public string Nagybetu(string Adat)
    {
        return Adat.ToUpper();
    }

    [WebMethod]
    public string Levag(string Adat, int Meret)
    {
        string Temp = null;
        if (Adat.Length >= Meret)
        {
            for (int i = 0; i < Meret; i++)
            {
                Temp += Adat[i];
            }
        }
        else
            Temp = Adat;
        return Temp;
    }
}

 

Ezután indítsuk el a webszolgáltatásunkat localhost-ban. A VS rákérdez, hogy debug módban futtassa-e a webszolgáltatásunkat. Amikor ezt engedélyezzük, akkor létre jön a Web.config file, amelyben a debug mód engedélyezve van (6. ábra).


6. ábra   A Web.config file tartalma
 

A böngészőnkben a következő kép fogad minket (7. ábra). Láthatjuk itt a webmetódusainkat, amelyeket localhost-ban futtatni tudunk, tehát tesztelhetjük még ezeknek a működését.


7. ábra   Webmetódusaink a böngészőnkben
 

Kattintsuk most például a Levág metódusunkra. (Ennek az a feladata, hogy a paraméterlistában átadott string típusú paraméternek annyi karakterét adja vissza, amennyit átadunk a másik paraméternek, a "Meret"-nek).
Ekkor egy újabb ablak jelenik meg a böngészőnkben, ahol tesztelni tudjuk ennek a működését. Írjunk be az Adat mezőbe egy szöveget, a Meret szövegdobozba egy egész számot (figyelem, nincs kivételkezelés!). Ezután kattintsunk az Invoke nyomógombra (8. ábra).


8. ábra   A Levag webmetódus működésének tesztelése
 

A Levag metódus futtatása után egy egysoros XML file-ban megkapjuk az eredményt, azaz, a megadott string-nek csak annyi karakterét jelenítjük meg, amennyit beírtunk a "Meret" szövegdobozba (9. ábra).


9. ábra   A Levag webmetódus futási eredménye
 

Az elkészített webmetódusaink működnek, igaz, még csak localhost-ban. Ha a projektünk file-ait FTP-zzük egy ASP-s tárhelyre (pl.: www.godaddy.com), akkor a webszolgáltatásunk a világ bármely részén elérhető.