XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1



Hasonló dokumentumok
Webszolgáltatás és XML alapú adatbázis. 1. Az adatbázis megtervezése

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Johanyák Zsolt Csaba: XML Webszolgáltatás alapú osztott alkalmazás fejlesztése (Mandelbrot halmaz számítás) oktatási segédlet

Szoftvertechnolo gia gyakorlat

Webshop készítése ASP.NET 3.5 ben I.

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

Access adatbázis elérése OLE DB-n keresztül

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Vizuális programozás gyakorlat

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

1. DVNAV letöltése és telepítése

A Microsoft Visual Studio 2005 fejlesztőkörnyezet


Johanyák Zsolt Csaba: Képnézegető program oktatási segédlet

Ugráló gomb oktatási segédlet Ugráló gomb

Entity Framework alapú adatbáziselérés

A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

munkafüzet open eseményéhez

Digitális aláíró program telepítése az ERA rendszeren

Eseménykezelés - Lottó játék

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Digitális aláíró program telepítése az ERA rendszeren

A FileZilla program beállítása az első belépés alkalmával

Programozási technológia

E-Freight beállítási segédlet

Gyakorló 9. feladat megoldási útmutató

Felhasználói dokumentáció. a TávTagTár programhoz. Készítette: Nyíri Gábor, hdd@nc-studio.com GDF Abakusz regisztrációs kód: GDFAba43

Osztályok. 4. gyakorlat

Vizuális programozás gyakorlat

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010.

Szoftvertechnolo gia 7. gyakorlat

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről

Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával

1 Rendszerkövetelmények

ContractTray program Leírás

Entity Framework alapú adatbáziselérés 2

Merevlemez üzembe helyezése, particionálása

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció

KIRA. KIRA rendszer. Telepítési útmutató v1

Swing GUI készítése NetBeans IDE segítségével

BME MOGI Gépészeti informatika 7.

ASP-s alkalmazás készítés

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

ServiceTray program Leírás

ÁNYK53. Az Általános nyomtatványkitöltő (ÁNYK), a személyi jövedelemadó (SZJA) bevallás és kitöltési útmutató együttes telepítése

Tájékoztató. Használható segédeszköz: -

DebitTray program Leírás

TERC V.I.P. hardverkulcs regisztráció

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

WIN-TAX programrendszer hálózatban

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Segédanyag: Java alkalmazások gyakorlat

Java-s Nyomtatványkitöltő Program Súgó

A TERC VIP költségvetés-készítő program telepítése, Interneten keresztül, manuálisan

Outlook Express használata

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

PDF. Tartalomjegyzék 1/21

Tanúsítvány igénylése sportegyesületek számára

Telenor Webiroda. Kezdő lépések

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10)

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

GIRO GSM MODEM/VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ

Belépés a GroupWise levelező rendszerbe az Internet felől

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Home movie database. Specifikáció. Verzió: 1.0. Dátum: Státusz: Released. Készítette: Farkas Róbert. Kulcsár Orsolya.

Segédanyag az iktatáshoz. Tartalomjegyzék

1. ábra Fájl feltöltése 2. ábra Megtekintés

TELEPÍTÉSI ÉS FELHASZNÁLÓI ÚTMUTATÓ

Ingyenes DDNS beállítása MAZi DVR/NVR/IP eszközökön

Eddig még nem használt vezérlőket is megismerünk: PlaceHolder, RadioButtonList.

BME MOGI Gépészeti informatika 4.

BME MOGI Gépészeti informatika 6.

A számítógép beállításainak megváltoztatása

Bevezetés. A WebAccess használatának bemutatása előtt néhány új funkció felsorolása következik:

Mappák megosztása a GroupWise-ban

Általános fiók beállítási útmutató

Az importálás folyamata Felhasználói dokumentáció verzió 2.1.

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Vodafone e-sms. Használati útmutató

Kezdő lépések. Céges . Tartalom

Nyomtató telepítése. 1. ábra Nyomtatók és faxok Nyomtató hozzáadása

Webes alkalmazások fejlesztése

Telepítési Kézikönyv

CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez

WIN-TAX programrendszer frissítése

5. A záróvizsga-jegyzőkönyv készítése

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

web works hungary Rövid technikai tájékoztató a webhosting szolgáltatásról. (PLESK szerver)

Átírás:

XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1 A gyakorlat célja a webszolgáltatások létrehozásának és igénybe vételének elsajátítása egyszerű példákon keresztül. 1. Két szám összegét kiszámoló webszolgáltatás készítése és igénybe vétele A webszolgáltatás egy ASP.NET-ben megírt szerver oldali alkalmazás, amit a HTTP és SOAP protokollok segítségével hívhatunk meg. Gyakorlatilag egy távoli eljáráshívásra kerül sor, a webszerveren levő objektum egy metódusát fogjuk igénybe venni egy kliens alkalmazásból. Elsőként a szerver alkalmazást készítjük el, majd ezt követően egy Windows Forms kliens alkalmazást fejlesztünk. 1.1. Szerver oldali alkalmazás (webszolgáltatás) A feladat végrehajtása során a következő fontosabb lépésekre kerül sor: 1. Projekt létrehozása 2. Állományok és osztály átnevezése 3. Névtér azonosító megadása 4. Automatikusan generált webszolgáltatás kipróbálása 5. Webszolgáltatásként működő saját metódus definiálása és tesztelése 1.1.1. Projekt létrehozása Hozzunk létre egy új C# projektet (File/New/Web Site ), melynek típusa (Templates) ASP.NET Web Service és tárolási helye a lokális állományrendszer (File System) c:\munka könyvtára. A projekt neve legyen wsmuvelet. A Visual Studio rendelkezik egy beépített egyszerű webszerverrel, aminek az a célja, hogy segítségével kipróbáljuk a fejlesztett alkalmazásokat. Használatának előfeltétele az, hogy a projekt helyének File System-et adjuk meg. 1 e-mail:johanyak.csaba@gamf.kefo.hu 1

1.1.2. Állományok és osztály átnevezése Nevezzük át a Service.asmx állományt a Solution Explorerben wsmuvelet.asmx-re, majd nyissuk meg kódnézetben, ha nem nyílik meg automatikusan. Solution Explorerben nyissuk meg a App_Code mappát. A benne található Service.cs állományt nevezzük át wsmuvelet.cs-re. A kódszerkesztőben a wsmuvelet.cs állományban a szolgáltatás osztályát (Service) és annak konstruktorát nevezzük át wsművelet-re. A wsmuvelet.asmx állományban a hivatkozásokat is módosítsuk a fentieknek megfelelően az alábbi ábra szerint. 1.1.3. Névtér azonosító megadása A wsművelet osztály definíciója előtt (wsmuvelet.cs) megjelenő attribútumok teszik lehetővé az osztály számára, hogy webszolgáltatásként működő metódusokat definiáljon. A WebService attribútum paramétereként egy egyedi névtér azonosítót szokás megadni. Ennek érdekében írjuk át értékét az alábbiak szerint: [WebService(Namespace="http://VezeteknévKeresztnév/wsMűvelet/")] A névtér-azonosítóként konvencionálisan URI formátumot használunk, ez természetesen nem valódi URL. A VezeteknévKeresztnév részben mindenki a saját nevét adja meg. 1.1.3. Automatikusan generált webszolgáltatás kipróbálása A Visual Studio Automatikusan generál az osztállyal együtt egy HelloWorld nevű metódust. Az előtte elhelyezett [WebMethod] attribútum teszi lehetővé, hogy a metódus webszolgáltatást 2

nyújthasson. Kipróbálásához válasszuk ki a Debug/Start Debugging menüpontot. Ekkor egy figyelmeztető ablak jelenik meg, amelyben engedélyezhetjük a Debug üzemmódban történő futtatást. Ha ezt tesszük, akkor a Visual Studio létrehoz egy Web.config nevü állományt (ld. alább) a projektben, amelyben beállítja a Debug mód engedélyezését. Ezt csak a fejlesztés során engedélyezzük! Értékét a végső változatban állítsuk false-ra. A beépített webszerver indulását a tálcán megjelenő kis ikon és magyarázat buborék jelzi. Ekkor egy web böngésző ablak nyílik meg a jobb oldalt látható tartalommal. A HelloWorld hivatkozásra kattintva egy újabb weblap nyílik meg, amelyen megtekinthetjük, hogy milyen formában küldi a kliens a szerverhez a metódushívásokat, illetve milyen formában érkeznek a válaszok (futás eredménye, visszatérési érték). A két folyamat közötti üzenetváltás SOAP protokoll segítségével történik XML formátumban. Ugyancsak ezen a weblapon jelenik meg egy indítás feliratú nyomógomb, aminek segítségével tesztelhetjük az automatikusan generált webszolgáltatást. A tesztelés 3

eredménye szintén a böngészőablakban jelenik meg. A böngészőablakban megjelenített tartalom kismértékben eltérő lehet attól függően, hogy melyik böngésző lett alapértelmezettként beállítva. Fontosnak tartom megjegyezni, hogy a webszolgáltatásokat normál használat során nem web böngészőből vesszük igénybe, hanem egy kliens alkalmazásból (a jelen gyakorlatban ez egy Windows Forms alkalmazás lesz) valamely objektum egy metódusaként fogjuk őket meghívni. 1.1.4. Webszolgáltatásként működő saját metódus definiálása és tesztelése Egy saját metódust szeretnénk készíteni, ami két egész számot vesz át, és visszaadja az összegüket. Lépjünk ki Debug módból. Készítsük el a wsmuvelet projekt osztálydiagramját. Tegyük megjegyzésbe az automatikusan generált HelloWorld metódust, a továbbiakban nem lesz rá szükségünk. Hozzuk létre a wsművelet osztályban az Összead metódus vázát, majd a kódszerkesztőben írjuk meg a számítási utasítást: /// <summary> /// Két egész szám összegét adja vissza /// </summary> [WebMethod] public int Összead(int a, int b) return a+b; Ne feledkezzünk meg a metódus fejléce előtt elhelyezendő [WebMethod] attribútumról! Az előzőekben látott módon próbáljuk ki a metódust. A tesztelés során most egy űrlapot kapunk amelynek segítségével megadhatjuk a metódus két paraméterét. Az eredményt az előzőekhez hasonlóan kapjuk meg. A webszolgáltatás üzemszerű használata során egy webszerveren helyezkedik el. Az ehhez kapcsolódó beállítások és egy hosszabb lélegzetű példa alkalmazás a MandelbrotWebszolgáltatás, amit egyéni munka keretében kell áttanulmányozni. 4

1.2. Kliens alkalmazás létrehozása A következőekben egy olyan Windows Forms alkalmazást készítünk, ami igénybe veszi az előzőekben elkészített webszolgáltatást. A fejlesztés során nem egy távoli webszervert fogunk igénybe venni, hanem lokálisan a megoldáson belül különálló projektként (wsmuvelet) jelenlevő webszolgáltatást használjuk. A feladat végrehajtása során a következő fontosabb lépésekre kerül sor: 1. Új projekt létrehozása és beállítása alapértelmezettként 2. Kapcsolat a webszolgáltatáshoz, proxy osztály létrehozása 3. Kliens alkalmazás felületének kialakítása 1.2.1. Új projekt létrehozása A legegyszerűbb megoldás az, ha a korábbi projekt bezárása nélkül hozunk létre egy új projektet. Például Solution Explorerben jobb egérgomb kattintás a megoldás nevén, a gyorsmenüben Add/New Project. A projekt típusa C# Windows Application, neve wskliens, helye C:\munka. Állítsuk be az új projektet alapértelmezettként annak érdekében, hogy egyszerűen és gyorsan indítható legyen. Ehhez Solution Explorerben jobb egérgombbal kattintunk a kliens projekt nevén, majd a gyorsmenüben Set as StartUp Project. Ekkor félkövéren jelenik meg a projekt neve. 5

1.2.2. Kapcsolat a webszolgáltatáshoz, proxy osztály létrehozása A webszolgáltatás igénybe vételéhez a projektünknek információkkal kell rendelkeznie a webszolgáltatásról. Ehhez Solution Explorerben jobb egérgombbal kattintunk a kliens projekt nevén, majd a gyorsmenüben Add Service Reference a megjelenő párbeszédablakban a Discover listát legördítve a Services in solution-t választjuk. A webszolgáltatások listájában a WSMuveletre kattintunk, majd kis várakozás után jobb oldalon a Web reference name mezőben az eredeti localhost kitörlése után megadjuk a WSMuvelet hivatkozási nevet, és kattintunk az Add Reference gombon. Ekkor a Solution Explorerben a projekt mappáján belül egy újabb mappa kell megjelenjen Web References néven. A mappában egyetlen elem szerepel, a WSMuvelet. Készítsük el a WSKliens projekt osztálydiagramját. Egyebek között keletkezett egy osztály WSMuvelet néven, ami segítséget nyújt a webszolgáltatás eléréséhez. Ez egy ún. proxy vagy más néven csonk (stub) osztály, ami elfedi azt a tényt, hogy az összeadást egy másik folyamat egy metódusa fogja végrehajtani. A kliens alkalmazásunkban ebből az osztályból fogunk egy objektumot létrehozni, és ennek az objektumnak fogjuk meghívni az Összeadás metódusát, amikor a művelet végrehajtására lesz szükségünk. A WSMuvelet osztály gondoskodik arról, hogy a beérkező metódushívásokból SOAP üzeneteket generáljon, azokat elküldje a szerverre, fogadja a szerver válaszát, és biztosítsa a visszatérési értéket. Az osztály URL tulajdonsága segítségével állíthatjuk be a telepített webszolgáltatás pontos elérési címét, vagy módosíthatjuk azt akár futásidőben. Az osztály biztosítja az aszinkron hívás lehetőségét is. 1.2.3. Kliens alkalmazás felületének kialakítása A kliens alkalmazás felületét a mellékelt ábrának megfelelően alakítsuk ki. Alkalmazzuk a már megszokott elnevezési konvenciót. A főablak állományneve legyen frmfoablak, osztályneve legyen ugyanennek ékezetes változata. A szerkesztőmezők nevei: tba, tbb, tbab. A tbab csak olvasható. A nyomógomb neve btplusz. 1.2.4. Összeadási művelet Hozzunk létre egy adattagot az frmfőablak osztályban, aminek az lesz a feladata, hogy a webszolgáltatást megtestesítő lokális objektum referenciáját tárolja. private WSKliens.WSMuvelet.WSMuvelet Szerver; 6

A főablak konstruktorában hozzunk létre egy objektumot ehhez az adattaghoz. public frmfőablak() InitializeComponent(); Szerver = new WSKliens.WSMuvelet.WSMuvelet(); Készítsünk egy eseménykezelőt a nyomógomb Click eseményéhez. Ebben ellenőrzötten beolvassunk a felhasználó által megadott két számot, meghívjuk a webszolgáltatást, és az eredményt megjelenítjük a tbab szövegmezőben. private void btplusz_click(object sender, EventArgs e) try int a = int.parse(tba.text); int b = int.parse(tbb.text); int ab = Szerver.Összead(a, b); tbab.text = ab.tostring(); catch (FormatException) MessageBox.Show("A megadott adatok hibásak!"); catch (System.Net.WebException we) MessageBox.Show(we.Message); A webszolgáltatás meghívása alatt WebException kivétel keletkezhet. Ilyenkor megjelenítjük a kivétel objektummal kapott rendszer-hibaüzenetet. Próbáljuk ki a programot. 2. Más által készített webszolgáltatás igénybe vétele A http://konverter.weblapportal.hu/konverter.asmx címen egy webszolgáltatást helyeztem el, ami két metódust tartalmaz Celsius és Fahrenheit fokok közötti átváltásra. Az alábbiakban egy kliens programot készítünk, ami ezen szolgáltatás segítségével elvégzi a kívánt átalakítást. 2.1. Új projekt létrehozása A feladat megoldásához hozzunk létre egy Windows Application típusú C# projektet KonverterKliens néven. 2.2. Kapcsolat a webszolgáltatáshoz, proxy osztály létrehozása Solution Explorerben jobb egérgombbal kattintunk a kliens projekt nevén, majd a gyorsmenüben Add Web Reference a megjelenő párbeszédablak URL mezőjében megadjuk a http://konverter.weblapportal.hu/konverter.asmx címet, majd kattintunk a Go gombon. Ezután jobb oldalon a Web reference name mezőben megadjuk a 7

KonverterSzerver hivatkozási nevet, és kattintunk az Add Reference gombon. Ekkor a Solution Explorerben a projekt mappáján belül egy újabb mappa kell megjelenjen Web References néven. A mappában egyetlen elem szerepel, a KonverterSzerver. 2.3. Kliens alkalmazás felületének kialakítása A kliens alkalmazás felületét a mellékelt ábrának megfelelően alakítsuk ki. Alkalmazzuk a már megszokott elnevezési konvenciót. A főablak állományneve legyen frmfoablak, osztályneve legyen ugyanennek ékezetes változata. A szerkesztőmezők nevei: tbcelsius és tbfahrenheit. A nyomógombok neve btc2f és btf2c. A nyomógombokon szereplő nyilakat Symbol betűtípussal tudjuk megjeleníteni (Font tulajdonság). 2.4. Webszolgáltatás igénybe vétele Hozzunk létre egy adattagot az frmfőablak osztályban, aminek az lesz a feladata, hogy a webszolgáltatást megtestesítő lokális objektum referenciáját tárolja. private KonverterSzerver.Konverter Konverter; A főablak konstruktorában hozzunk létre egy objektumot ehhez az adattaghoz. public frmfőablak() InitializeComponent(); Konverter=new KonverterSzerver.Konverter(); Valósítsuk meg a Celsius Fahrenheit irányú átalakítást. Ennek érdekében készítsünk a bal oldali nyomógombhoz egy eseménykezelőt, amiben beolvassunk a Celsius szövegmezőben elhelyezett számadatot, átalakítjuk számmá, majd meghívjuk a webszolgáltatás megfelelő metódusát. private void btc2f_click(object sender, EventArgs e) try double Celsius = double.parse(tbcelsius.text); double Fahrenheit = Konverter.Celsius2Fahrenheit(Celsius); tbfahrenheit.text = Fahrenheit.ToString(); catch (FormatException) MessageBox.Show("A megadott adat hibás!"); catch (System.Net.WebException we) MessageBox.Show(we.Message); Valósítsuk meg a Fahrenheit Celsius irányú átalakítást. Ennek érdekében készítsünk a jobb oldali nyomógombhoz egy eseménykezelőt, amiben beolvassunk a Fahrenheit szövegmezőben elhelyezett számadatot, átalakítjuk számmá, majd meghívjuk a webszolgáltatás megfelelő metódusát. private void btf2c_click(object sender, EventArgs e) 8

try double Fahrenheit = double.parse(tbfahrenheit.text); double Celsius = Konverter.Fahrenheit2Celsius(Fahrenheit); tbcelsius.text = Celsius.ToString(); catch (FormatException) MessageBox.Show("A megadott adat hibás!"); catch (System.Net.WebException we) MessageBox.Show(we.Message); Próbáljuk ki az alkalmazást. 9