Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Hasonló dokumentumok
Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék

Webes alkalmazások fejlesztése 14. fejezet. Szolgáltatások adatkezelése (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET)

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

.NET Microsoft.Net Framework és programozása II.

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET Core) Cserép Máté

Elosztott rendszerek programozása WCF technológiával

XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

A Java EE 5 plattform

Segédanyag: Java alkalmazások gyakorlat

Webes alkalmazások fejlesztése 10. előadás. Szolgáltatás alapú rendszerek megvalósítása (ASP.NET WebAPI) Cserép Máté

JAVA webes alkalmazások

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Tartalomjegyzék. Bevezetés. 1. A.NET 3.5-keretrendszer 1. A korszerű alkalmazások felépítésének kihívásai... 2

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

Webszolgáltatások kommunikációs overhead-jének becslése

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

OOP #14 (referencia-elv)

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Segédanyag: Java alkalmazások gyakorlat

Komponens alapú fejlesztés

Eseményvezérelt alkalmazások fejlesztése II 5. előadás. Windows Forms alkalmazások párhuzamosítása. Giachetta Roberto

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

JNDI - alapok. Java Naming and Directory Interface

Webszolgáltatások (WS)

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Models are not right or wrong; they are more or less useful.

Szoftvertechnológia 8. előadás. Szoftverrendszerek tervezése Giachetta Roberto

Models are not right or wrong; they are more or less useful.

Utolsó módosítás:

Webes alkalmazások fejlesztése

API tervezése mobil környezetbe. gyakorlat

S04-2 Elosztott alkalmazások készítése

Bánsághi Anna 2015 Bánsághi Anna 1 of 31

Web-fejlesztés NGM_IN002_1

Mobil szolgáltatások és alkalmazások fejlesztése

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

OOP: Java 8.Gy: Abstract osztályok, interfészek

Bevezető. Servlet alapgondolatok

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET) Webfejlesztés MVC architektúrában Fejlesztés ASP.

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Objektumorientált paradigma és programfejlesztés Bevezető

Számítógépes Hálózatok. 5. gyakorlat

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Crawler.NET: Komponensalapú elosztott keretrendszer a web bejárására

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk. Cserép Máté

Szoftvertechnolo gia gyakorlat

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Már megismert fogalmak áttekintése

SOAP komponensek Delphiben

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Osztott alkalmazások fejlesztési technológiái Áttekintés

Vizuális, eseményvezérelt programozás X. V 1.0

Oracle9i Alkalmazás Szerver Üzleti folyamat integráció. Molnár Balázs Vezető értékesítési konzultáns Oracle Hungary

Flex: csak rugalmasan!

Vizuális, eseményvezérelt programozás XI.

4. Öröklődés. Programozás II

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

CORBA bevezetés. Paller Gábor Internet és mobil rendszerek menedzselése

Atlon XML interface fejlesztői dokumentáció. Dokumentum verzió: 3.0

Előszó A Windows alkalmazásfejlesztés rövid története A Windows életútja A Windows 8 paradigmaváltása... 16

C++ programozási nyelv

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció

Osztálytervezés és implementációs ajánlások

Google Web Toolkit. Elek Márton. Drótposta kft.

Osztálytervezés és implementációs ajánlások

Multimédiás adatbázisok

BME MOGI Gépészeti informatika 8.

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

Könyvtári címkéző munkahely

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) Állapotfenntartás. Állapotfenntartás. Állapotfenntartás.

DSD DSD. Egy országos méretű orvosi adatbázissal kapcsolatos informatikai kihívások. Kovács László Pataki Balázs Pataki Máté MTA SZTAKI DSD

Számítógépes munkakörnyezet II. Szoftver

Junior Java Képzés. Tematika

Java és web programozás

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 12. fejezet Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2016. évi jegyzetpályázatának támogatásával készült

Egységes kommunikációs platform A.NET keretrendszer számos technológiát kínál hálózaton kommunikáló, valamint elosztott alkalmazások fejlesztésére A Windows Communication Foundation (WCF) célja egy egységes felület megadása szolgáltatás alapú architektúra megvalósítására ilyen befoglalt technológiák a webszolgáltatások (WS), a távoli eljáráshívás (.NET Remoting), üzenetfolyamok (MSMQ), stb. az alapvető kommunikációs módszere a SOAP, de egyedi, XML alapú adatközlés is definiálható hátránya, hogy a formátum miatt nagy adatmennyiséget generál ELTE IK, Webes alkalmazások fejlesztése 12:2

Egységes kommunikációs platform Előnyei: a szolgáltatások lazán csatoltak, a kliensek kezelhetik függetlenül a szolgáltatásokat könnyen beállítható, egyszerűen kezelhető a webszolgáltatásnál nagyobb megbízhatóság és biztonság kétirányúsítható a kliens-szerver csatorna a WCF szolgáltatásokat biztosíthatja IIS, Windows Activation Service, Windows szolgáltatás, és lehet önhordozó a folyamatok együttműködhetnek nem.net-beli távoli eljáráshívókkal ELTE IK, Webes alkalmazások fejlesztése 12:3

Architektúra alkalmazás szerződéskezelés szolgáltatás adat üzenet hiba kötés viselkedés (hiba, metaadat, példány, párhuzamosság,...) futtatókörnyezet üzenetvizsgálat paraméter szűrés csatorna (HTTP, WS, TCP, MSMQ, ) üzenetkezelés aktiváció és hosztolás kódolás/dekódolás (bináris, szöveg, XML, ) ELTE IK, Webes alkalmazások fejlesztése 12:4

Kapcsolatok felépülése A WCF kapcsolatok alapjai a cím, a kötés és a szerződés (Address/Binding/Contract, ABC) a cím a szolgáltatás elérési útvonala (URL), amely egyedileg azonosítja azt a kötés megadja a kommunikáció módját, azaz a felhasználandó adatközlési csatornát (pl. SOAP over HTTP, SOAP over TCP), a protokollokat (pl. titkosításhoz), valamint a kódolást (pl. tömörítési mód) a szerződés tartalmazza a szolgáltatott tartalmat, azaz mely műveletek, illetve adattípusok érhetőek el a szerződést a keretrendszer a kód alapján automatikusan generálja futási időben ELTE IK, Webes alkalmazások fejlesztése 12:5

Szolgáltatás szerződés A legalapvetőbb szerződés a szolgáltatás szerződés (Service Contract), amely megadja, milyen funkciókat biztosít a szolgáltatás a funkciók leképezhetőek függvényekre, pontosabban publikus metódusokra, amelyeket egy közös típusban helyezünk el a szerződést interfészen keresztül adjuk meg, a szolgáltató osztály ezt az interfészt valósítja meg «interface» ServiceContract + ServiceMethod() :void ServiceRealization + ServiceMethod() :void ELTE IK, Webes alkalmazások fejlesztése 12:6

Szolgáltatás szerződés az interfészt a ServiceContract, a műveleteket az OperationContract attribútumokkal jelöljük meg itt csak a szolgáltatások szintaxisát adjuk meg, ami a szerződéshez szükséges pl.: [ServiceContract] // szolgáltatás szerződés public interface IEmployeeService { [OperationContract] String GetEmployeeName(Int32 id); // szolgáltatás szintaxisa // további szolgáltatások } ELTE IK, Webes alkalmazások fejlesztése 12:7

Szolgáltatás szerződés a megvalósító osztálynál megadjuk a szolgáltatás viselkedési mintáját a ServiceBehavior attribútummal pl.: [ServiceBehavior(Name="EmployeeService" ConcurrencyMode=ConcurrencyMode.Single)] // szolgáltatás viselkedési mintája class EmployeeService : IEmployeeService { // szolgáltató osztály public String GetEmployeeName(Int32 id) { } // szolgáltatás megvalósítása } ELTE IK, Webes alkalmazások fejlesztése 12:8

Szolgáltatás szerződés a szerződés viselkedése több módon konfigurálható, pl.: név (Name) és névtér (Namespace) párhuzamosság szabályozása (ConcurrencyMode, InstanceContextMode) időkorlátok (SendTimeout, SendTimeout, ) ezen felül a műveletek viselkedése külön szabályozható az OperationBehavior attribútummal, pl.: paramétermegsemmisítés (AutoDisposeParameters) objektum létrehozási mód (ReleaseInstanceMode) tranzakció-kezelés módja (TransactionAutoComplete) ELTE IK, Webes alkalmazások fejlesztése 12:9

Szolgáltatások futtatása A szolgáltatás futtatásához fel kell építeni egy szolgáltatót (Service Host), amit bármilyen alkalmazás létesíthet egy ServiceHost objektum segítségével pl.: Uri uri = new Uri("http://localhost/Service"); // szolgáltatás címe ServiceHost host = new ServiceHost(typeof(EmployeeService), uri); // hoszt létrehozása host.addserviceendpoint( typeof(iemployeeservice), new WSHttpBinding(), uri); // szolgáltatás végpontjának megadása ELTE IK, Webes alkalmazások fejlesztése 12:10

Szolgáltatások felhasználása A kliens oldalon egy megfelelő kliens osztály fogadja a kapcsolatot, amely a ClientBase<T> osztály leszármazottja, és emellett megvalósítja a szerződés interfészét a végrehajtást a ClientBase osztály Channel tulajdonságán keresztül érhetjük el (szintén megvalósítja az interfészt) «interface» ServiceHost::ServiceContract + ServiceMethod() :void T ServiceBase «property» + Channel() :T ServiceClient + ServiceMethod() :void «property» + Channel() :ServiceContract T = ServiceHost::ServiceContract ELTE IK, Webes alkalmazások fejlesztése 12:11

Szolgáltatások felhasználása pl.: public partial class HelloWorldClient : ClientBase<IEmployeeService>, IEmployeeService // a szolgáltatás kliens, amely megvalósítja // a szerződést, illetve a ClientBase // osztályt { public String GetEmployeeName(Int32 id) { return client.channel.getemployeename(id); // a Channel tulajdonságon át hívhatunk } } ELTE IK, Webes alkalmazások fejlesztése 12:12

Szolgáltatások megvalósítása ClientBase «interface» IServiceContract ServiceClient «flow» ServiceRealization Binding ServiceHost EndPoint ELTE IK, Webes alkalmazások fejlesztése 12:13

Példa Feladat: Készítsünk egyszerű WCF szolgáltatást, valamint klienst, amely egy visszhangot biztosít, azaz visszaküldi a tartalmat. legyen a szerződés neve IEchoService, amelynek egyetlen művelete a SayEcho, mely szöveget kap paraméterben és szöveget ad vissza vegyünk fel három projektet, egyik tartalmazza a szerződést (ServiceContracts), egyik a szolgáltatót (ServiceProvider), egyik pedig a klienst (ServiceClient) a szolgáltató és a kliens is egyszerű konzolos alkalmazások lesznek ELTE IK, Webes alkalmazások fejlesztése 12:14

Példa Tervezés: «interface» ServiceContracts::IEchoService + SayEcho(String) :String ServiceClient::EchoServiceClient + EchoServiceClient() + EchoServiceClient(String) + EchoServiceClient(EndpointAddress, Binding) + SayEcho(String) :String ServiceProvider::EchoService + SayEcho(String) :String ServiceClient::Program - Main(string[]) :void ServiceProvider:: Program - Main(string[]) :void ELTE IK, Webes alkalmazások fejlesztése 12:15

Példa Megvalósítás (IEchoService.cs): [ServiceContract] // szolgáltatás szerződés public interface IHelloWorldService { [OperationContract] // művelet String SayHello(String name); } ELTE IK, Webes alkalmazások fejlesztése 12:16

Példa Megvalósítás (Program.cs): public class EchoService : IEchoService { // a szerződést megvalósító szolgáltatás public String SayEcho(String name){ return String.Format(, name); } } using (ServiceHost host = new ServiceHost(typeof(EchoService), baseaddress)) { // létrehozzuk a szolgáltatás hosztját ELTE IK, Webes alkalmazások fejlesztése 12:17

Példa Megvalósítás (Program.cs): // kapcsolati protokoll (kötés) létrehozása BasicHttpBinding binding = new BasicHttpBinding(); // végpont felvétele host.addserviceendpoint( typeof(iechoservice), binding, ""); ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); host.description.behaviors.add(smb); host.open(); // hoszt indítása ELTE IK, Webes alkalmazások fejlesztése 12:18

Szolgáltatások automatikus létesítése A szolgáltatás kódban történő megadása sokszor körülményes, de lehetőségünk van a hosztolást automatikusan generálni a szolgáltatást hosztolhatja IIS webszerver (WCF Service Application), vagy lehet önhosztoló (WCF Service Library) mindkét esetben csak a szolgáltatást (a szerződést és megvalósítását) kell megadnunk, illetve egy konfigurációt (web.config, vagy app.config), amely a szolgáltatás beállításait tartalmazza a szolgáltató objektumokat, és azok paraméterezését a keretrendszer a konfiguráció alapján generálja lehetőségünk van Windows Activation Service segítségével futtatni a szolgáltatást, amely további funkciókat nyújt ELTE IK, Webes alkalmazások fejlesztése 12:19

Szolgáltatások automatikus létesítése Amennyiben a szerver szolgáltat metaadatokat, lehetőségünk van a kliensben szükséges osztályok automatikus generálásához (Add Service Reference ) az így létrehozott névtérben megkapjuk a klienskezelőt (ClientBase leszármazott), valamint az adatszerződéseket a hívások szinkron és aszinkron (async) formában is generálódnak a beállítások kliens oldalon is a konfigurációs fájlban tárolódnak (app.config) Ha a kliens nem éri el a szolgáltatást, nem egyezik a szerződés, a kliens objektum a műveletre megfelelő kivételt vált ki ELTE IK, Webes alkalmazások fejlesztése 12:20

Példa Feladat: Készítsünk egyszerű WCF szolgáltatást, valamint klienst, amely egy visszhangot biztosít, azaz visszaküldi a tartalmat. legyen a szerződés neve IEchoService, amelynek egyetlen művelete a SayEcho, mely szöveget kap paraméterben és szöveget ad vissza generáljuk automatikusan a hoszt és kliens osztályokat, konfiguráció alapján, az alapértelmezett konfiguráció megfelelő lesz így már csak két projektre lesz szükségünk, egyik a szolgáltató (WCF Service Application), másik a kliens (konzol alkalmazás) ELTE IK, Webes alkalmazások fejlesztése 12:21

Szolgáltatások automatikus létesítése Pl. (app.config): <system.servicemodel> <bindings> <basichttpbinding> </basichttpbinding> </bindings> <client> <endpoint address=" " binding="basichttpbinding" bindingconfiguration=" " contract="echoservicereference.iechoservice" name="basichttpbinding_iechoservice" /> </client> </system.servicemodel> ELTE IK, Webes alkalmazások fejlesztése 12:22