You are on page 1of 11

2010.05.12.

Tartalom

Objektum-orientlt tervezs
Web-szolgltatsok
Simon Balzs

Integrcis feladat Service Oriented Architecture Web-service SOAP WSDL Web-szolgltats API-k DEMO

BME IIT, Simon Balzs

Feladat: vllalati integrci


Vllalatirnytsi rendszer SAP Termkek .NET gyfelek JEE

Integrcis feladat, Service Oriented Architecture

SQL Server

Web-portl PHP

Oracle DB

MySQL
3 Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs BME IIT, Simon Balzs 4

Feladat: kzigazgatsi integrci


APEH Linux, Oracle

Feladat
Alkalmazsok kztti kommunikci Klnbz programnyelvek Klnbz opercis rendszerek Klnbz szoftvergyrtk Sokfajta meglv, mkd rendszer Integrci zleti folyamatok elektronizlsa
5

gyflkapu Linux, JBoss

OEP Windows, .NET

MK Solaris, Sun

BME IIT, Simon Balzs

2010.05.12.

Kvetelmnyek
Egyszer Szabvnyos Programnyelvektl, opercis rendszertl fggetlen Szles kr tmogats Middleware feladatok:
megbzhat zenetklds titkosts, digitlis alrs tranzakcikezels

Service Oriented Architecture


Architektrafejlesztsi paradigma Alapegysg: szolgltats Szereplk (szerepek):
szolgltat felhasznl

OASIS definci:
paradigma elosztott erforrsok s kpessgek szervezsre s hasznostsra felknls, felderts, interakci

Megolds: SOA, web-szolgltatsok

Szolgltats
Az architektra alapegysge Erforrs vagy kpessg publiklsa Jl definilt, szabvnyos interfsz Elrejti az implementci rszleteit Lehetleg minl vkonyabb rteg Fontos a j tervezs: Klvilg
a kiajnlott funkcionalits a megfelel granularits ltalnossg jrafelhasznlhatsg
Szolgltats Alkalmazs

Pldk: vllalat
szolgltatsok:
gyfl adatainak lekrdezse gyflazonost alapjn termk adatainak lekrdezse termkazonost alapjn j gyfl felvtele termk kszletbe vtele termk eladsa

folyamatok:
gyfl felad egy rendelst
BME IIT, Simon Balzs 10

Vllalati integrci
Vllalatirnytsi rendszer SAP Termkek .NET gyfelek JEE

Pldk: kzigazgats
szolgltatsok:
lakcm megvltoztatsa adbevalls fogadsa llampolgr adtartozsnak lekrdezse anyasgi tmogats ignylse

SQL Server

Web-portl PHP

Oracle DB

folyamatok:
lakcmvltozs bejelentse adbevalls benyjtsa vllalkozs alaptsa
11 BME IIT, Simon Balzs 12

MySQL
BME IIT, Simon Balzs

2010.05.12.

Kzigazgatsi integrci
APEH Linux, Oracle

gyflkapu Linux, JBoss

OEP Windows, .NET

Web-szolgltats

MK Solaris, Sun

BME IIT, Simon Balzs

13

14

Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs

Web-szolgltats
Konkrt technolgia szolgltatsok megvalstshoz Szabvnyos (OASIS, W3C) Programnyelvektl, opercis rendszerektl fggetlen XML alap Szllt protokoll: tipikusan HTTP Elterjedt, szles krben tmogatott Szmos szabvny middleware feladatokra

Web-szolgltats
UDDI szolgltatskatalgus

lekrdezs WSDL

publikls

felhasznl

krs
SOAP szolgltats

WSDL = Web-Services Description Language SOAP = Simple Object Access Protocol UDDI = Universal Description, Discovery and Integration

Web-szolgltats
Definci:
SOAP zeneten keresztl meghvhat szolgltats

Mirt?
Korbban: CORBA, DCOM DCOM: csak Windows CORBA:
klnbz gyrtk implementcii kzti egyttmkds krdses ha sikerlne is, a biztonsg s a tranzakcikezels problms

zenetformtum:
SOAP = Simple Object Access Protocol Hasznlt verzik: 1.1 s 1.2

Interfszler:
WSDL = Web-Services Description Language Hasznlt verzik: 1.1 s 2.0

Szolgltatskatalgus:
UDDI = Universal Description Discovery and Integration Hasznlt verzik: 2.0 s 3.0
17

nem XML alapak adatformtumok tl alacsony szintek: byte-ok igaztsval is foglalkozni kell tzfalak, proxy szerverek ltalban korltozzk ezeket
18

2010.05.12.

SOAP trtnet
Eredetileg:
1998. Microsoft SOAP = Simple Object Access Protocol Eredeti cl: XML alap RPC

SOAP (Simple Object Access Protocol)

Ma:
W3C gondozsban Hasznlt verzik: 1.1 s 1.2 Mr csak a SOAP rvidts maradt meg, mivel a Simple Object Access Protocol flrevezet

19

Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs

20

SOAP
Kommunikcis protokoll Alkalmazsok kztt XML-re pl Platformfggetlen Programnyelvfggetlen Egyszer Kiterjeszthet
ld. ksbb: WS-* szabvnyok

SOAP envelope
<?xml version="1.0" encoding="utf-8"?> <env:Envelope xmlns:env="[SOAP nvtr]"> <env:Header> <myns:MyHeader1 xmlns:myns="[MyNamespace]"/> <myns:MyHeader2 xmlns:myns="[MyNamespace]" env:mustUnderstand="1"/> ... Envelope </env:Header> Header? <env:Body> ... Sajt fejlc* <env:Fault> ... Body </env:Fault> </env:Body> Sajt tartalom? </env:Envelope> vagy Fault?
21 22

Fggetlen az alatta lv kommunikcis csatorntl, de ltalban HTTP felett alkalmazzk (gy a tzfalon is tmegy)

SOAP 1.1
SOAP zenet nvtr:
http://schemas.xmlsoap.org/soap/envelope/

SOAP 1.2
SOAP zenet nvtr:
http://www.w3.org/2003/05/soap-envelope

WSDL nvtr:
http://schemas.xmlsoap.org/wsdl/soap12/

WSDL nvtr:
http://schemas.xmlsoap.org/wsdl/soap/

A SOAP 1.1-hez kpest ms a Fault szerkezete HTTP fejlcek:


POST [Loklis URL] HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8; action=[Action] az action opcionlis a GET is tmogatott

HTTP fejlcek:
POST [Loklis URL] HTTP/1.1 Content-Type: text/xml; charset="utf-8 SOAPAction: [Action] a SOAPAction ktelez
23

24

2010.05.12.

WSDL
Web Services Description Language Ler web-szolgltatsokhoz

WSDL (Web-Services Description Language)

interfsz meta-adatok szolgltatsok cmei

W3C gondozsban Hasznlt verzik: 1.1 s 2.0

25

Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs

26

WSDL 1.1
definitions import* types? schema*

definitions: gykr elem import: ms WSDL importlsa types: a felhasznlt tpusok


XML schema (XSD)

WSDL 1.1: tpusok 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>

abstract

message* part* portType* operation* input? output? binding* fault*

message: paramterlista
part: paramter

portType: interfsz
operation: mvelet
input: bemen paramterlista output: kimen paramterlista fault: kivtel

concrete

operation* input? output? service* port*

binding: hvsi konvenci


fault*

protokoll, adatformtum, kdols

service: implementci
port: az adott binding alapjn hvhat szolgltats 27 konkrt helye

Jelmagyarzat: [ncname] = nv definci (pl. Add) [qname] = nv hivatkozs nvtrprefixszel egytt (pl. myns:Add)28

WSDL 1.1: absztrakt rsz


<?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> definitions </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>

<?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 1.1: konkrt rsz

import* types? schema* message* part* portType* operation* input? output? fault*

<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? service* port*


30

fault*

<wsdl:service name="[ncname]">* <wsdl:port name="[ncname]" binding="[qname]">...</wsdl:port>* </wsdl:service> </wsdl:definitions>

2010.05.12.

WSDL 1.1 MEP


MEP = Message Exchange Pattern Az input s output opercik meglttl fggen
van output van input nincs input request-reply solicit-response nincs output one-way (aszinkron) 31

Kt szolgltats interfsznek ekvivalencija


Egyeznie kell:
a types rszben felhasznlt XSD tpusoknak, elemeknek s ezek XML nvternek az Action-nek a binding belltsainak a policy belltsoknak ha az Action nem explicit adott:
a WSDL targetNamespace-nek, a portType, operation, input, output s fault nevnek

Nem szksges egyeznie:


a message nevnek, a part nevnek a binding nevnek a service nevnek, cmnek ha az Action explicit adott:
a WSDL targetNamespace-nek, a portType, operation, input, output s fault nevnek
32

WSDL 1.1 sszefoglal

WSDL 2.0
Mg nem szabvny, csak ajnls Nem igazn elterjedt, nem nagyon tmogatott Egyszerbb, mint az 1.1-es verzi Gykrelem: definitions helyett description Van import s include is Cskkent a redundancia: eltnt a message rsz Kszthetk jrahasznosthat binding-ok Jobban hasonlt a hagyomnyos programnyelvi interfszekhez: portType helyett interface Megjelent az rklds interfszek kztt (tbbszrs rklds is tmogatott)
33 34

WSDL 2.0 sszefoglal

Web-szolgltats API-k

35

36

Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs

2010.05.12.

JAX-WS
Java API for XML-based Web-Services Clja:
Web-szolgltatsok egyszer implementlsa WSDL s Java osztlyok kzti lekpzs Annotcikkal

JAX-WS plda: interfsz


@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; }

Referencia implementci:
Sun: GlassFish ESB https://jax-ws.dev.java.net/
37

BME IIT, Simon Balzs

JAX-WS plda: implementci


@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; } }

JAX-WS plda: szolgltats meghvsa


A wsimport ltal generlt CalculatorService proxy osztly segtsgvel Plda:
CalculatorService service = new CalculatorService(); Calculator calculator = service.getCalculatorPort(); try { double result = calculator.divide(5, 2); } catch (MathFaultFaultMessage ex) { ex.printStackTrace(); } finally { ((Closeable)calculator).close(); }
39 BME IIT, Simon Balzs 40

BME IIT, Simon Balzs

WCF
Windows Communication Foundation (.NET 3.0) Clja:
Web-szolgltatsok egyszer implementlsa WSDL s .NET osztlyok kzti lekpzs .NET attribtumokkal

WCF plda: interfsz

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

41

BME IIT, Simon Balzs

42

2010.05.12.

WCF plda: implementci


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

WCF plda: szolgltats meghvsa


Az SvcUtil ltal generlt CalculatorClient proxy osztly segtsgvel Plda:
CalculatorClient calculator = new CalculatorClient(); try { double result = calculator.Divide(5, 2); } catch (FaultException<MathFault> ex) { Console.WriteLine(ex); } finally { calculator.Close(); }
BME IIT, Simon Balzs 44

BME IIT, Simon Balzs

43

DEMO: JAX-WS, WCF

45

Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs

BME IIT, Simon Balzs

46

BME IIT, Simon Balzs

47

BME IIT, Simon Balzs

48

2010.05.12.

Tartalom

Objektum-orientlt tervezs
Web-szolgltats szabvnyok
Simon Balzs

Kvetelmnyek WS-* szabvnyok DEMO

BME IIT, Simon Balzs

50

Vllalati integrci
Vllalatirnytsi rendszer SAP Termkek .NET gyfelek JEE

Integrcis kvetelmnyek

SQL Server

Web-portl PHP

Oracle DB

MySQL
51 Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs BME IIT, Simon Balzs 52

Kzigazgatsi integrci
APEH Linux, Oracle

Kvetelmnyek
Vllalaton belli integrci:
tranzakcikezels

gyflkapu Linux, JBoss

OEP Windows, .NET

E-Kzigazgatsi integrci, vllalatok kzti integrci:


biztonsg: titkosts, digitlis alrs megbzhatsg: zenet nem veszik el

MK Solaris, Sun

Szabvnyos megolds

BME IIT, Simon Balzs

53

BME IIT, Simon Balzs

54

2010.05.12.

Web-Service szabvnyok
Reliable Messaging

WS-* szabvnyok

Messaging XML titkosts, digitlis alrs Transport pl. HTTP, HTTPS, TCP, UDP, JMS, SMTP, ...

55

Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs

Metadata

Security

Transactions

BME IIT, Simon Balzs

56

Messaging
zenetkezels WS-Addressing: cmzs
SOAP fejlcek:
Messaging MTOM WS-Addressing SOAP

Security

WS-Security:
tiktosts, digitlis alrs

WS-SecureConversation:
Security WS-Federation WS-Trust

Action To From ReplyTo FaultTo MessageId RelatesTo

szimmetrikus kulcs generlsa, titkostott adatcsere (analgia: SSL)

WS-SecureConversation WS-Security

WS-Trust:
tokenek krse, kibocstsa (analgia: Kerberos)

WS-Federation
trusted domain-eken tli azonosts single sign-on

BME IIT, Simon Balzs

MTOM: binris adatok kldse byte-folyamknt kln MIME rszben

57

BME IIT, Simon Balzs

58

WS-Federation plda
Npessgnyilvntarts

Reliable messaging
analgia: TCP WS-Reliability:
Reliable messaging WSReliable Messaging

1. Bor vsrls Vsrl 2. Nagykor?

WSReliability

eredeti vltozat nem veszi figyelembe a tbbi protokollt

WS-ReliableMessaging:
jobban tmogatott figyelembe veszi a tbbi protokollt is
pl. transactions, security, ...

Web-shop

BME IIT, Simon Balzs

59

BME IIT, Simon Balzs

60

10

2010.05.12.

WS-ReliableMessaging

Transactions
WS-Coordination:
tranzakci leveznylse
Transactions WSAtomic Transaction WSBusiness Activity

WS-AtomicTransaction:
rvid lejrat tranzakcik 2PC

WS-Coordination

WS-BusinessActivity:
hossz lejrat tranzakcik rollback: kompenzci

BME IIT, Simon Balzs

61

BME IIT, Simon Balzs

62

Metadata

WS-Policy:
egy szolgltats kpessgeit s kvetelmnyeit rja le kibvti a WSDL lerst pldk:
WS-Security Policy WS-ReliableMessaging Policy WS-AtomicTransaction Policy

WS-* szabvnyok sszests


Security
WS-Federation WS-Trust WS-SecureConversation WS-Security WS-ReliableMessaging WS-Reliability WSAtomic Transaction WSBusiness Activity WSMetadata Exchange WS-Policy WSDL

Reliable Messaging

Transactions

Metadata

Metadata WS-MetadataExchange WS-Policy WSDL

WS-Coordination

Messaging
WS-Transfer WS-Enumeration WS-EventNotification WS-Addressing SOAP MTOM

WS-MetadataExchange:
WSDL dokumentumok feldertse Policy-informcik cserje dinamikus protokollfelismershez
63

XML
XML Encryption XML XML Digitial Signature XML Schema XML Namespaces

Transport
HTTP HTTPS SMTP TCP

BME IIT, Simon Balzs

64

DEMO

65

Objektum-orientlt szoftvertervezs BME IIT, Simon Balzs

11