Haladó Programozás Windows Communication Foundation

Slides:



Advertisements
Hasonló előadás
Windows Communication Foundation (WCF)
Advertisements

RESTful Web Service tesztelése
Készítette: Nagy Márton
Hálózati és Internet ismeretek
IT-DEV-CON – Addig nyújtózkodj, ameddig a felhőd ér! Kőnig Tibor | blogs.msdn.com/tibork-on-ms | twitter.com/tibork.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Electra IP cím módosítása
1. Előadás WCF- bemutatás
Client Access Server. Autodiscovery service Availability service (EWS) Offline Address Book (OAB) service Activesync service Outlook Web Access Public.
OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Webszolgáltatások PHP-ben
Iratkezelő rendszer fejlesztése WPF alapokon
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hibakezelés és Tesztelés a Visual Studio.NET-ben
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Fájlkezelés, IO Kivételkezelés Belső osztályok
.NET web szolgáltatások
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
WEB Technológiák Coldfusion ME Általános Informatikai Tsz. dr. Kovács László.
WSDL alapismeretek A WSDL (Web Services Description Language – Web szolgáltatások leíró nyelv) egy XML-alapú nyelv a Web szolgáltatások leírására és azok.
Hálózatkezelés, java.net Elek Tibor
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Haladó Programozás A webszolgáltatás fogalma
Előadó: Kárpáti Péter Üzleti folyamatvezérlés nagyvállalati környezetben (BizTalk Server 2004, Office InfoPath 2003 és Windows.
Egyszerű webes alkalmazás fejlesztése Készítette: Simon Nándor.
Egyszerű webes alkalmazás fejlesztése
Kivételkezelés.
Bevezetés az ebXML-be Forrás: An Introduction to ebXML ebXML and Web Services Practical Considerations In Implementing Web Services Romin IraniRomin Irani.
SOAP alapismeretek A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül. Forrás:
Exchange Server 2007 Client Access Role
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
V 1.0 ÓE-NIK, Programozás I. A Microsoft Visual Studio 2010 használata.
ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető.
Vezérlők használata és írása Ez az előadó neve beosztása vállalata.
LOGO Webszolgáltatások Készítette: Kovács Zoltán IV. PTM.
Segédlet vizuális programozáshoz Kovács László
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Java programozási nyelv Adatbekérés konzolról
Java web programozás 11..
Webszolgáltatások Simon Balázs
Programozás III KIVÉTEL.
Illés Zoltán ELTE Informatikai Kar
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
Java web programozás 5..
Haladó Programozás Reflexió OE-NIK HP.
DLL használata és készítése Feladat
Electra IP cím módosítása. 2  Internet behívás (IP cím) változás: A bank Internet szolgáltató váltás miatt módosítja az Electra szerver elérhetőségének.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Programozás III JPA.
Haladó Programozás A webszolgáltatás fogalma Szabványok és protokollok
Hálózatos programok készítése
Hálózatkezelés Java-ban
Web programozás és haladó fejlesztési technikák – C#
Web programozás és haladó fejlesztési technikák – C#
Előadás másolata:

Haladó Programozás Windows Communication Foundation WCF SOAP webszolgáltatás, hoszt és ügyfél elkészítése Kivételkezelés (nem tananyag) OE-NIK HP

Haladó Programozás Windows Communication Foundation WCF SOAP webszolgáltatás, hoszt és ügyfél elkészítése Kivételkezelés (nem tananyag) OE-NIK HP

Windows Communication Foundation Elosztott rendszerek készítéséhez kifejlesztett API A .NET 3.0-ban jelent meg A korábbi, egymástól független elosztott technológiákat integrálja Korábban használt, elavultabb: DCOM, .NET remoting Jelenleg használt, javasolt: SOAP, REST, Microsoft Azure Jellemzői Teljesen integrált biztonsági modell (használhatóak a beépített Authentication/Authorization providerek) Munkamenetszerű állapotkezelési módszerek és egyirányú, állapot nélküli üzenetek támogatása A hívó és a hívott oldalról is csak osztályok és azok metódusai látszódnak, a tényleges HTTP kommunikációt a keretrendszer teljesen elrejti OE-NIK HP

A WCF-alkalmazás részei Kliens alkalmazás WCF-hoszt Proxy WCF-szolgáltatás Konfigurációs állomány Konfigurációs állomány Érdemes az összeköttetéssel kapcsolatos információkat *.config fájlban tárolni, hiszen ebben az esetben a kapcsolat megváltoztatása csak a fájl átírását jelenti. Ha IIS-t használunk a szolgáltatás hosztolására, nem kell egyedi hosztot készíteni. OE-NIK HP

A WCF-alkalmazás részei WCF szolgáltatás Általában egy DLL, amely a funkcionalitást képviselő osztályokat és interfészeket tartalmaz Attribútumokkal jelöljük meg azokat az osztályokat/interfészeket, amik leírják a szolgáltatást; illetve azokat a metódusokat, amik távolról meghívhatóak WCF szolgáltatás hoszt Ez hosztolja (futtatja) a szolgáltatást SOAP esetén bármilyen .NET végrehajtható állomány lehet (konzol, WPF) REST esetén tipikusan egy IIS-ben futó webes alkalmazás (ez SOAP-nál is lehetséges) WCF-ügyfél Hozzáfér és használja a szolgáltatás funkcionalitását egy közbeépülő proxyn keresztül Bármilyen .NET alkalmazás lehet OE-NIK HP

A WCF ABC-je A hoszt és a kliens kommunikációjához az alábbiak megadása szükséges: Address (cím): a szolgáltatás elérésének címe Séma://<gépnév>[:port]/útvonal alakban pl. http://localhost:8080/MyService Binding (kötés): hálózati protokoll, kódolási mechanizmus, szállítási réteg megadása Pl. WSHttpBinding webszolgáltatásokhoz NetTcpBinding több gépen futó .NET-alkalmazások között Contract (szerződés): a szolgáltatás mások által elérhető metódusainak leírása Szolgáltatásszerződés: olyan .NET interfész, amely WCF-szerződést jelképez OE-NIK HP

Haladó Programozás Windows Communication Foundation WCF SOAP webszolgáltatás, hoszt és ügyfél elkészítése Kivételkezelés (nem tananyag) OE-NIK HP

WCF SOAP webszolgáltatás elkészítése Válasszuk a WCF Library projektet Így megkapjuk a szolgáltatás vázát ServiceContract Interfész, amely a szolgáltatás metódusait tartalmazza Minden kipublikálandó metódust a OperationContract attribútummal kell ellátni Érdemes az egyediség kedvéért névteret megadni (tipikusan a készítő webcíme) Pl. [ServiceContract(Namespace="http://nik.uni-obuda.hu/hp")] DataContract Az átadni kívánt adattípus Publikus tagjait DataMember attribútummal kell ellátni Szolgáltatás osztály Ez tartalmazza a szolgáltatás funkcionalitását Megvalósítja a ServiceContractnál megadott interfészt OE-NIK HP

A szolgáltatás tesztelése A Visual Studio egy WCF Test Client-et hoz létre, amellyel kipróbálhatjuk a szolgáltatás metódusait Ehhez szüksége van az App.Config fájlra, amely szintén nem szokványos egy DLL-ben A metódusra duplán kattintva beírhatjuk a megfelelő paramétereket, majd az Invoke gombbal a metódust futtathatjuk OE-NIK HP

App.config fájl Tartalmazza a kommunikációhoz szükséges információkat Cím, kötés, szerződés (ABC) MEX: Metadata Exchange (metaadatcsere) WCF szolgáltatási viselkedés, amellyel beállíthatjuk, hogy a futtatókörnyezet hogyan kezelje a szolgáltatást. Az ügyfél proxy osztályának generálásához szükséges megadni. Általában automatikusan frissül, de bizonyos esetekben kézzel kell beálítani Szerkesztés varázslóval App.config fájlon jobb katt: Edit WCF configuration Services: a szolgáltató osztály neve Host: a szolgáltatás IP címe Endpoints: ABC és MEX adatok Valójában egy XML fájl OE-NIK HP

App.config fájl ABC a cím a baseAddress-ben. A kötésből látszik, hogy webszolgálatás MEX végpont engedélyezése Viselkedésdefiníció a MEX-nek. OE-NIK HP

A hoszt elkészítése Szükséges hozzá a System.ServiceModel dll Referenciaként hozzá kell adni Az App.Config fájlra itt lesz szükség, másoljuk át, a dll-ből töröljük A hoszt példányosítása a szolgáltatás típusának megadásával ServiceHost host = new ServiceHost(typeof(EightBallService)) A szolgáltatás megnyitjuk, majd a végén bezárjuk using: definiálja az objektum hatókörét, ezen kívül az objektum felszabadul OE-NIK HP

Ügyfél elkészítése A megoldás menete megegyezik azzal, mint amikor egy webszolgáltatásra iratkozunk fel A hosztnak futnia kell a proxy osztály generálása alatt Lehetséges alternatíva: több startup projekt beállítása a solution-höz OE-NIK HP

Feladat Készítsünk egy jósló szolgáltatást (The Magic Eight Ball), a szolgáltatást hosztoljuk és vegyük igénybe A kérdező neve és születési dátuma alapján kiválaszt egyet az előre megadott válaszok közül A szolgáltatás egyetlen metódust ad Ennek egyetlen paramétere a személy adatait tartalmazó objektum A hoszt legyen konzolalkalmazás A metódus meghívása történhessen aszinkron módon OE-NIK HP

Megoldás A szolgáltatás elkészítése A hoszt lekészítése WCF Service Library -> EightBallDLL Szerződés -> IEightBallService Funkcionalitás -> EightBallService A hoszt lekészítése Console Application -> EightBallHost Szolgáltatási ABC -> App.Config fájl Ügyfél elkészítése Windows Form/Console Application -> EigthBallConsumer OE-NIK HP

Gyakorló feladatok Készítsünk egy szolgáltatást, amellyel éttermekhez tartozó pontszámokat kérhetünk le, és pontozhatjuk az éttermeket. A szolgáltatást hosztoljuk és vegyük igénybe. A szolgáltatás adja meg, hogy milyen éttermekről tartalmaz adatot Egy étterem megadására adja meg a hozzá tartozó értéket Készítsünk egy szolgáltatást, amellyel naplóbejegyzéseket lehet központi helyen tárolni, illetve lekérdezni Egy bejegyzés áll egy programnévből, időpontból, valamint szövegből A bejegyzések XML file-ban tárolódjanak A Read(string programname) metódus ezt az XML-t dolgozza fel OE-NIK HP

Haladó Programozás Windows Communication Foundation WCF SOAP webszolgáltatás, hoszt és ügyfél elkészítése Kivételkezelés (nem tananyag) OE-NIK HP

Kivételkezelés WCF-ben Ha nem kezeljük a hibákat, akkor azok a szerverről a kliensre kerülnek. A kliens futása leáll a következő hibaüzenettel: CommunicationException - the server did not provide a meaningful reply; this might have been caused due to a contract mismatch, a premature session shutdown or an internal server error. Egy ilyen után a kommunikációs csatorna nem használható tovább. A kommunikációs csatorna fenntartásához a SOAP-nak megfelelő kivételkezelést kell alkalmazni. Ennek lehetőségei: returnUnknownExceptionsAsFaults / [ServiceBehavior(IncludeExceptionDetailInFaults=true)]: Minden kivétel becsomagolódik és mint Soap Fault átkerül a kliensre. Érzékeny adatokat is átküld, így csak debugolásnál ajánlott használni IErrorHandler Minden kivételt elkapunk a szerveren, naplózzuk és esetleg továbbdobjuk Fault Exception-ként FaultException (FaultContract szerződés az eddigi ABC mellett) OE-NIK HP

SOAP Fault Bármilyen objektum becsomagolható ezzel Soap Faulttá A SOAP-ban definiált hibával kapcsolatos mezők: faultcode: kötelező, karakterlánc általában a hibakódok egyikével kezdődik: Server: a hiba a szerverben volt, az üzenet újbóli elküldése sikerre vezethet Client: a hiba az üzenet tartalmában vagy formátumában van, nem érdemes újra próbálkozni faultstring: olvasható formában írja le a hiba okát faultactor: tájékoztat, hogy hol következett be a hiba az üzenet útja során A FaultException a WCF-ben definiált típus a Soap Fault létrehozására Bármilyen objektum becsomagolható ezzel Soap Faulttá new FaultException<MyFaultException>(myfe,faultReason,faultCode); myfe: becsomagolandó objektum faultReason: további információ küldése a kivételről faultCode: megfelel a SOAP feultcode mezőjének OE-NIK HP

Kivételkezelési információk a szerződésben A WCF szerződésnek tartalmaznia kell a kivételkezelésre vonatkozó információkat [OperationContract] [FaultContract(typeof(SomeCustomFaultException))] double GetBMI(double weight, double height); Ha a szerződés nem tartalmazza a FaultContract információt, akkor a kliens mindent UnknowFaultException kivételként kap el A FaultContract információ megjelenik a szolgáltatás wsdl-jében Saját objektumot érdemes átdobni, hogy a megfelelő adatokat adjuk át A átdobandó objektum osztályát a szerződésben definiáljuk [DataContract] public class SomeCustomFaultException { [DataMember] public string Message{get;set;} } OE-NIK HP

Kivétel dobása és elkapása A saját objektum létrehozása utána A FaultException generikus osztályból hozunk létre egy példányt Érdemes megadni a faultreasont és a faultcode-ot is SomeCustomFaultException error = new SomeCustomFaultException(); error.Message = "Zero value passed for height“; throw new FaultException<SomeCustomFaultException>( error, new FaultReason(ex.StackTrace), new FaultCode("Client.DivideByZero")); A kivétel elkapása a szokásos módon történik catch (System.ServiceModel.FaultException< ServiceReference.SomeCustomFaultException> fex) OE-NIK HP

OE-NIK HP

OE-NIK HP