Transcript HP08_WebServiceConsume
Haladó Programozás
A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek Szabványok és protokollok Webszolgáltatás felhasználása Webszolgáltatás felhasználása aszinkron metódushívással OE-NIK HP
Haladó Programozás
A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek Szabványok és protokollok Webszolgáltatás felhasználása Webszolgáltatás felhasználása aszinkron metódushívással OE-NIK HP
Webszolgáltatás
• Szoftverkomponens, amely hálózaton keresztül szolgáltatásokat
nyújt
– Általában nagyobb rendszerek adott feladatot ellátó része – A felhasználó (legtöbbször egy másik alkalmazás) számára fekete dobozként viselkedik – Jól meghatározott interfészeken keresztül érhető el • Előnyei – Szabványos internet protokollokon keresztül érhető el – XML-en alapuló, nyílt szabványokra épül – Rendszertől, nyelvtől és megvalósítástól független – Leírható, közzétehető, felkutatható OE-NIK HP V1.0
3
Haladó Programozás
A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek Szabványok és protokollok Webszolgáltatás felhasználása Webszolgáltatás felhasználása aszinkron metódushívással OE-NIK HP
Szolgáltatásközpontú rendszerek
• A webszolgáltatások fejlődésének korai szakaszában létrejött
minta
– Serivce-oriented Architecture, SOA – A szabványok és protokollok ezen minta alapján jöttek létre Közzétesz Szolgáltatásjegyzék Keres Szolgáltató Szolgáltat Igénybe vesz Szolgáltatást igénybe vevő OE-NIK HP V1.0
5
Windows Communication Foundation
• Elosztott rendszerek készítéséhez kifejlesztett API • A korábbi, egymástól független elosztott technológiákat integrálja – XML-webszolgáltatások, DCOM, .NET remoting, stb.
– Tehát része az XML-webszolgáltatás • A .NET 3.0-ban jelent meg • A következő alkalmakon lesz róla szó részletesen Kliens alkalmazás Proxy WCF-hoszt WCF-szolgáltatás OE-NIK HP V1.0
6
Haladó Programozás
A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek Szabványok és protokollok Webszolgáltatás felhasználása Webszolgáltatás felhasználása aszinkron metódushívással OE-NIK HP
Felderítés
• A szolgáltatását a készítő közzéteheti egy jegyzékben • A jegyzékben a szolgáltatást igénylő kutathat Felderítés UDDI, DISCO • UDDI:
Universal Description, Discovery and Integration
– Webszolgáltatások jegyzéke Leírás WSDL – Több szempont szerint kereshető (szolgáltatás, cégnév, telephely) – Lehet nyilvános, vagy cégen belüli Üzenet SOAP • DISCO:
a discovery (felfedezés) szóból
– A Microsoft megoldása szolgáltatások hirdetésére Átvitel HTTP, SMTP, … OE-NIK HP V1.0
8
Leírás
• Ha az igénylő megtalálta a megfelelő szolgáltatást, tudnia kell, Felderítés
hogy
UDDI, DISCO – hol, és milyen néven érhető el a szolgáltatás, – milyen bemeneti paramétereket vár, – mit ad vissza.
Leírás WSDL • WSDL:
Web Services Description Language
– A kérés és a válasz leírását adja meg Üzenet SOAP Átvitel HTTP, SMTP, … OE-NIK HP V1.0
9
Üzenet
• Az üzenetet el kell küldeni a szolgáltatónak, ami az adatokat
feldolgozva válaszüzenetet küld
Felderítés UDDI, DISCO Leírás WSDL • SOAP:
Simple Object Access Protocol
– Üzenetek küldésére használt protokoll • Az eddigi protokollok és szabványok az
XML (Extensible Markup Language) nyelven alapulnak
Üzenet SOAP Átvitel HTTP, SMTP, … OE-NIK HP V1.0
10
Átvitel
• Az üzeneteket át kell vinni a hálózaton keresztül a
szolgáltató és a szolgáltatást igénybevevő között
Felderítés UDDI, DISCO • A SOAP független az átvitel típusától • A legtipikusabb a HTTP
(Hypertext Transfer Protocol)
Leírás WSDL • Ha a kérések és a válaszok összhangja nem
fontos, akkor az SMTP (Simple Mail Transfer Protocol) eszköz a SOAP üzenetek továbbítására is kiváló
Üzenet SOAP Átvitel HTTP, SMTP, … OE-NIK HP V1.0
11
Webszolgáltatások megvalósítása .NET-ben
Ügyfél alkalmazás Logikai kapcsolat Web szolgáltatás Proxy osztály SOAP HTTP TCP/IP Fizikai kapcsolat IIS/ASP.NET
SOAP HTTP TCP/IP OE-NIK HP V1.0
12
Haladó Programozás
A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek Szabványok és protokollok Webszolgáltatás felhasználása Webszolgáltatás felhasználása aszinkron metódushívással OE-NIK HP
Általános ismeretek
• Egy webszolgáltatás felhasználója bármilyen típusú program lehet
( konzolalkalmazás, Windows alkalmazás, web-alkalmazás… )
• A felhasználó nem kell hogy ismerje a szolgáltatás
megvalósításának részleteit
• A kérés és a válasz protokollját, valamit az üzenet struktúráját a
WSDL leíró nyelven megadott dokumentum tartalmazza
• Az alkalmazásfejlesztő környezetek általában képesek létrehozni
egy un. proxy osztályt (ügyfélcsonkot)
OE-NIK HP V1.0
14
A proxy osztály (ügyfélcsonk)
• Elkülöníti a SOAP és a hálózati protokollokkal kapcsolatos
rétegeket az alkalmazástól
• Egy hagyományos osztály, amely visszatükrözi a webszolgáltatás
működését
• Mindenegyes proxy osztálybeli metódus bemeneti paraméterei és
visszatérési értéke megegyezik a vele azonos webszolgáltatásbeliekkel
• A fejlesztő a szolgáltatás meghívását és a válasz fogadását a proxy
osztály metódusán keresztül végzi, nem szükséges ismernie az egyéb szabványokat és protokollokat
OE-NIK HP V1.0
15
Webszolgáltatás felhasználása .NET-ben
• Proxy osztályt legegyszerűbben úgy kapunk, ha a szolgáltatás
elérhetőségét szolgáltatás referenciaként a projekthez adjuk
Használható az svcutil.exe is.
– Az Add Service Reference menüpontban – Írjuk be a szolgáltatás címét, kattintsunk a Go gombra – A webreferencia nevének megadás utána pedig az OK gombra – A Reference.cs fájlban található a proxy osztály, amely a projektnév.referencianév névtérben helyezkedik el • A proxy osztály metódusait meghívva kapjuk meg az eredményt – Az eredmény általában string típusú és XML formátumú – Ezt Xdocumentté konvertálhatjuk, és a tanult LINQ to XML technológiával haszálhatjuk OE-NIK HP V1.0
16
Webszolgáltatás felhasználása .NET-ben
V1.0
OE-NIK HP 17
Feladat
• A Magyar Nemzeti Bank árfolyam szolgáltatását használva
jelenítsük meg az aktuális árfolyamokat.
– A szolgáltatás elérhető itt: http://www.mnb.hu/arfolyamok.asmx
– Leírása itt: http://www.mnb.hu/Root/Dokumentumtar/MNB/Statisztika/mnbhu_statiszt ikai_idosorok/mnbhu_arfolyamok/napiarfolyamok/mnbhu_webservice/arfol yam_lekeres.pdf
A hosszú gépelés helyett www.mnb.hu oldalon írjuk a keresőbe: „webszolgáltatás”
Ötletek:
– Készítsük el a szolgáltatás referenciát – Példányosítsuk a proxy osztályt – Hívjuk meg a GetCurrentExchangeRates metódusát V1.0
– Az eredményből a tanult XML-kezelő technikákkal az adatok kiszedhetők – Az adatokat soronként egy DataGridView-ban helyezhetjük el OE-NIK HP 18
Megoldás
V1.0
OE-NIK HP 19
Feladat 2.
• Kérdezzük le, hogy milyen napokon és milyen deviza árfolyama
kérdezhető le
– A devizanemeket egy comboBoxban, a napokat egy DateTimePickerben jelenítsük meg
Megoldás:
– A GetInfo metódus használható.
OE-NIK HP V1.0
20
Haladó Programozás
A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek Szabványok és protokollok Webszolgáltatás felhasználása Webszolgáltatás felhasználása aszinkron metódushívással OE-NIK HP
A szinkron metódushívás
• A proxy osztály generálásánál beállíthatjuk, hogy aszinkron
módon hívható metódust generáljon
– Add Service Reference -> Advanced… -> Generate asynchronous operations • Ilyenkor minden metódushoz megtalálható – Egy metódus …Async névvel – Egy esemény …Completed névvel • A metódust meghívva, az esemény kiváltódik annak
befejeződésekor
• Az eredmény az e.Result tulajdonságban található OE-NIK HP V1.0
22
Feladat 3.
• Kérjük le a felhasználó által megadott napon a megadott deviza
árfolyamát
– Figyelem, nem minden nap volt minden pénznem. (Pl. ATS már nincs, EUR régebben nem volt.) – Az eredményeket egy másik DataGridViewban jelenítsük meg.
– Az adatok lekérése aszinkron metódushívással történjen.
Megoldás:
– A GetExchangeRates metódus használható.
– A kezdő és a végső dátum ugyanaz.
OE-NIK HP V1.0
23
Megoldás
• Generáljunk egy új, aszinkron metódusokat tartalmazó proxy
osztályt
• Példányosítsuk, és iratkozzunk fel a GetExchangeRatesCompleted
eseményére
• Hívjuk meg a GetExchangeRatesAsync metódusát V1.0
OE-NIK HP 24
Megoldás
V1.0
OE-NIK HP 25
Irodalomjegyzék (alapismeretek)
• Wrox Author Team, Joseph Bustos, Karli Watson
Beginning .NET Web services using C#
• John Sharp
Visual C# 2005 lépésről lépésre
OE-NIK HP V1.0
26
Irodalomjegyzék (magasszintű ismeretek)
• Keith Ballinger
.NET Web Services: Architecture and Implementation
V1.0
OE-NIK HP 27
OE-NIK HP
OE-NIK HP