290 likes | 448 Views
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. Haladó Programozás. A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek
E N D
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
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ásjegyzék Keres Közzétesz Szolgáltató Szolgáltat Igénybe vesz Szolgáltatást igénybe vevő 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 OE-NIK HP
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 WCF-hoszt Proxy WCF-szolgáltatás 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
Felderítés UDDI, DISCO Leírás WSDL Üzenet SOAP Átvitel HTTP, SMTP, … 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 • UDDI: Universal Description, Discovery and Integration • Webszolgáltatások jegyzéke • Több szempont szerint kereshető (szolgáltatás, cégnév, telephely) • Lehet nyilvános, vagy cégen belüli • DISCO: a discovery (felfedezés) szóból • A Microsoft megoldása szolgáltatások hirdetésére OE-NIK HP
Felderítés UDDI, DISCO Leírás WSDL Üzenet SOAP Átvitel HTTP, SMTP, … Leírás • Ha az igénylő megtalálta a megfelelő szolgáltatást, tudnia kell, hogy • hol, és milyen néven érhető el a szolgáltatás, • milyen bemeneti paramétereket vár, • mit ad vissza. • WSDL: Web Services Description Language • A kérés és a válasz leírását adja meg OE-NIK HP
Felderítés UDDI, DISCO Leírás WSDL Üzenet SOAP Átvitel HTTP, SMTP, … Üzenet • Az üzenetet el kell küldeni a szolgáltatónak, ami az adatokat feldolgozva válaszüzenetet küld • 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 OE-NIK HP
Felderítés UDDI, DISCO Leírás WSDL Üzenet SOAP Átvitel HTTP, SMTP, … Á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 • A SOAP független az átvitel típusától • A legtipikusabb a HTTP (Hypertext Transfer Protocol) • Ha a kérések és a válaszok összhangja nem fontos, akkor az SMTP (Simple Mail Transfer Protocol) is kiváló eszköz a SOAP üzenetek továbbítására OE-NIK HP
Ügyfél-alkalmazás Web-szolgáltatás Logikai kapcsolat Proxy osztály IIS/ASP.NET SOAP SOAP HTTP HTTP TCP/IP TCP/IP Fizikaikapcsolat Webszolgáltatások megvalósítása.NET-ben 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
Á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
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
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
Webszolgáltatás felhasználása .NET-ben OE-NIK HP
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_statisztikai_idosorok/mnbhu_arfolyamok/napiarfolyamok/mnbhu_webservice/arfolyam_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 • 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
Megoldás OE-NIK HP
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
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
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
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 OE-NIK HP
Megoldás OE-NIK HP
Irodalomjegyzék (alapismeretek) • Wrox Author Team, Joseph Bustos, Karli WatsonBeginning .NET Web services using C# • John Sharp Visual C# 2005 lépésről lépésre OE-NIK HP
Irodalomjegyzék (magasszintű ismeretek) • Keith Ballinger.NET Web Services: Architecture and Implementation OE-NIK HP