Download as pdf or txt
Download as pdf or txt
You are on page 1of 36

Integrációs szintek –

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

 SOA alapok, követelmények


 Alkalmazás integráció
 Integrációs minták, technológiák
 Szinkron - RPC, RMI
 Aszinkron - Messaging
 Web services
 Enterprise Service Bus (ESB)

31
Fájl-csere alapú kommunikáció

Dfj df jsdfj lkfjwe


oif jewjdsdsfds fds f

Alkalmazás Rweirjhweirjewrwerw
jewi rö9u432rj32
Ew89324924e
Alkalmazás
F 9324234u hufv

Disk

 Fájl-átvitel alapja lehet:  Egyedi / Batch jellegű


 Közös / osztott  Adatformátum:
fájlrendszer  Byte-tömb (serializált)
 FTP alapon  Szöveges tartalom
 Kommunikáció jellege  XML
lehet:  CWF (Custom
 „Kvázi szinkron” Wire Format)
 Aszinkron  TDL (Type
 Kommunikáció jellege: Description
 One-way Language)
 Request-response

32
CWF – csak említésként

 Custom wire format


Custom Wire Format (CWF) is the physical representation of a
message that is composed of a number of fixed format data
structures or elements, which are not separated by delimiters.
Within a CWF messaging environment, it is not possible to
distinguish one element from the next without knowledge of the
message structure.

To correctly determine the values of individual elements, the following


information must be made available to the message parser:
 The order (this is defined in the logical properties)
 The length (can be specified in bytes, characters or character units)
 The cardinality (that is, the number of repeats)
 The type of data contained in each element (this is partly defined in the
logical properties but can be further qualified in the CWF physical
format)
 A number of characteristics based upon the logical type of the data

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ó

Dfj df jsdfj lkfjwe


oif jewjdsdsfds fds f
Alkalmazás Rweirjhweirjewrwerw
jewi rö9u432rj32
Alkalmazás
Ew89324924e
F 9324234u hufv

Disk

 Könnyen  Változások a kliens és szerver oldalt egyaránt


megvalósítható érintik
 Szinkron / aszinkron  Biztonsági kérdések
jellegű működés is  „Lehallgatás”
megoldható  Manipuláció
 A fájl összeállítása / értelmezése egyéni
fejlesztést igényel
 Marshalling (serializáció)
 Titkosítás / tömörítés
 Sérülékenység
 Alkalmazáson kívüli hibák (pl: hardware, hálózat)
kezelése
 Eltérő adatreprezentációk kezeléséről az
alkalmazásnak kell gondoskodnia 35
Szinkron kommunikáció

 A küldő alkalmazás választ vár a címzett alkalmazástól és


amíg a válasz meg nem érkezik, addig nem folytatja a
feldolgozást, vagyis a hívó fél blokkolódik

 Közvetlen kapcsolatot feltételez:


 Egyidejű rendelkezésre állás Client Service
 Stabil hálózati összeköttetés a min.
a kérés-válasz (request-reponse) invoke()
üzenetváltás időtartamára
 Nincs szükség köztes rendszerre, response
elegendő a hálózati kapcsolat
further
processing
 Példák:
 RPC
 RMI
 Web Services

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

 Bizonyos implementációkban: Asynchronous Method


Invocation

 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

 Request – response (reply)


 Választ várunk adott üzenetsorba
Service

ly Q
Client
Rep

45
Messaging - request-response
példa (Banking)

Internetbank Számlakezelő

Modul Modul Modul


A IB DB C B

Reply
Queue

Request
Queue

46
Messaging – üzenet (mint
kommunikációs egység)
Message = Header + User Data

Header User Data

Vezérlő-információk Adatcsomag (datagram / request / response)

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

<?xml version="1.0" encoding="utf-8"?>


<Customer>
<name>Little John</name>
<ssn>123456789</ssn>
<address>639 N MILLS AVENUE, TOLEDO OH
43606</address>
</comments>
</Customer>

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

<service name="Customer handling service">


<port name= " customers" binding="binding1">
<soap:address location="http://localhost:9080/customers"/>
</port> 62
</service>
Webszolgáltatások – néhány
szabvány
 UDDI – Universal Description, Discovery and Integration
 Egy directory szolgáltatás, amely webszolgáltatásokról tárol
információt
 Szolgáltatás neve, leírása, jellege
 Hol érhetjük el a WSDL-t
 Egyéb információkat, pl. QoS
 Bárki regisztrálhatja az általa fejlesztett webszolgáltatást
 Van API-ja, akár futási időben is kereshet az alkalmazás egy
szolgáltatást, bár nem ez a tipikus

 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

You might also like