Sunteți pe pagina 1din 6

56

3. Servicii WEB

nc de la realizarea primei reele de calculatoare accesibile prin TCP/IP, numit
ARPANET, accesarea de informaii rezidente pe un alt calculator dect cel curent i mai
ales execuia unor rutine gzduite de alt main au devenit foarte importante.
Pentru manipularea datelor ntre calculatoare, au fost inventate o serie de
mecanisme i protocoale, parte din ele fiindu-v descrise n alte cursuri (socket, FTP,
HTTP, etc).
3.1 Crearea unui serviciu simplu

Pentru a crea un serviciu web s crem un proiect de tip ASP.NET Web Service
Application, pe care s-l numim SeviciulMeu. Observai c wizard-ul a creat un nou
proiect, care conine o clas numita Service1, cu implementarea

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;

namespace ServiciulMeu
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{

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

Clasa conine o singur metod, numit HelloWorld(). Pentru ca aceast metod
s fie trimis de ctre serverul de web clientului, ea este declarat ca fiind metod web,
prin intermediul directivei [WebMethod]. S tergem aceast metod si s inserm alte 2
metode, ca mai jos:

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

[WebMethod]
public string Codificare(string mesaj)
{
char[] sir = mesaj.ToCharArray();
for (int i = 0; i < sir.Length; i++)
{
if (i % 2 == 0)
sir[i] += (char)1;
else
sir[i] -= (char)1;
}
mesaj = new string(sir);
return mesaj;
}

[WebMethod]
public string Decodificare(string mesaj)
{
char[] sir = mesaj.ToCharArray();
for (int i = 0; i < sir.Length; i++)
{
if (i % 2 == 0)
sir[i] -= (char)1;
else
sir[i] += (char)1;
}
mesaj = new string(sir);
return mesaj;
}
}

Ce fac metodele? Prima metod primete ca parametru un string, pe care l
transform ntr-un ir de caractere. Apoi codific acest ir, adunnd 1 la fiecare caracter
de poziie par i scznd 1 din fiecare caracter de poziie impar. n final, retransform
irul de caractere n string, i-l returneaz. Metoda a doua, realizeaz n aceeai manier
operaia invers.

Ce mai avem de fcut? Nimic! Probabil, ar fi bine totui s nlocuim adresa URL
http://tempuri.org/ generat automat, cu o adres proprie, chiar dac aceasta nu exist.
Prin acest mecanism, putem realiza o identificare n mod unic a instituiei care furnizeaz
serviciul. Haidei s o nlocuim, de exemplu cu

/// </summary>
[WebService(Namespace = "http://www.infoap.utcluj.ro/webservices")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]


S compilm i s executm programul.

58

Figura 3.1
Ce observm? n urma lansrii
n execuie a programului, va fi lansat
automat browserul de web, care ne
afieaz cele 2 metode expuse de
server (fig. 3.1). Este o modalitate
prin care ASP.NET ne permite s
verificm funcionalitatea serviciului.
Dac apsm clic de exemplu pe
Codificare, va fi afiat o caset care
ne permite s transmitem stringul care
urmeaz s fie codificat (fig 3.2).
Dac vom
introduce un text i vom apsa
butonul Invoke, vom obine
rezultatul din fig. 3.3.Se
observ c se afieaz irul
codificat, obinut n urma
execuiei metodei, precum i
adresa URL de identificare a
serviciului web. Cu aceasta,
serviciul nostru este
implementat i verificat.



Figura 3.2

Figura 3.3
59

Figura 34
3.2 Crearea unui program client Windows

Metodele implementate ca serviciu
web, pot fi utilizate foarte simplu ntr-un
program windows. S exemplificm acest
lucru. Pentru aceasta, sa crem o aplicaie
Windwos. Haidei s-o numim ClientWindows.
S realizm interfaa din fig. 3.4, n care:
inseram 3 controale Label, pentru care
modificm proprietatea Text n <Mesaj>,
<Mesaj codificat>, respectiv <Mesaj
decodificat>.
inserm 3 controale Text Box, pentru
care modificm proprietile Name astfel:
pentru controlul de sus, n txtMesaj, pentru
controlul de la mijloc n txtCodificat i pentru
controlul de jos n txtDecodificat. De asemenea, pentru controlul de sus modificm
proprietatea PasswordChar n *, iar pentru celelalte 2 controale proprietatea
ReadOnly n true.
inserm 2 butoane, pentru care modificm proprietile Text i Name n
Codificare, respectiv Decodificare.
adaugm o referin web (click dreapta pe rdcin n Solution Explorer, Add
web reference). n caseta URL, introducei URL-ul afiat n web browser la lansarea
serviciului (fig. 3.5) i apsai Go.

Va vor fi afiate cele 2 metode expuse de serviciul web. Pentru a le putea utiliza, apsai
butonul Add Reference (fig. 3.6). n acest moment, referina va fi adugat proiectului
i cele 2 metode vor putea fi utilizate.


Figura 3.5
60

Figura 3.7
proxy

S implementm acum funciile care se execut la apsarea celor 2 butoane. Mai
inei minte, dublu clic pe ele:

private void Codificare_Click(object sender, EventArgs e)
{
if (txtMesaj.Text.Length > 0)
{
localhost.Service1 ser = new localhost.Service1();
txtCodificat.Text = ser.Codificare(txtMesaj.Text);
}
else
MessageBox.Show(" Ce sa codific?" );
}

S explicm. Aa cum se vede n fig. 3.7, n
Solution Explorer a aprut o referin web spre
localhost. Aceast referin ne permite accesul spre
serviciul Service1 implementat anterior, care la
rndul lui va expune cele 2 metode.
n funcie, totul are loc doar dac n caseta
txtMesaj exist scris ceva. Dac da, se creeaz un nou
serviciu web, numit ser, de tipul serviciului expus de
localhost. Apoi, proprietatea Text a controlului
txtCodificat este modificat de textul rezultat prin
apelul metodei Codificare() a serviciului ser, care are ca parametru de intrare coninutul
textului din txtMesaj. Simplu. S implementm acum funcia de decodificare:

private void Decodificare_Click(object sender, EventArgs e)
{
if (txtCodificat.Text.Length > 0)
{
localhost.Service1 ser = new localhost.Service1();

Figura 3.6
61

Figura 3.8
txtDecodificat.Text = ser.Decodificare(txtCodificat.Text);
}
else
MessageBox.Show(" Ce sa decodific?" );
}

Funcia nu mai are nevoie de explicaii. Compilai i executai programul.

3.3 Crearea unui program client ASP.NET

Haidei s vedem acum cum
putem accesa funciile expuse de
serviciul web ntr-o pagin web. S
crem un nou proiect ASP.NET Web
Application, pe care s-l numim
ClientWeb. S realizm n designer
aceeai interfa ca i n cazul
precedent, modificnd controalele
proprietilor similar (fig 3.x8).
Adugai apoi aceeai referin web,
n acelai mod, ca i n exemplul
anterior.
S facem acum dublu clic
asupra butoanelor pentru a genera
scheletul funciilor care se lanseaz
n execuie la apsarea lor i s
implementm codul:

protected void Codificare_Click(object sender, EventArgs e)
{
if (txtMesaj.Text.Length > 0)
{
ClientWeb.localhost.Service1 ser = new ClientWeb.localhost.Service1();
txtCodificat.Text = ser.Codificare(txtMesaj.Text);
}
else
txtCodificat.Text = " Ce sa codific?" ;
}
protected void Decodificare_Click(object sender, EventArgs e)
{
if (txtCodificat.Text.Length > 0 && txtCodificat.Text !=" Ce sa codific?" )
{
ClientWeb.localhost.Service1 ser = new ClientWeb.localhost.Service1();
txtDecodificat.Text = ser.Decodificare(txtCodificat.Text);
}
else
txtDecodificat.Text = " Ce sa decodific?" ;
}

Compilai i executai programul.

S-ar putea să vă placă și