Szolgáltatásorientált rendszerintegráció. SOA-alapú rendszerintegráció. Web-szolgáltatások: SOAP, WSDL



Hasonló dokumentumok
Webszolgáltatások (WS)

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

Debreceni Egyetem Informatikai Kar. Szolgáltatás-orientált programozás az Oracle-ben

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

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

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

WebStore. JAX-WS SOAP WebServices, Stateful Session Bean. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 9

Szolgáltatásorientált rendszerintegráció. SOA-alapú rendszerintegráció. Enterprise Service Bus (ESB) Ercsényi András, BME IIT, 2011.

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

Java Business Integration szolgáltatásalapú architektúra JavaEE környezetben. Simon Géza Zsemlye Tamás

OKTATÁSI CSOMAG (SOA)

SOAP komponensek Delphiben

Bevezetés az SAP világába. 5. Kommunikációs és integrációs technológiák

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Szolgáltatás technológiák (WS, WS-*) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

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

pilot példa SOA alkalmazásra április 29.

Osztott rendszerek (Distributed. systems) Bevezetés. Tartalom. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

Osztott rendszerek (Distributed

Web Services. (webszolgáltatások): egy osztott alkalmazásfejlesztési plattform

Osztott rendszerek. Krizsán Zoltán 1 Ficsór Lajos 1. Webalkalmazások fejlesztése tananyag. Miskolci Egyetem. Bevezetés A múlt - történelem A jelen

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

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

Modell alapú fejlesztés

SOA ALAPÚ INTEGRÁCIÓS LEHETŐSÉGEK AZ E-KÖZIGAZGATÁSBAN

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

Introduction. Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration. Dr. Balázs Simon BME, IIT

Tartalom. Objektumorientált fejlesztés HTTP GET HTTP. HTTP REST REST kritikák JAX-RS WCF és REST Elosztott technológiák

UNIX: folyamatok kommunikációja

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Nagyvállalati SOA infrastruktúra (ESB, szolgáltatástárak)

JNDI - alapok. Java Naming and Directory Interface

XML avagy az univerzális információelérés álma

Adatbázis rendszerek 7. előadás State of the art

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Komponens alapú fejlesztés

Webtechnológiák információs redszerekben. Bevezető 1.

Web service fenyegetések e- közigazgatási. IT biztonsági tanácsadó

Enterprise extended Output Management. exom - Greendoc Systems Kft. 1

(Web)Szolgáltatások (WS, WS-*)

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

Segédanyag: Java alkalmazások gyakorlat

JAVA webes alkalmazások

API tervezése mobil környezetbe. gyakorlat

Irányelv elektronikus rendszerekhez való hozzáférés biztosításához

GeneSyS: Generikus rendszerfelügyeleti middleware

Fejlesztés, működtetés, felügyelet Hatékony infrastruktúra IBM szoftverekkel

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

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

OOP és UML Áttekintés

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

Kommunikáció. 3. előadás

Metamodellezés. Simon Balázs BME IIT, 2011.

Utolsó módosítás:

Komponens alapú programozás Bevezetés

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

1 Újszülöttek kórházi jelentése, orvosi rendszerek oltási jelentése és

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

Osztott Objektumarchitektúrák

Webszolgáltatás alapokon BPEL

Web-szolgáltatás szabványok

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

Webszolgáltatások felhasználása

Webszolgáltatások. A webszolgáltatás fogalma Szolgáltatásközpontú rendszerek Szabványok és protokollok Webszolgáltatás felhasználása XML áttekintés

Szolgáltatás technológiák (WS, WS-*, REST) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Web-technológia PHP-vel

SZOLGÁLTATÁS ORIENTÁLT ARCHITEKTÚRÁK (SOA)

Segédanyag: Java alkalmazások gyakorlat

Programozási nyelvek Java

Webtechnológiák információs redszerekben. Bevezető 1.

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Komponens modellek. 3. Előadás (első fele)

Szolgáltatás Orientált Architektúra és több felhasználós adatbázis használata OKF keretein belül. Beke Dániel

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

Mikor? Milyen alkalmazásnál?

A Java EE 5 plattform

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

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

Bevezető. Servlet alapgondolatok

és az instanceof operátor

Szolgáltatás-orientált technológiák alkalmazási kérdései Absztrakt 1. Bevezetés

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

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

RIA Rich Internet Application

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

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

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

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

Földmérési és Távérzékelési Intézet

Hargitai Zsolt Novell Mo.

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

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

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

ColourSMS Protokol definíció. Version 1.2

Web-fejlesztés NGM_IN002_1

Adatbázisok webalkalmazásokban

Univerzális munkafolyamat szimulátor

OEP Betegéletút lekérdezés háziorvosok és vénytörténet lekérdezés patikák számára. API dokumentáció. verzió: 2.01

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

Átírás:

Szolgáltatásorientált rendszerintegráció SOA-alapú rendszerintegráció Web-szolgáltatások: SOAP, WSDL

Tartalom Integrációs feladat Service Oriented Architecture Web-service SOAP WSDL Web-szolgáltatás API-k DEMO 2

Integrációs feladat, Service Oriented Architecture 3

Feladat: vállalati integráció Vállalatirányítási rendszer SAP Termékek.NET? Ügyfelek JEE SQL Server Web-portál PHP Oracle DB MySQL 4

Feladat: közigazgatási integráció APEH Linux, Oracle Ügyfélkapu Linux, JBoss? OEP Windows,.NET MÁK Solaris, Sun 5

Feladat Alkalmazások közötti kommunikáció Különböző programnyelvek Különböző operációs rendszerek Különböző szoftvergyártók Sokfajta meglévő, működő rendszer Integráció Üzleti folyamatok elektronizálása 6

Követelmények Egyszerű Szabványos Programnyelvektől, operációs rendszertől független Széles körű támogatás Middleware feladatok: megbízható üzenetküldés titkosítás, digitális aláírás tranzakciókezelés Megoldás: SOA, web-szolgáltatások 7

Service Oriented Architecture Architektúrafejlesztési paradigma Alapegység: szolgáltatás Szereplők (szerepek): szolgáltató felhasználó OASIS definíció: paradigma elosztott erőforrások és képességek szervezésére és hasznosítására BME felkínálás, IIT, Simon Balázs felderítés, interakció 8

Szolgáltatás Az architektúra alapegysége Erőforrás vagy képesség publikálása Jól definiált, szabványos interfész Elrejti az implementáció részleteit Lehetőleg minél vékonyabb réteg Fontos a jó tervezés: a kiajánlott funkcionalitás a megfelelő granularitás általánosság újrafelhasználhatóság Külvilág Szolgáltatás Alkalmazás 9

Példák: vállalat szolgáltatások: ügyfél adatainak lekérdezése ügyfélazonosító alapján termék adatainak lekérdezése termékazonosító alapján új ügyfél felvétele termék készletbe vétele termék eladása folyamatok: ügyfél felad egy rendelést 10

Vállalati integráció Vállalatirányítási rendszer SAP Termékek.NET? Ügyfelek JEE SQL Server Web-portál PHP Oracle DB MySQL 11

Példák: közigazgatás szolgáltatások: lakcím megváltoztatása adóbevallás fogadása állampolgár adótartozásának lekérdezése anyasági támogatás igénylése folyamatok: lakcímváltozás bejelentése adóbevallás benyújtása vállalkozás alapítása 12

Közigazgatási integráció APEH Linux, Oracle Ügyfélkapu Linux, JBoss? OEP Windows,.NET MÁK Solaris, Sun 13

Web-szolgáltatás 14

Web-szolgáltatás Konkrét technológia szolgáltatások megvalósításához Szabványos (OASIS, W3C) Programnyelvektől, operációs rendszerektől független XML alapú Szállító protokoll: tipikusan HTTP Elterjedt, széles körben támogatott Számos szabvány middleware feladatokra 15

Web-szolgáltatás UDDI szolgáltatáskatalógus lekérdezés WSDL publikálás felhasználó kérés SOAP szolgáltatás WSDL = Web-Services Description Language SOAP = Simple Object Access Protocol UDDI = Universal Description, Discovery and Integration 16

Web-szolgáltatás Definíció: SOAP üzeneten keresztül meghívható szolgáltatás Üzenetformátum: SOAP = Simple Object Access Protocol Használt verziók: 1.1 és 1.2 Interfészleíró: WSDL = Web-Services Description Language Használt verziók: 1.1 és 2.0 Szolgáltatáskatalógus: UDDI = Universal Description Discovery and Integration Használt verziók: 2.0 és 3.0 17

Miért? Korábban: CORBA, DCOM DCOM: csak Windows CORBA: különböző gyártók implementációi közti együttműködés kérdéses ha sikerülne is, a biztonság és a tranzakciókezelés problémás nem XML alapúak adatformátumok túl alacsony szintűek: byte-ok igazításával is foglalkozni kell tűzfalak, proxy szerverek általában korlátozzák ezeket 18

SOAP (Simple Object Access Protocol) 19

SOAP történet Eredetileg: 1998. Microsoft SOAP = Simple Object Access Protocol Eredeti cél: XML alapú RPC Ma: W3C gondozásában Használt verziók: 1.1 és 1.2 Már csak a SOAP rövidítés maradt meg, mivel a Simple Object Access Protocol félrevezető 20

SOAP Kommunikációs protokoll Alkalmazások között XML-re épül Platformfüggetlen Programnyelvfüggetlen Egyszerű Kiterjeszthető ld. később: WS-* szabványok Független az alatta lévő kommunikációs csatornától, de általában HTTP felett alkalmazzák (így a tűzfalon is átmegy) 21

SOAP envelope <?xml version="1.0" encoding="utf-8"?> <env:envelope xmlns:env="[soap névtér]"> <env:header> <myns:myheader1 xmlns:myns="[mynamespace]"/> <myns:myheader2 xmlns:myns="[mynamespace]" env:mustunderstand="1"/>... </env:header> <env:body>... <env:fault>... </env:fault> </env:body> </env:envelope> Envelope Header? Body Saját fejléc* Saját tartalom? vagy Fault? 22

SOAP 1.1 SOAP üzenet névtér: http://schemas.xmlsoap.org/soap/envelope/ WSDL névtér: http://schemas.xmlsoap.org/wsdl/soap/ HTTP fejlécek: POST [Lokális URL] HTTP/1.1 Content-Type: text/xml; charset="utf-8 SOAPAction: [Action] a SOAPAction kötelező 23

SOAP 1.2 SOAP üzenet névtér: http://www.w3.org/2003/05/soap-envelope WSDL névtér: http://schemas.xmlsoap.org/wsdl/soap12/ A SOAP 1.1-hez képest más a Fault szerkezete HTTP fejlécek: POST [Lokális URL] HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8; action= [Action] az action opcionális a GET is támogatott 24

WSDL (Web-Services Description Language) 25

WSDL Web Services Description Language Leíró web-szolgáltatásokhoz interfész meta-adatok szolgáltatások címei W3C gondozásában Használt verziók: 1.1 és 2.0 26

concrete abstract WSDL 1.1 definitions import* types? message* porttype* schema* part* operation* input? output? binding* fault* operation* input? output? fault* service* port* definitions: gyökér elem import: más WSDL importálása types: a felhasznált típusok XML schema (XSD) message: paraméterlista part: paraméter porttype: interfész operation: művelet input: bemenő paraméterlista output: kimenő paraméterlista fault: kivétel binding: hívási konvenció protokoll, adatformátum, kódolás service: implementáció port: az adott binding alapján hívható szolgáltatás 27 konkrét helye

WSDL 1.1: típusok XSD-ben <?xml version="1.0" encoding="utf-8"?> <xsd:schema targetnamespace="[mynamespace]" xmlns:myns="[mynamespace]" elementformdefault="qualified"> <xsd:import schemalocation="..." namespace="[mynamespace]"/>* <xsd:element name="[ncname]" type="[qname]"/>* <xsd:complextype name="[ncname]"/>* </xsd:schema> Jelmagyarázat: [ncname] = név definíció (pl. Add ) [qname] = név hivatkozás névtérprefixszel együtt (pl. myns:add ) 28

WSDL 1.1: absztrakt rész?xml version="1.0" encoding="utf-8"?> wsdl:definitions name="pilottest" targetnamespace="[mynamespace]" xmlns:myns="[mynamespace]" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/xmlschema"> <wsdl:import location="..." namespace="[mynamespace]"/>* <wsdl:types>? <xsd:schema targetnamespace="[mynamespace]" elementformdefault="qualified">* <xsd:import schemalocation="..." namespace="[mynamespace]"/>* </xsd:schema> </wsdl:types> definitions <wsdl:message name="[ncname]">* <wsdl:part name="[ncname]" element="[qname]"/>* </wsdl:message> <wsdl:porttype name="[ncname]">* <wsdl:operation name="[ncname]">* <wsdl:input message="[qname]"/>? <wsdl:output message="[qname]"/>? <wsdl:fault name="[ncname]" message="[qname]"/>* </wsdl:operation> </wsdl:porttype> /wsdl:definitions> import* types? message* porttype* schema* part* operation* input? output? fault* 29

WSDL 1.1: konkrét rész?xml version="1.0" encoding="utf-8"?> wsdl:definitions name="pilottest" targetnamespace="[mynamespace]" xmlns:myns="[mynamespace]" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"> <wsdl:import location="..." namespace="[mynamespace]"/>* <wsdl:binding name="[ncname]" type="[qname]">* <wsdl:operation name="[ncname]">* <wsdl:input>...</wsdl:input>? <wsdl:output>...</wsdl:output>? <wsdl:fault name="[ncname]">...</wsdl:fault>* </wsdl:operation> </wsdl:binding> definitions import* binding* operation* input? output? fault* service* <wsdl:service name="[ncname]">* <wsdl:port name="[ncname]" binding="[qname]">...</wsdl:port>* </wsdl:service> port* 30 /wsdl:definitions>

WSDL 1.1 MEP MEP = Message Exchange Pattern Az input és output operációk meglététől függően van output nincs output van input request-reply one-way (aszinkron) nincs input solicit-response - 31

Két szolgáltatás interfészének ekvivalenciája Egyeznie kell: a types részben felhasznált XSD típusoknak, elemeknek és ezek XML névterének az Action-nek a binding beállításainak a policy beállításoknak ha az Action nem explicit adott: a WSDL targetnamespace-ének, a porttype, operation, input, output és fault nevének Nem szükséges egyeznie: a message nevének, a part nevének a binding nevének a service nevének, címének ha az Action explicit adott: a WSDL targetnamespace-ének, a porttype, operation, input, output és fault nevének 32

WSDL 1.1 összefoglaló 33

WSDL 2.0 Még nem szabvány, csak ajánlás Nem igazán elterjedt, nem nagyon támogatott Egyszerűbb, mint az 1.1-es verzió Gyökérelem: definitions helyett description Van import és include is Csökkent a redundancia: eltűnt a message rész Készíthetők újrahasznosítható binding-ok Jobban hasonlít a hagyományos programnyelvi interfészekhez: porttype helyett interface Megjelent az öröklődés interfészek között (többszörös öröklődés is támogatott) 34

WSDL 2.0 összefoglaló 35

Web-szolgáltatás API-k 36

JAX-WS Java API for XML-based Web-Services Célja: Web-szolgáltatások egyszerű implementálása WSDL és Java osztályok közti leképzés Annotációkkal Referencia implementáció: Sun: GlassFish ESB https://jax-ws.dev.java.net/ 37

JAX-WS példa: interfész @WebService(name = "ICalculator", targetnamespace = "http://ik.bme.hu/wsapi") public interface ICalculator { @WebMethod(operationName = "Divide ) public double divide( @WebParam(name = "left") double left, @WebParam(name = "right") double right) throws MathFaultFaultMessage; } 38

JAX-WS példa: implementáció @WebService(endpointInterface = "ICalculator") public class Calculator implements ICalculator { @Override public double divide(double left, double right) throws MathFaultFaultMessage { if(right == 0) { MathFault fault = new MathFault(); fault.setreason("division by zero."); throw new MathFaultFaultMessage("Error", fault); } return left / right; } } 39

JAX-WS példa: szolgáltatás meghívása A wsimport által generált CalculatorService proxy osztály segítségével Példa: CalculatorService service = new CalculatorService(); Calculator calculator = service.getcalculatorport(); try { double result = calculator.divide(5, 2); } catch (MathFaultFaultMessage ex) { ex.printstacktrace(); } finally { ((Closeable)calculator).close(); } 40

WCF Windows Communication Foundation (.NET 3.0) Célja: Web-szolgáltatások egyszerű implementálása WSDL és.net osztályok közti leképzés.net attribútumokkal 41

WCF példa: interfész [ServiceContract(Namespace = "http://ik.bme.hu/wsapi")] public interface ICalculator { [OperationContract] [FaultContract(typeof(MathFault), Name = "MathFault")] double Divide(double left, double right); } 42

WCF példa: implementáció public class Calculator : ICalculator { public double Divide(double left, double right) { if (right == 0) { throw new FaultException<MathFault>( new MathFault() { Reason = "Division by zero." }); } return left / right; } } 43

WCF példa: szolgáltatás meghívása Az SvcUtil által generált CalculatorClient proxy osztály segítségével Példa: CalculatorClient calculator = new CalculatorClient(); try { double result = calculator.divide(5, 2); } catch (FaultException<MathFault> ex) { Console.WriteLine(ex); } finally { calculator.close(); } 44