Professional Documents
Culture Documents
1lenninemlenni PDF
1lenninemlenni PDF
alkalmazás integráció
Adat/tartalom integráció nem minden
esetben lehetséges/célravezető
Integrációs szintek
Ha az alkalmazás adatbázisa „zárt”,
(tipikus 3 rétegű dokumentálatlan
architektúrákban): Az alkalmazások az DB fölött szinten
„üzleti” logikát tartalmaznak
Verifikáció (constraint-ek)
Addícionális feldolgozási logika
Jogosultságkezelés
Megjelenítés szintű integráció Eseménykezelés
...
Ha ezeket figyelmen kívül
Alkalmazás-integráció hagynánk:
INKONZISZTENCIÁT
okoznánk
Megoldás: alkalmazás integráció
Adat/tartalom integráció Kiajánlott metódusok / objektumok
Komplett API (Application
Programming Interface)
30
Tartalom
31
Fájl-csere alapú kommunikáció
Alkalmazás Rweirjhweirjewrwerw
jewi rö9u432rj32
Ew89324924e
Alkalmazás
F 9324234u hufv
Disk
32
CWF – csak említésként
Forrás: http://publib.boulder.ibm.com/ 33
TDL – csak említésként
The Tagged/Delimited String format (TDS) is the physical
representation of a message that has a number of data
elements separated by tags and delimiters.
Forrás: http://publib.boulder.ibm.com/ 34
Fájl-csere alapú kommunikáció
Disk
36
Remote Procedure Call (RPC)
Process-eken átívelő hívások – belülről mégis mintha
lokális metódushívást végeznénk
Interface definíció (IDL – interface definition language)
Metódusok, bemeneti paraméterek, visszatérési
értékek
Kliens és server stub-ok fedik el az átviteli rétegeket
Adatstruktúrák bytestream
Server névfeloldása (statikus / registry alapú)
37
Remote Procedure Call (RPC)
38
Object Oriented Middleware
RPC-hez hasonló, ám objektum-orientált szemlélet:
IDL bővülése
A paraméterek / visszatérési értékek objektum
típusúak is lehetnek
Interface öröklés
Fejlettebb hibakezelő mechanizmusok
Elosztott működés
Objektum referenciák hosthoz kötése
Objektum adapterek
Pl.:
Java RMI
CORBA
39
JAVA RMI – 3 tényezője
Locate remote objects. Applications can use various mechanisms to obtain
references to remote objects. For example, an application can register its remote
objects with RMI's simple naming facility, the RMI registry. Alternatively, an
application can pass and return remote object references as part of other remote
invocations.
Communicate with remote objects. Details of communication between remote
objects are handled by RMI. To the programmer, remote communication looks similar
to regular Java method invocations.
Load class definitions for objects that are passed around. Because RMI enables
objects to be passed back and forth, it provides mechanisms for loading an object's
class definitions as well as for transmitting an object's data.
40
RPC, RMI (OOM)
Egyszerű (mintha helyi Erős csatolás
metódusokat hívnánk) Változások a kliens és szerver
Csökkenti a komplexitást oldalt egyaránt érintik
Erősen típusos Hívó fél hosszasan blokkolódhat
Ellenőrzés fordítás- Több-szálú tervezést,
időben programozást igényelhet
Hatékony marshalling Alkalmazáson kívüli hibák (pl:
(serializáció) hardware, hálózat) kezelése
Egyetlen komponens elérhetetlensége
a teljes rendszer működését
megakaszthatja
A leglassabb komponens / rendszer
teljesítménye dominál
Többségük platform / nyelv -
specifikus megoldás
41
Aszinkron kommunikáció
A küldő alkalmazás nem vár azonnali választ a címzett
(server) alkalmazástól és ahogy elküldte az üzenetet, folytatja
a feldolgozást.
Laza csatolás
Client Service
invokeAsync()
further
processing Service
Client
42
Messaging
Üzenet-orientált köztes rendszer
(MOM – Message Oriented Middleware)
aszinkron, lazán csatolt, rendelkezésre-állástól független,
de tranzakció-biztos feldolgozás
közvetített üzenetek biztos, egyszeri de csakis egyszeri
továbbítása
egyes alkalmazások eseményvezérelt üzemeltetése
platform független, egyszerű programozási API felületet
Pl:
IBM WebSphere MQ (korábban MQSeries)
Sun Java System Message Queue PE / EE
BEA MessageQ
JBossMQ
MS MQ
43
Messaging – rendelkezésre
állástól független
Minden
folytonosan
elérhető
Logikai
kapcsolat
B
A B
e ue
B
Qu
A B
A B
Minden A
feltételesen
elérhető A
44
Messaging – interakciós
modellek
Fire & forget (datagram)
Nem várunk választ
Service
Client
ly Q
Client
Rep
45
Messaging - request-response
példa (Banking)
Internetbank Számlakezelő
Reply
Queue
Request
Queue
46
Messaging – üzenet (mint
kommunikációs egység)
Message = Header + User Data
47
Messaging – üzenet (mint
kommunikációs egység)
Tipikus fejléc mezők
Destination - célobjektum (ahová az üzenetet
küldjük)
DeliveryMode - perzisztens / nem perzisztens
Expiration - lejárati idő
Priority- prioritás
MessageID - üzenet azonosító
Timestamp - küldési idő
CorrelationID - hivatkozott üzenet azonosítója
ReplyTo - a válasz célobjektuma
Type - üzenet „típusa”
Redelivered - újraküldött jelző flag
48
Messaging – üzenet (mint
kommunikációs egység)
Üzenet tartalma
A konkrét alkalmazástól függ
Byte-tömb
Szöveges üzenet
XML
Egyszerű XML
SOAP (pl.: SOAP-over-JMS)
CWF (Custom Wired Format)
TDL (Tagged/Delimited)
Serializált objektum
Pl.: Java – Java kommunikáció esetén
49
Messaging - Kommunikációs
modellek 1.
Point-to-point
50
Messaging - Kommunikációs
modellek 2.
Publish-subscribe
51
Tartalom
Alkalmazás integráció
Integrációs minták, technológiák
Szinkron - RPC, RMI
Aszinkron - Messaging
Web services
Projekt FUSION – volt? ☺
Enterprise Service Bus (ESB)
52
Webszolgáltatások (XML web
szolgáltatások)
Olyan hálózati alkalmazás vagy komponens, amely a
SOAP protokoll és a WSDL technológia felhasználásával,
XML dokumentumok formájában kommunikál a
külvilággal
XML mint adatreprezentációs réteg
platformfüggetlen
SOAP (HTTP fölött) mint szállítási réteg
platformfüggetlen
laza csatolás: a kliensek el tudják érni a szolgáltatást
akkor is, ha annak megváltozott az interfésze
önleíró
lehet szinkron és aszinkron is
az XML-lel nemcsak egyszerű adatokat, hanem
komplex dokumentumokat is leírhatunk
platformfüggetlensége miatt kiváló integrációs eszköz
53
Webszolgáltatások – néhány
szabvány
XML – Extensible Markup Language
Szabvány, mely szintaxist definiál jelölőnyelvek
készítéséhez
Tetszőleges strukúrált információ leírására használható
A W3C által ajánlott nyílt szabvány
54
Webszolgáltatások – néhány
szabvány
XSD – XML Schema Definition
maga a séma is XML dokumentum
minden új séma ezt használja
a séma szót valahol csak erre használják
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="Customer">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="ssn" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="comments" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
55
Webszolgáltatások – néhány
szabvány
SOAP - Simple Object Access Protocol
XML alapú kommunikációs protokol, amellyel le lehet írni
tetszőleges metódushívást (request)
az arra adott választ (response)
a metódushívás során fellépő hibákat (fault)
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope">
<soap:Header>
...
...
</soap:Header>
<soap:Body>
...
...
<soap:Fault>
...
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
56
Webszolgáltatások – néhány
szabvány
WSDL – Web Services Description Language
XML alapú interfész-leíró, amellyel megadható
hogy az adott szolgáltatás milyen műveleteket
(metódusokat) kínál fel,
a műveletekhez kapcsolódó minden összetett adattípus,
hogy a műveletek milyen protokollokon keresztül hívhatók
meg,
hogy hol hívhatók meg ezen műveletek
<definitions>
<types> típusok ...</types>
<message> üzenetek ... </message>*
<portType> port típusok ... </portType>*
<binding> kötések ... </binding> *
<service> elérési pontok ... </service> *
</definitions>
57
Webszolgáltatások – néhány
szabvány
<definitions>
<types> típusok ...</types>
<message> üzenetek ... </message>*
A felhasznált adattípusokat definiálja (XSD sémák segítségével)
<portType> port típusok ... </portType>*
<types>
<binding> <schemakötések ... </binding> *
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<service> elérési <xs:element name=
pontok"Customer">
... </service> *
<xs:complexType>
</definitions> <xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name= "address" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</schema>
...
</types>
58
Webszolgáltatások – néhány
szabvány
<definitions>
<types> típusok ...</types>
<message> üzenetek ... </message>*
<portType> port típusok ... </portType>*
a műveletek által használt adatokat írja le (paraméterlista)
<binding>
<part>-okból áll,kötések ...a <types>-ban
ezek hivatkoznak </binding> definiált*típusokra
<service> elérési pontok ... </service> *
<message name="openCustomerRequest">
</definitions>
<part type="Customer" name="cust"/>
<part type="Agent" name="agent"/>
</message>
<message name="openCustomerResponse">
<part type="xsd:decimal" name="customerID"/>
</message>
59
Webszolgáltatások – néhány
szabvány
<definitions>
<types> típusok ...</types>
<message> üzenetek ... </message>*
<portType> port típusok ... </portType>*
<binding> kötések ... </binding> *
a műveleteket definiálja
<service> elérési
a <message> elemeire pontok ... </service> *
hivatkozik
</definitions>
<portType name="customers">
<operation name="openCustomer">
<input message="openCustomerRequest"/>
<output message="openCustomerResponse"/>
</operation>
</portType>
60
Webszolgáltatások – néhány
szabvány
<definitions>
<types> típusok ...</types>
<message> üzenetek ... </message>*
<portType> port típusok ... </portType>*
<binding> kötések ... </binding> *
<service> elérési
megadja, hogy az pontok
egyes műveletek milyen ...
konkrét</service> * el
protokollokon érhetők
</definitions>
<binding type="customers" name="binding1">
<soap:binding style="document„ transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="openCustomer">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding> 61
Webszolgáltatások – néhány
szabvány
<definitions>
<types> típusok ...</types>
<message> üzenetek ... </message>*
<portType> port típusok ... </portType>*
<binding> kötések ... </binding> *
<service> elérési pontok ... </service> *
</definitions>
megadja, hol (milyen URL-en) érhető el a szolgáltatás a
<binding>-ban megadott protokollokon
nem csak HTTP-s URL-ek jöhetnek szóba, pl:
SOAP-over-HTTP
SOAP-over-JMS
Felhasználása:
Globális UDDI – replikált globális tárolás több szerveren,
melyet több cég üzemeltet (pl. Sun, IBM, Microsoft)
Lokális – vállalaton belül, a szolgáltatások nyilvántartására
Korlátozott használhatóság
Kötött adatstruktúra, nehezen bővíthető
63
Webszolgáltatások
Web Services topológia
UDDI
(U
L)
Pu + W
DD
SD
I + ate
bli SD
I
W
DD oc
sh L)
(U L
WS Consumer WS Provider
Access
(SOAP)
64
Webszolgáltatások – Példa
(HTTP)
POST /StockQuote HTTP/1.1
Host: www.example.org
Content-Type: text/xml; charset="utf-8"
Content-Length: 332
SOAPAction: "http://example.org/2001/06/quotes”
<env:Envelope xmlns:env="http://www.w3.org/2001/09/soap-
envelope" >
<env:Body>
<m:GetLastTradePrice
xmlns:m="http://example.org/2001/06/quotes">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</env:Body>
</env:Envelope>
65