190 likes | 267 Views
Learn about developing services, hosts, and clients in WCF. Explore features like message types, multiple bindings, security, and state management methods. Discover how to create WCF applications with step-by-step guides.
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