Utisci korisnika

Želeo bih da Vam se zahvalim na Vašoj brzoj pošiljci, sertifikatu i novom kursu, koji sam juče preuzeo putem Post-expresa. Još jedanput Vam se zahvaljujem na Vašoj profesionalnosti.…

Zaista sam prijatno iznenađena vašom brigom za korisnike, i zahvaljujem vam se na maksimalnoj podršci. Što se tiče vaših usluga sve je jasno, ja se uvijek vraćam i nastaviću…


Kompletna lista utisaka

Testiranje online

Arhitektura računara

Za one koji žele da znaju više.

Windows OS

Ovo bi svakako trebalo da probate.

Odnosi s javnošću

Koliko znate PR?

Pogledajte još neke od testova

Newsletter

Ukoliko želite da Vas redovno obaveštavamo o novostima sa Link eLearning sajta prijavite se na našu newsletter listu.

Ime:

Prezime:

Email:


Anketa

Arhiva anketa

BAZA ZNANJA


Kurs: XML tehnologije i veb servisi

Modul: Rad sa XML veb servisima

Autor: Vladimir Marić

Naziv jedinice: Implementacija veb servisa


Materijali vezani uz ovu lekciju:

- Test implementacija veb servisa
- Implementacija veb servisa (PDF dokument)



Delovi veb servis projekta

Prilikom implementacije ili kreiranja veb servisa potrebno je uključiti sledeće prostore imena: System, System.Data, System.Web, System.Web.Services, System.XML. Fajl asmx je fajl koji predstavlja prednji kraj (Front-End) veb servisa koji je realizovan primenom ASP.NET tehnologije. Ovom fajlu se pridružava fajl sa cs ekstenzijom u kome se definiše klasa izvedena iz klase System.Web.Services.WebService u kojoj se implementiraju metode veb servisa. Kada se direktno iz veb Browser-a zahteva veb servis bez specificiranja Query stringa otvara, se Help strana veb servisa. Help strana metode veb servisa obezbeđuje dodatne informacije o toj metodi. Ova strana omogućava pozivanje metode veb servisa ukoliko se on može pozivati korišćenjem HTTP-POST protokola. Kada se kao Query string prosledi WSDL, otvara se WSDL strana veb servisa.

 

Kreiranje jednostavnog veb servisa

ASP.NET veb servisi su ASP.NET aplikacije pa postoji mnogo zajedničkih elemenata između njih. Fajl asmx  je veb servis kreiran korišćenjem ASP.NET tehnologije. Svakom asmx fajlu pridružuje se cs (ili vb) fajl koji sadrži definiciju oblika: public class Service1:

System.Web.Services.WebService. Unutar ove klase definišu se metode veb servisa. Da bi se mogla pozivati neka od metoda veb servisa, mora joj se dodati atribut [WebMethod] kao u sledećem primeru:

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

 

Metode veb servisa

Metoda veb servisa mora biti javna i mora joj se dodati atribut WebMethod. WebMethod atribut ima sledeća svojstva: BufferResponse,  CacheDuration,  Description, EnableSession, MessageName, TransactionOption.


Primer jednostavne veb metode

Na ovom primeru je prikazana jednostavna veb metoda sa primerom definisanja svojstava WebMethod atributa.

[WebMethod]
public AccountDataSet GetAccount()

 

Atributi veb metode

Kada je opcija BufferResponse postavljena na True, veb servis baferuje kompletan odgovor pre nego što ga pošalje korisniku, ovo je podrazumevana opcija. Kad je ova opcija na vrednost False, ASP baferuje odgovor u pakete veličine 16 KB. CacheDuration svojstvo omogućava keširanje rezultata veb servisa. Ovo je poznato kao izlazno keširanje. Specificira se vreme u sekundama koliko ASP.NET drži odgovor u kešu.

Description svojstvo obezbeđuje opis za metodu veb servisa koja će se pojaviti na Help strani. Podrazumevana vrednost ovog svojstva je prazan string. EnableSession svojstvo omogućava održavanje stanja sesije za metodu veb servisa, podrazumevana opcija je False.

MessageName  svojstvo omogućava korišćenja preklopljenih metoda (Overloaded Method) korišćenjem nadimaka. Na primeru ispod je prikazana upotreba ovog svojstva za definisanje dve metode za sabiranje celih i sabiranje realnih brojeva. Obe metode imaju ime Add. Veb metoda može biti deo transakcije. Ako ne učestvuje u transakciji, onda se svojstvo TransactionOption postavlja na jednu od vrednosti Disabled, NotSupported, Supported. Ako je veb metoda deo transakcije, onda se svojstvo TransactionOption postavlja na jednu od vrednosti Required ili RequiresNew.

[WebMethod(MessageName="AddDoubles")]
public double Add(double dValueOne, double dValueTwo) {
return dValueOne + dValueTwo;
}
[WebMethod(MessageName="AddIntegers")]
public int Add(int iValueOne, int iValueTwo) {
return iValueOne + iValueTwo;
}

 

Metoda koja vraća DataSet

Na ovom primeru je ilustrovan primer veb metode čija je povratna vrednost DatSet. Unutar metode se uspostavlja konekcija sa bazom podataka i izvršava odgovarajući Select upit posredstvom SqlDataAdapter objekta.

[WebMethod]
    public DataSet GetCategoriesAsDataSet()
    {
        try
        {
            using (SqlConnection conn = new SqlConnection())
            {
                string connectionString = WebConfigurationManager.ConnectionStrings
                  ["adventureWorks"].ConnectionString;
                conn.ConnectionString = connectionString;
                SqlCommand command = new SqlCommand("Select * from " +
                  "Production.ProductCategory", conn);
                command.CommandType = CommandType.Text;
                SqlDataAdapter adapter = new SqlDataAdapter(command);
                DataSet categories = new DataSet("Categories");
                adapter.Fill(categories);
                return categories;
            }
        }
        catch (Exception ex)
        {
            Label1.Text = ex.Message;
            throw ex;
        }
    }

 

Poziv metode koja vraća DataSet

U ovom primeru pokazano je prihvatanje rezultata iz DataSet-a koga je vratila veb metoda. Da bi se pozvala odgovarajuća veb metoda, kreira se veb referenca, odnosno generiše se Proxy klasa. Instancira se objekat ove klase i poziva njegova metoda GetCategoriesAsDataSet koja vraća DataSet objekat. Ovaj DataSet je iskorišćen kao izvor podataka za GridView kontrolu.

<asp:GridView runat="server" ID="output" />


void Page_Load(object sender, EventArgs e)
    {
        CategoriesProxy.CategoriesService obj =
        new CategoriesProxy.CategoriesService();
        output.DataSource = obj.GetCategoriesAsDataSet();
        output.DataBind();
    }

 

Metoda koja vraća objekat korisničke klase

Na sledećem primeru je definisana klasa Address. Objekti ove klase će biti vraćeni kao povratne vrednosti metoda nekog veb servisa.

public class Address
{
 public string Street;
 public string City;
 public int ZIP;
 public string Country;
 // Default constructor needed by XmlSerializer
 public Address()
 {
 }
 public Address(string _Street, string _City, int _ZIP, string _Country)
 {
  this.Street = _Street;
  this.City = _City;
  this.ZIP = _ZIP;
  this.Country = _Country;
 }
}

 

Na sledećem primeru je prikazana metoda veb servisa koja vraća dinamičku listu objekata klase Address koja je definisana na prethodnoj slici.

[WebMethod]
[XmlInclude(typeof(Address))]
public ArrayList GetArrayList()
{
ArrayList list = new ArrayList();
Address add1 = new Address("900, N Rural Road", "Chandler", 85226, "US");
Address add2 = new Address("2644, E Remington Place", "Chandler", 85249, "US");
Address add3 = new Address("5000, W Chandler Blvd ", "Chandler", 85226, "US");
list.Add(add1);
list.Add(add2);
list.Add(add3);
return list;
}

 

Dodaje se veb referenca i instancira Proxy klasa koja sadrži metodu koja vraća listu objekata klase Address. Ova lista je izvor podataka za kontrolu GridView.

 

Vežba

Problem:

Potrebno je kreirati web servis koji će konvertovati metre u stope i obrnuto (1m = 3.2808399 stopa).

 

Rešenje:

1. Otvoriti novi projekat. ASP NET Web Service Application:

 

 

2. Unutar automatski kreirane klase, kreirati odgovarajuće metode za konverziju:

public class Service1 : System.Web.Services.WebService
    {

        [WebMethod]
        public decimal mToFt(decimal m)
        {
            return m * 3.2808399M;
        }

        [WebMethod]
        public decimal ftToM(decimal ft)
        {
            return ft * 0.3048M;
        }
    }

 

3. Testirati servis (F5 ili ctrl+F5):

 

 

Kreiranje aplikacije koja koristi servis:

4. Kreirati novi projekat (konzolnu aplikaciju)

5. Uneti referencu na web servis (servis mora biti aktivan):

 

 

 

6. Izvršiti poziv servisa:

ServiceReference1.Service1SoapClient sc = new
ServiceReference1.Service1SoapClient();
Console.WriteLine(sc.mToFt(10));


Smatrate da je ova lekcija korisna?  Preporučite je. Broj preporuka:0