Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Robotzsaru oktatás Webszolgáltatások Simon Balázs."— Előadás másolata:

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

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

3 Integrációs feladat, Service Oriented Architecture

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

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

6 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 6

7 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 7

8 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 8

9 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 Alkalmazás Szolgáltatás Külvilág © BME IIT, Simon Balázs 9

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

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

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

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

14 Webszolgáltatás

15 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 15

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

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

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

19 SOAP (Simple Object Access Protocol)

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

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

22 SOAP envelope Envelope Header? Body Saját fejléc* Saját tartalom? vagy Fault? © BME IIT, Simon Balázs

23 SOAP 1.1 SOAP üzenet névtér:  WSDL névtér:  HTTP fejlécek:  POST [Lokális URL] HTTP/1.1 Content-Type: text/xml; charset="utf-8” SOAPAction: [Action]  a SOAPAction kötelező 23 © BME IIT, Simon Balázs

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

25 WSDL (Web-Services Description Language)

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

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

28 WSDL 1.1: típusok XSD-ben 28 * 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

29 WSDL 1.1: absztrakt rész * ? * * * ? * definitions types? schema* message* part* portType* operation* input? output? fault* import* © BME IIT, Simon Balázs 29

30 *... ?... * *... * WSDL 1.1: konkrét rész 30 definitions binding* operation* input? output? fault* service* port* import* © BME IIT, Simon Balázs

31 WSDL 1.1 MEP MEP = Message Exchange Pattern Az input és output operációk meglététől függően 31 van outputnincs output van inputrequest-reply one-way (aszinkron) nincs inputsolicit-response- © BME IIT, Simon Balázs

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

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

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

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

36 Webszolgáltatás API-k

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

38 JAX-WS példa: = "ICalculator", targetNamespace = "http://ik.bme.hu/WsApi") public interface ICalculator = "Divide”) public double = "left") double = "right") double right) throws MathFaultFaultMessage; } © BME IIT, Simon Balázs 38

39 JAX-WS példa: implementáció 39 © BME IIT, Simon = "ICalculator") public class Calculator implements ICalculator 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; }

40 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: 40 © BME IIT, Simon Balázs CalculatorService service = new CalculatorService(); Calculator calculator = service.getCalculatorPort(); try { double result = calculator.divide(5, 2); } catch (MathFaultFaultMessage ex) { ex.printStackTrace(); } finally { ((Closeable)calculator).close(); }

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

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

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

44 WCF példa: szolgáltatás meghívása Az SvcUtil által generált CalculatorClient proxy osztály segítségével Példa: 44 © BME IIT, Simon Balázs CalculatorClient calculator = new CalculatorClient(); try { double result = calculator.Divide(5, 2); } catch (FaultException ex) { Console.WriteLine(ex); } finally { calculator.Close(); }


Letölteni ppt "Robotzsaru oktatás Webszolgáltatások Simon Balázs."

Hasonló előadás


Google Hirdetések