IPRO - PC Magazine Romania, Martie 2003
SOLUŢII PENTRU PROGRAMATORII ŞI DESIGNERII WEB Servicii
web realizate cu ASP.NET
Realizarea de aplicaţii-consumatori de servicii Web
Mircea Scărlătescu
Am discutat în numărul trecut despre cât de uşor este de implementat un
serviciu Web în ASP.NET (cu VB.NET). Următorul pas pentru a folosi serviciile
Web este de a realiza consumatori pentru acestea. Consumatorii de servicii
Web sunt, în esenţă, aplicaţii care folosesc informaţiile furnizate de către
aceste servicii. Dacă, spre exemplu, în România INMH (Institutul Naţional
de Meteorologie şi Hidrologie) ar realiza un serviciu Web prin care ar fi
prezentate temperaturile în marile oraşe ale ţării, atunci portalurile româneşti
şi nu numai, ar putea introduce în structura lor acest serviciu Web, datele
de pe situri actualizându-se fără intervenţia celor care le întreţin. În
cazul prezentat, portalurile reprezintă consumatorii de servicii Web.
După ce am schiţat o astfel de aplicaţie, să ne aducem aminte că în articolul
anterior am realizat un serviciu Web care prezintă ultima ştire (cronologic)
dintr-o bază de date SQL Server 2000. Ceea ce vom realiza în continuare
este un consumator de servicii care foloseşte datele furnizate de serviciul
nostru.
Primul pas în realizarea unui client (consumator) este de a creea o clasă
proxy pentru serviciul nostru. Pentru aceasta, folosim utilitarul wsdl.exe,
inclus în pachetul .NET. Acest utilitar se rulează din linia de comandă,
iar o listă completă de parametri este disponibilă în documentaţia .NET
(on-line sau varianta pe CD-uri). Odată realizat acest pas, utilizarea
metodelor definite
în serviciul Web este la fel de simplă ca şi utilizarea metodelor din
clasele existente în sistem. Acest lucru este deosebit de folositor pentru
programatori,
fiind de fapt esenţa avantajului pe care Microsoft l-a subliniat deseori:
usurinţa în programarea şi utilizarea serviciilor Web cu ajutorul .NET.
După ce am realizat clasa proxy pentru a publica serviciul Web, tot ce
mai rămâne de făcut este să-l integrăm într-o aplicaţie Web realizată
cu ASP.NET.
Iată paşii necesari pentru a realiza acest lucru:
1. Deschidem aplicaţia
VisualStudio.NET şi selectăm opţiunea New Project: ASP.NET Web Application.
Odată ce stabilim numele aplicaţiei, după
ce se vor seta de către mediul de programare opţiunile necesare avem
în
Solution
Explorer componentele aplicaţiei noastre, iniţial vide.
2. Fişierul WebForm1.aspx este fişierul implicit de start al aplicaţiei
Web pe care o realizăm. Putem redenumi acest fişier ca index.aspx
Ca o paranteză,
fişierul de start al aplicaţiei poate fi schimbat după preferinţe
. Aici vom scrie codul pentru a consuma serviciul Web.
Odată aceşti doi paşi parcurşi, putem trece la scrierea efectivă
a aplicaţiei. Deci, edităm în primul rând fişierul styles.css (creat
automat de către
sistem la iniţializarea aplicaţiei şi scriem următorul text:
.bodyColor
{
background-color: #336699;
}
.newsText
{
font-family: Verdana;
font-size: 11px;
font-weight: normal;
color: #ffffff
}
Prin aceste declaraţii am stabilit de fapt două stiluri CSS prin care precizăm
următoarele:
1. culoarea de fond a paginii va fi cea descrisă de codul #336699; declaraţia
din pagina HTML pentru acest lucru se realizează sub forma:
<body class='bodyColor'....>
2. Pentru afişarea textului vom folosi un paragraf cu parametrii specificaţi
de .newsText. În acest caz, ca şi cod HTML, definiţia arată astfel: <p class='newsText'>
Odată stabilite aceste detalii grafice, este timpul ca pe partea de scripting
să realizăm afişarea textului întors de serviciul Web.
Primul pas este reprezentat de adăugarea unei referinţe Web către serviciul
creat de noi. Acesta se realizează prin selectarea opţiunii Add Web Reference
din meniul Project al aplicaţiei. Se va scrie în bara de adrese URL-ul serviciului
nostru de Web şi apoi se va selecta acest serviciu prin intermediul butonului
AddReference. Apoi, programarea se reduce la simpla utilizare de obiecte
în VB.NET. Din fereastra ToolBox alegem adăugarea în pagina index.aspx a
unui
obiect de tip "Label". Proprietatea cssClass se setează către clasa newsText
pe care am definit-o mai devreme. Acesta va fi obiectul definit pentru afişarea
textului. Legarea lui de serviciul Web se va realiza în procedura Page_Load.
Această procedură este predefinită de către sistem, şi reprezintă setul de
operaţii ce se efectuează de fiecare dată când această pagină se încarcă.
Codul pe care va trebui să-l scriem acolo este:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim pcm1 As New PCMagazine1()
newsLabel.Text=pcm1.getLatestHeadLine();
End Sub
Tot ce face acest cod este să instanţieze un obiect de tipul "serviciu Web"
şi apoi să utilizeze metodele definite de el, pentru a obţine informaţiile
necesare.
newsLabel.Text=pcm1.getLatestHeadLine(); este linia care leagă eticheta
newsLabel definită mai sus de metoda getLatestHeadLine() care întoarce în
servicul
Web ultima ştire din baza de date.
Aşa am realizat primul consumator de servicii Web realizat în ASP.NET.
Un aspect foarte important care trebuie subliniat aici este faptul că,
bazându-se pe SOAP (Simple Object Acces Protocol), serviciile web realizate
cu ASP.NET
nu sunt accesibile doar aplicaţiilor realizate în ASP.NET, ci se adreseaza
oricărui limbaj de programare Web, deci orice sit realizat în ASP, ASP.NET,
PHP, JSP, etc poate accesa un astfel de serviciu. Se deschide astfel
calea de la situri care prezintă o informaţie (static în trecut, dar mai
nou
dinamic) la situri care interconectează organzaţii. Şi dacă este să reţinem
că, după
unii specialişti TI, viitoarele aparate ce se vor conecta la internet
vor avea încorporate doar un editor simplu de text şi un browser, atunci
e
uşor de imaginat cât de folosite pot deveni serviciile web.
Într-un articol viitor ne propunem să realizăm un serviciu Web ceva mai
complex, unde vom exemplifica utilizarea funcţiilor ASP.NET pentru
e-mail şi vom privi
mai îndeaproape tratarea erorilor în ASP.NET, o parte foarte importantă
în programarea unei aplicaţii. Vom încerca să realizăm împreună un
serviciu Web care permite unei organizaţii să utilizeze servicii de Email
în propriul
sit, servicii furnizate de o altă firmă prin intermediul serviciilor Web.
|