Webové služby na platforme Microsoft .Net (II)

V minulom čísle sme ukázali kompletný postup vytvorenia webovej služby, ktorá mÖže pracovať s databázou na platforme...


V minulom čísle sme ukázali kompletný postup vytvorenia webovej služby, ktorá
mÖže pracovať s databázou na platforme Microsoft .Net. Webová služba ako
nakoniec každá služba je len jedna strana mince. Služba plní svoj účel len
vtedy, ak je využívaná zo strany klientov. Preto tu ukážeme postup pri vývoji
klientských aplikácií, ktoré mÖžu k webovým službám pristupovať. Pokryjeme celé
spektrum aplikácií, teda tenkého aj hrubého (anglicky rich) klienta a
samozrejme aj čoraz častejšie používané aplikácie typu mobilný klient.
V ďalšej cvičnej aplikácii vytvoríme webovú aplikáciu, ktorá bude slúžiť ako
jednoduchý prehliadač údajov uložených v databáze. K údajom sa však pripojíme
prostredníctvom XML webovej služby. Aby sme boli presnejší, prostredníctvom
tenkého klienta, teda prehliadača webových stránok, sa pripojíme k webovému
serveru, na ktorom beží webová aplikácia, ktorá pristupuje k údajom
prostredníctvom webovej služby.
NajskÖr urobíme sumár, čo potrebujeme mať na jednotlivých počítačoch
nainštalované. Predpokladáme použitie serverovej platformy Windows 2000 Server,
prípadne novší Microsoft .Net Server 2003.
Počítač, ktorý bude slúžiť ako databázový server:
databázový server SQL Server 2000 a cvičnú databázu NorthWind
platformu .Net Framework
webovú službu wsLudia
Počítač, ktorý bude slúžiť ako webový server:
Internet Information Services (IIS) a .Net Framework
Klientský počítač:
ľubovolný operačný systém a ľubovoíný prehliadač webových stránok
Pri vývoji aplikácie mÖže všetky tieto tri počítače nahradiť jeden jediný,
ktorý slúži ako server, klient a spúšťa sa na ňom aj vývojové prostredie.
Úlohou aplikácie bude na základe zadaného názvu mesta vypísať z neho všetkých
zákazníkov.
Využijeme webovú službu wsLudia, konkrétne metódu DajZakaznikovZmesta, ktorá
vyžaduje ako parameter reťazec s požadovaným mestom. Metóda DajZakaznikovZmesta
vráti objekt typu Dataset. Vo Visual Studiu vytvoríme novú aplikáciu typu
ASP.Net Web Application s názvom napríklad NWadresar v zložke Visual C#
Projects. Adresa pre ladenie projektu potom bude http://lo calhost/NWadresar.
Navrhneme aplikačný formulár. Bude obsahovať komponentu Label s textom "Mesto",
komponentu TextBox s názvom tbMesto a tlačidlo btVyber s textom "Vyber".
Dominantnou komponentou aplikačného formulára bude komponenta DataGrid s názvom
dgZakaznici.

Registrácia služby
V nasledujúcom kroku zaregistrujeme XML webovú službu. Klikneme pravým
tlačidlom myši na položku References v okne Solution Explorer a v zobrazenom
menu klikneme na položku Add Web Reference. V dialógu, ktorý sa následne
otvorí, zadáme referenciu na webovú službu, v našom prípade adresu
http://localhost/ wsLudia/Service1.asmx. Tlačidlom Add Reference pridáme do
projektu referenciu na webovú službu. Referenciu v pravom okne vývojového
prostredia premenujeme na wsLudia.
Pri vývoji databázovej aplikácie býva dobrým zvykom odladiť si SQL príkaz
pomocou konzolovej aplikácie databázového servera, napríklad pomocou SQL Query
analyzera. V tomto prípade, keďže využívame webovú službu, už značná časť
databázovej logiky bola odladená v procese jej vývoja, no nikdy nezaškodí
pripomenúť si staré dobré zásady.

Zdrojový súbor
Na začiatok zdrojového súboru WebForm1.aspx.cs pridáme referenciu
using System.Net; a inštancie proxy tried webovej služby
private DataSet dsZakaznici; private wsNasiLide.Service1 ws = new
wsNasiLide.Service1(); Jadro kódu bude v procedúre btVyber_Click. Všimnime si, že v praktickej
aplikácii je dobrým zvykom poistiť sa proti vzniku chýb a výnimiek (programová
konštrukcie try catch):
private void btVyber_Click(object sender, System.EventArgs e)
{
try
{
dsZakaznici = ws.DajZakaznikovZmesta (tbMesto.Text); dgZakaznici.DataSource = dsZakaznici; dgZakaznici.DataMember = "Employees"; dgZakaznici.DataBind(); }
catch (WebException we)
{
Response.Write(we.Message); }
}
Po preložení a zlinkovaní aplikácie sa mÖžeme o jej funkčnosti presvedčiť
pomocou "tenkého klienta", teda prehliadača webových stránok.

Vygenerovaná stránka
Čitatelia, ktorí majú skúsenosti s ActiveX komponentami na webových stránkach,
sa teraz iste vrátia ku špecifikácii klientského počítača. Požiadavky naň boli
naozaj minimálne a dali sa vyjadriť jedinou vetou: Ďubovoíný operačný systém a
íubovoíný prehliadač webových stránok. Ak si pozrieme zdrojový kód HTML
stránky, ktorá bola pre klienta vygenerovaná, zistíme, že táto veta bola naozaj
pravdivá. DataGrid sa ku klientovi preniesol ako obyčajná tabuíka na HTML
stránke:

id="dgZakaznici"
style="height:152px;width:384px;border-collapse:collapse;Z-INDEX: 104; LEFT:
32px; POSITION: absolute; TOP: 64px"> ContactNameAddress
Thomas Hardy120 Hanover Sq. Victoria
AshworthFauntleroy Circus
Elizabeth BrownBerkeley Gardens 12 Brewery
Ann Devon35 King George
Simon CrowtherSouth House 300 Queensbridge
Hari Kumar90 Wadhurst Rd.


Riešenie s využitím webovej služby je oveía čistejšie z híadiska použitej
architektúry. Formátové konverzie údajov síce mÖžu nepatrne znížiť výkon, ale
táto drobná nevýhoda je vyvážená jednoduchosťou klientskej aplikácie, ale
hlavne menšou frekvenciou nutnosti upgradu u klienta. Vo väčšine príkladov
postačí úprava webovej služby a takto inovovaná aplikačná logika je bez
nutnosti akýchkoívek zásahov u klienta ihneď k dispozícii.
Výhody z híadiska jednoduchosti a čistoty oddelenia jednotlivých
architektonických vrstiev aplikácie sú taktiež neoddiskutovateíné. K webovej
službe mÖžeme cez HTTP protokol pristupovať prakticky odkiaíkoívek a mÖžeme je
využívať aj z iných typov aplikácií.

Mobilný tenký klient
Podobne mÖžeme vytvoriť aplikáciu typu ASP.Net Mobile Web Application (vo
Visual Studiu 2003, prípadne staršom Visual Studiu s nainštalovaným rozšírením
MMIT Microsoft Mobile Internet Toolkit). Potom budeme mÖcť k aplikácii
pristupovať aj z tenkých klientov v pravom slova zmysle, teda zo zariadení
Pocket PC 2002, Palm a dokonca aj z obyčajných mobilných telefónov s podporou
protokolu WAP.
Ukážeme si stručný postup vytvorenia takejto aplikácie pre mobilné zariadenia.
Podobne ako v predchádzajúcej variante aj pre mobilnú aplikáciu navrhneme
aplikačný formulár. Bude sa ale skladať z dvoch častí.

Vygenerovaná stránka
Prvá časť formulára s názvom VyberMesta bude obsahovať komponentu Label s
textom "Mesto", komponentu TextBox s názvom tbMesto a komponentu Command s
názvom btVyber s textom "Vyber".
Na plochu druhého formulára Výsledky umiestnime komponentu Label s textom
Zamestnanci a nastavíme parameter StyleReference = title.
Ďalej sem umiestnime komponentu ObjectList a nastavíme parametre. Pre formulár
Vysledky nastavíme parameter Paginate na hodnotu TRUE. Týmto krokom je návrh
formulára predbežne ukončený.
Podobne ako v predchádzajúcej aplikácii aj v tejto v nasledujúcom kroku
zaregistrujeme XML webovú službu. Postup je úplne zhodný. Po registrácii sa
pustíme do úpravy kódu. Na začiatok zdrojového súboru MobileWebForm1.aspx.cs
pridáme referenciu
using System.Net; a inštancie proxy tried webovej služby
private DataSet dsZakaznici; private wsNasiLide.Service1 ws = new wsLudia.Service1(); Jadro kódu bude v procedúre btVyber_Click. Rozdiel oproti predchádzajúcej
aplikácii je len v tom, že pre zobrazenie výsledkov nepoužijeme DataGrid, ale
ObjectList:
private void btVyber_Click(object sender, System.EventArgs e)
{
try
{
sZakaznici = ws.DajZakaznikovZmesta (tbMesto.Text); ObjectList1.DataSource = dsZakaznici; ObjectList1.DataMember = "Employees"; ObjectList1.DataBind(); ActiveForm = Vysledky; }
catch (WebException we)
{
Response.Write(we.Message); }
}
Týmto je aplikácia hotová a mÖžeme ju začať ladiť.
Aj v tomto prípade nás bude zaujímať, ako funguje komunikácia medzi stránkou
obsahujúcou zoznam zamestnancov so stránkou obsahujúcou detailné informácie o
vybranom zamestnancovi. Nuž obyčajný JavaScript:
Thomas
Hardy

Victoria
Ashworth

kde funkcia __doPostBack má kód
function __doPostBack(target, argument){
var theform =
document.Vysledky
theform.__EVENTTARGET.value = target theform.__EVENTARGUMENT.value
= argument
theform.submit()
}
Po úspešnom preklade zostavení a odladení aplikácie mÖžeme túto otestovať
pomocou rÖznych prehliadačov a emulátorov mobilných zariadení. Jej URL adresa
je v našom prípade http://localhost/mobAdr// MobileWebForm1.aspx.

Hrubý klient
Pod pojmom hrubý klient rozumieme v tomto prípade aplikáciu, ktorá beží na
lokálnom počítači u klienta a pripája sa k databáze prostredníctvom webovej
služby. Aplikácia, mÖže naplno využívať výkon klientského a zobrazovacie
možnosti klientského počítača. NajskÖr si zosumarizujeme požiadavky na
konfiguráciu, inými slovami, čo musíme mať na jednotlivých počítačoch
nainštalované. Predpokladáme použitie serverovej platformy Windows 2000 Server,
prípadne .Net Server 2003.
Počítač, ktorý bude slúžiť ako databázový server:
databázový server SQL Server 2000 a cvičnú databázu NorthWind
platformu .Net Frameworkl
webovú službu wsLudia
Klientský počítač:
Operačný systém Windows 2000/XP, platformu .Net Framework a aplikáciu
Adresar.exe
Podobne ako u príkladov pre tenkého klienta aj v tomto prípade využijeme webovú
službu wsLudia, konkrétne jej metódu DajZakaznikovZmesta, ktorá vyžaduje ako
parameter reťazec s požadovaným mestom.
Vo vývojovom prostredí Visual Studio .Net vytvoríme nový projekt s názvom
napríklad Adresár typu Windows Application v zložke Visual C# Projects. NajskÖr
navrhneme dialóg aplikácie. Bude obsahovať komponentu Label s textom "Mesto",
komponentu TextBox s názvom tbMesto a tlačidlo btVyber s textom "Vyber". Pre
zobrazenie údajov použijeme komponentu ListView s názvom lvAdresar.

Registrácia
Nezbytným predpokladom pre pripojenie sa k webovej službe je jej registrácia v
práve vyvíjanej aplikácii.
Webovú službu zaregistrujeme kliknitím pravého tlačidla myši na položku
References v okne Solution Explorer | Add Web Reference. Následne zadáme
referenciu na webovú službu, v našom prípade adresu http://localhost/
wsLudia/Service1.asmx a túto referenciu pridáme do nášho projektu tlačidlom Add
Reference. Referenciu v pravom okne vývojového prostredia premenujeme napríklad
na na wsNasiLide.

Zdrojový súbor
Na začiatok zdrojového súboru Form1.cs pridáme referenciu
using System.Net; a inštancie proxy tried webovej služby
private DataSet dsZakaznici; private DataTable dtCustomers; private wsNasiLide.Service1 ws = new wsLudia.Service1(); Funkčné jadro aplikácie bude v procedúre btVyber_Click, ktorá sa aktivuje ako
obsluha udalosti pri zatlačení tlačidla Vyber:
private void btDaj_Click(object sender, System.EventArgs e)
{
try
{
dsZakaznici = ws.DajZakaznikovZmesta (tbMesto.Text); dtCustomers = dsZakaznici.Tables["Northwind"]; PridajDataDoListView(); }
catch (WebException we) {
MessageBox.Show("Nemozem sa pripojit. Chyba: " + we.Message,
"Connection Failed"); }
}
Jednotlivé záznamy zapúzdrené v datasete pridáme do komponenty ListView v
pomocou novovytvorenej metódy PridajDataDoListView(). Novú metódu pridáme
napríklad pomocou dialógu C# Method Wizard, ktorý sa aktivuje v kontextovom
menu po kliknutí íavým tlačidlom myši na názov triedy Form1.
Kód v tele procedúry je pomerne jednoduchý, jedná sa o pridanie obsahu dvoch
stípcov datasetu do komponenty ListView:
private void PridajDataDoListView()
{
ListViewItem polozka; lvAdresar.Clear(); lvAdresar.Columns.Add("ContactName",(lvAdresar.Width/2),
HorizontalAlignment.Left); lvAdresar.Columns.Add("Address",
(lvAdresar.Width/2),HorizontalAlignment.Right); lvAdresar.View = View.Details; foreach(DataRow row in dtCustomers.Rows)
{
polozka = new ListViewItem(row["Contact Name"].ToString());
polozka.SubItems.Add(row["Address"]. ToString()); lvAdresar.Items.Add(polozka); }
}
Teraz mÖžeme aplikáciu preložiť, zostaviť a spustiť.
Ak by sme túto aplikáciu boli vytvorili typu Smart Device Application (vo
Visual Studiu 2003, prípadne staršom Visual Studiu s nainštalovaným rozšírením
CF SDE), mohli by sme prakticky totožnú aplikáciu spúšťať na zariadeniach
platformy Pocket PC 2002. Postup vývoja aplikácie je úplne rovnaký ako pre
platformu PC.








Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.