Webszolgáltatások Simon Balázs

Slides:



Advertisements
Hasonló előadás
Tamás Kincső, OSZK, Analitikus Feldolgozó Osztály, osztályvezető A részdokumentumok szolgáltatása az ELDORADO-ban ELDORADO konferencia a partnerkönyvtárakkal.
Advertisements

4. alkalom – Hálózat Kezelés
Windows Communication Foundation (WCF)

Kamarai prezentáció sablon
Zenetár a webszerverünkön, avagy XML használata PHP 5 alatt. Ercsey Balázs (laze) – netpeople.hu.
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
RESTful Web Service tesztelése
HÁLÓZAT SOAP Hagyományos WCF/ASMX webszervizek.
MSN-kompatibilis egyéni emotikonok kezelése XMPP/Jabber-ben Bemutatás Németh Ádám,
Hatékonyságnövelés Office System alapon az E.ON csoportnál
1. Előadás WCF- bemutatás
Erőállóképesség mérése Találjanak teszteket az irodalomban
Szabályzás, folyamatok, tudatosság Fizikai biztonság Perimeter Belső hálózat Operációs rendszer Alkalmazások Adatok SMTP (25) HTTP (80) HTTPS (443)
OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
4. Web Szolgáltatások Dr. Bilicki Vilmos Szegedi Tudományegyetem
Webszolgáltatások PHP-ben
HTML5 alapú fejlesztő és futtató környezet megvalósítása
Iratkezelő rendszer fejlesztése WPF alapokon
RENDSZERINTEGRÁLÁS B_IN012_1
MFG-Pro váll-ir. rendszer bemutatása
SQL Server 2005 Reporting Services a gyakorlatban
.NET web szolgáltatások
1.NET web szolgáltatások WSE 2.0 BPEL Beadandó feladat A félév áttekintése Bilicki Vilmos
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 11. Szolgáltatás Integráció Dr. Bilicki Vilmos Szegedi Tudományegyetem.
Ember László XUBUNTU Linux (ami majdnem UBUNTU) Ötödik nekifutás 192 MB RAM és 3 GB HDD erőforrásokkal.
Osztott alkalmazások kezelése. VIR elosztott architektúra indítékai: - meglévő komponensek integrációja - WEB / Internet elterjedése (nemzetköziség) -
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
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
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
Egy ISA szerver naplója Sárosi György Terméktámogatási Tanácsadó Microsoft Magyarország.
Dokumentumkezelés GTM szeminárium sorozat Kontor 2004 ügyviteli keretrendszer Előadók: Szalontai Zoltán (T-Systems) Albert István (MSDN Kompetencia Központ)
Webszolgáltatások (WS), Szolgáltatás orientált architektúrák (SOA)
Hálószolgáltatások (Web Services)
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:
Webes Információs Rendszerek fejlesztése
Programrendszerek Fejlesztése 14/11 1. Az előző előadás tartalma: 2  Alkalmazásszerverek, alkalmazásszerverek felépítése  Java EE alkalmazások és modulok.
szakmérnök hallgatók számára
ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető.
LOGO Webszolgáltatások Készítette: Kovács Zoltán IV. PTM.
A barátságos MySQL Papp Szabolcs INFO ÉRA november 18.
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 Web: Magasszintű Programozási Nyelvek I. Eszterházy.
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 Web: Magasszintű Programozási Nyelvek I. Eszterházy.
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
HTML5 alapú fejlesztő és futtató környezet megvalósítása
Java web programozás 11..
Enterpise JavaBeans Simon Balázs
Webszolgáltatás szabványok Simon Balázs
Illés Zoltán ELTE Informatikai Kar
> aspnet_regiis -i 8 9 TIPP: Az „Alap” telepítés gyors, nem kérdez, de később korlátozhat.
Live Communication Server Integrált kommunikációs infrastruktúra Mobil támogatás Munkaterület Instant üzenetküldés VOIP Alkalmazások, munkafolyamatok.
A termelés költségei.
Web-szolgáltatások Dr. Nehéz Károly egyetemi adjunktus Miskolci Egyetem Alkalmazott Informatikai Tanszék.
E-közigazgatási keretrendszer és a SOA a közigazgatás-fejlesztés támogatásában Dr. Risztics Péter Károly igazgató Dr. Kondorosi Károly tudományos igazgató-helyettes.
Haladó Programozás A webszolgáltatás fogalma Szabványok és protokollok
Alkalmazott Informatikai Tanszék
Webszervizek (JAX-WS, és JAX-RS) bemutatása
Webtechnológiák információs redszerekben
Hálószolgáltatások (Web Services)
Webtechnológiák információs redszerekben
Haladó Programozás Windows Communication Foundation
SOAP és webservice.
Hálózatkezelés Java-ban
JBoss Wildfly Kalla Mór
Előadás másolata:

Webszolgáltatások Simon Balázs Robotzsaru oktatás Webszolgáltatások Simon Balázs

Tartalom Integrációs feladat Service Oriented Architecture Web-service SOAP WSDL Webszolgáltatás API-k © BME IIT, Simon Balázs

Integrációs feladat, Service Oriented Architecture

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

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

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 © BME IIT, Simon Balázs

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, Webszolgáltatások © BME IIT, Simon Balázs

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 felkínálás, felderítés, interakció © BME IIT, Simon Balázs

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 © BME IIT, Simon Balázs

Példák: vállalat szolgáltatások: folyamatok: ü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 © BME IIT, Simon Balázs

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

Példák: közigazgatás szolgáltatások: folyamatok: 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 © BME IIT, Simon Balázs

Közigazgatási integráció APEH Linux, Oracle Ügyfélkapu Linux, JBoss OEP Windows, .NET ? MÁK Solaris, Sun © BME IIT, Simon Balázs

Webszolgáltatás

Webszolgá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 © BME IIT, Simon Balázs

szolgáltatás- katalógus Webszolgáltatás UDDI szolgáltatás- katalógus lekérdezés publikálás WSDL felhasználó szolgál-tatás kérés WSDL SOAP WSDL = Web-Services Description Language SOAP = Simple Object Access Protocol UDDI = Universal Description, Discovery and Integration © BME IIT, Simon Balázs

Webszolgáltatás Definíció: Üzenetformátum: Interfészleíró: 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 © BME IIT, Simon Balázs

Miért? Korábban: CORBA, DCOM DCOM: csak Windows CORBA: nem XML alapúak 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 © BME IIT, Simon Balázs

SOAP (Simple Object Access Protocol)

SOAP történet Eredetileg: Ma: 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ő © BME IIT, Simon Balázs

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) © BME IIT, Simon Balázs

SOAP envelope Envelope Header? Body <?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? Saját fejléc* Body Saját tartalom? vagy Fault? © BME IIT, Simon Balázs

SOAP 1.1 SOAP üzenet névtér: WSDL névtér: HTTP fejlécek: 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ő © BME IIT, Simon Balázs

SOAP 1.2 SOAP üzenet névtér: WSDL 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 © BME IIT, Simon Balázs

WSDL (Web-Services Description Language)

WSDL Web Services Description Language Leíró Webszolgáltatásokhoz interfész meta-adatok szolgáltatások címei W3C gondozásában Használt verziók: 1.1 és 2.0 © BME IIT, Simon Balázs

WSDL 1.1 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 konkrét helye definitions import* types? schema* message* abstract part* portType* operation* input? output? fault* binding* operation* input? output? fault* concrete service* port* © BME IIT, Simon Balázs

WSDL 1.1: típusok XSD-ben Jelmagyarázat: <?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”) © BME IIT, Simon Balázs

WSDL 1.1: absztrakt rész definitions import* types? schema* message* <?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> <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> definitions import* types? schema* message* part* portType* operation* © BME IIT, Simon Balázs input? output? fault*

WSDL 1.1: konkrét rész definitions import* binding* operation* input? <?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> <wsdl:service name="[ncname]">* <wsdl:port name="[ncname]" binding="[qname]">...</wsdl:port>* </wsdl:service> </wsdl:definitions> definitions import* binding* operation* input? output? fault* service* port* © BME IIT, Simon Balázs

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 - © BME IIT, Simon Balázs

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: © BME IIT, Simon Balázs

WSDL 1.1 összefoglaló © BME IIT, Simon Balázs

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) © BME IIT, Simon Balázs

WSDL 2.0 összefoglaló © BME IIT, Simon Balázs

Webszolgáltatás API-k

JAX-WS Java API for XML-based Web-Services Célja: Webszolgá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/ © BME IIT, Simon Balázs

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; } © BME IIT, Simon Balázs

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; © BME IIT, Simon Balázs

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(); © BME IIT, Simon Balázs

WCF Windows Communication Foundation (.NET 3.0) Célja: Webszolgáltatások egyszerű implementálása WSDL és .NET osztályok közti leképzés .NET attribútumokkal © BME IIT, Simon Balázs

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); } © BME IIT, Simon Balázs

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; © BME IIT, Simon Balázs

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(); © BME IIT, Simon Balázs