190 likes | 262 Views
Haladó Programozás. Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése. Haladó Programozás. Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése. Windows Communication Foundation.
E N D
Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése OE-NIK HP
Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése 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 • DCOM, .NET remoting, XML-webszolgáltatások stb. Jellemzői • Erősen típusos és típus nélküli üzenetek • Így a .NET egyedi típusai könnyen megoszthatók • Többféle kötés • HTTP, TCP, MSMQ, named pipe-ok • Legújabb webszolgáltatások specifikációjának támogatása • Teljesen integrált biztonsági modell • Munkamenetszerű állapotkezelési módszerek és egyirányú, állapot nélküli üzenetek támogatása 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 • WCF szolgáltatás hoszt • Ez hosztolja a szolgáltatást • Bármilyen .NET végrehajtható állomány lehet • 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-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 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ásokhozNetTcpBinding 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 A szolgáltatás, a hoszt és az ügyfél elkészítése OE-NIK HP
A szolgá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, hogywebszolgálatás MEX végpont engedélyezése Viselkedésdefiníció aMEX-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 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 • WCF Service Library -> EightBallDLL • Szerződés -> IEightBallService • Funkcionalitás -> EightBallService • A hoszt lekészítése • ConsoleApplication -> EightBallHost • Szolgáltatási ABC -> App.Config fájl • Ügyfél elkészítése • Windows Form/ConsoleApplication -> EigthBallConsumer OE-NIK HP
Gyakorló feladat • 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 OE-NIK HP
Irodalomjegyzék • Andrew Troelsen: A C# 2008 és a .NET 3.5 - 2. kötet 2009 SZAK Kiadó OE-NIK HP