Webtechnológiák információs redszerekben. Technológiai bevezető 1.

Hasonló dokumentumok
Webszolgáltatások (WS)

SZOLGÁLTATÁS ORIENTÁLT ARCHITEKTÚRÁK (SOA)

Webtechnológiák információs redszerekben. Bevezető 1.

Webtechnológiák információs redszerekben. Bevezető 1.

Webtechnológiák információs redszerekben. Bevezető 1.

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Debreceni Egyetem Informatikai Kar. Szolgáltatás-orientált programozás az Oracle-ben

Szolgáltatásorientált rendszerintegráció. SOA-alapú rendszerintegráció. Web-szolgáltatások: SOAP, WSDL

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

extensible Markup Language:

Osztott alkalmazások fejlesztési technológiái Áttekintés

Szolgáltatás Orientált Architektúra a MAVIR-nál

Szolgáltatás Orientált Architektúra és több felhasználós adatbázis használata OKF keretein belül. Beke Dániel

Szolgáltatásorientált rendszerintegráció. SOA-alapú rendszerintegráció. Enterprise Service Bus (ESB) Ercsényi András, BME IIT, 2011.

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

JAVA webes alkalmazások

Simon Balázs Dr. Goldschmidt Balázs Dr. Kondorosi Károly. BME, Irányítástechnika és Informatika Tanszék

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

Java Business Integration szolgáltatásalapú architektúra JavaEE környezetben. Simon Géza Zsemlye Tamás

Web-fejlesztés NGM_IN002_1

API tervezése mobil környezetbe. gyakorlat

Fejlesztés, működtetés, felügyelet Hatékony infrastruktúra IBM szoftverekkel

Üzleti folyamatok rugalmasabb IT támogatása. Nick Gábor András szeptember 10.

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

Oracle9i Alkalmazás Szerver Üzleti folyamat integráció. Molnár Balázs Vezető értékesítési konzultáns Oracle Hungary

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Web-fejlesztés NGM_IN002_1

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

A Java EE 5 plattform

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Bevezetés Működési elv AJAX keretrendszerek AJAX

Web Services. (webszolgáltatások): egy osztott alkalmazásfejlesztési plattform

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Adatbázis rendszerek 7. előadás State of the art

SOAP komponensek Delphiben

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Flex: csak rugalmasan!

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Mikor? Milyen alkalmazásnál?

MVC. Model View Controller

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Nyilvántartási Rendszer

webalkalmazások fejlesztése elosztott alapon

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

CMDB architektúra megjelenítése SAMU-val Rugalmas megoldás. ITSMF Bekk Nándor Magyar Telekom / IT szolgáltatás menedzsment központ

GIS fejlesztés Web platformra nyílt forráskódú ingyenes eszközökkel

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés


RIA Rich Internet Application

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Webes alkalmazások fejlesztése

Junior Java Képzés. Tematika

Bevezető. Servlet alapgondolatok

Bevezetés az SAP világába. 5. Kommunikációs és integrációs technológiák

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Komponens alapú fejlesztés

Komponens modellek. 3. Előadás (első fele)

Osztott Objektumarchitektúrák

Viczián István IP Systems JUM XIX szeptember 18.

Oracle adatkezelési megoldások helye az EA világában. Előadó: Tar Zoltán

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Kommunikáció. 3. előadás

Enterprise extended Output Management. exom - Greendoc Systems Kft. 1

A SZOFTVERTECHNOLÓGIA ALAPJAI

Földmérési és Távérzékelési Intézet

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Párhuzamos és Grid rendszerek

Web programoz as

Osztott rendszerek. Krizsán Zoltán 1 Ficsór Lajos 1. Webalkalmazások fejlesztése tananyag. Miskolci Egyetem. Bevezetés A múlt - történelem A jelen

Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

SAP Business One. Áttekintés, gyakorlati ismertetı. Mosaic Business System Kft.; Support:

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Osztott rendszerek (Distributed

Osztott rendszerek (Distributed. systems) Bevezetés. Tartalom. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Elosztott rendszer architektúrák

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

Microsoft SQL Server telepítése

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Nagyvállalati SOA infrastruktúra (ESB, szolgáltatástárak)

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Tartalomjegyzék. Bevezetés. 1. A.NET 3.5-keretrendszer 1. A korszerű alkalmazások felépítésének kihívásai... 2

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Internetes térkép publikálási technikák, szabványok, trendek, nyílt forráskódú megoldások

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Üzletmenet-folytonosság és katasztrófa helyzet kezelés (Honnan indultunk, miért változtunk, hova tartunk?)

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Átírás:

Webtechnológiák információs redszerekben Technológiai bevezető 1.

Követelmények 2 beadandó feladat Primitív SOA SOA / BPM feladat valamely rendszerben Oracle SOA / BPM Suite IBM WebShpere / IBM Business Process Manager Microsoft BizTalk JBoss jbpm SAP NetWeaver Process Integration GlassFish ESB

Szükséges alapok HTTP Adatbázis-kezelés, SQL Java nyelv (Java EE) / ASP.NET & C# Modellezési ismeretek XML

Szoftver rendszerek Szoftver rendszerek Monolitikus Elosztott Hagyományos Web-alapú szoftverek Web alkalmazások Szolgáltatás-orientált alkalmazások

Egygépes (standalone) alkalmazások Kliens gép 1 Kliens gép 2 Kliens gép N Program Program Program... Adatok (fájlok) Adatok (fájlok) Adatok (fájlok) A program teljes egészében a munkaállomáson fut. Az adatok ugyanitt tárolódnak. Egyszerre csak egy felhasználó használhatja. Semmilyen hálózati kapcsolat nincs, a különálló programok közti adatszinkronizáció meglehetősen nehézkes.

Egyszerű kliens-szerver alkalmazások 1. Egy vagy több szerver gép erőforrásait (jellemzően adatait) megosztja a kliensek között. Jobb esetben on-line. Az alkalmazás egy része (adatbázis-kezelő rsz.) a szerven fut. Kliens gép 1 Program Kliens gép 2 Program Intranet Szerver gép Az alkalmazás logikát implementáló rész a kliens gépeken fut. vastag kliens rendszerek... Kliens gép N RDBMS (Relational DataBase Management System) Egy adatbázist többféle kliens program is használhat. Program Egyszerre több konkurrens felhasználó használhatja.

Egyszerű kliens-szerver alkalmazások 2. Jellemzően intranet-es alkalmazásoknál használatos. Kliens gép 1 Terheli a kliens gép erőforrásait. Gyakran mindenféle driver-ek telepítését igényli a kliens gépeken Program Kliens gép 2 Program Intranet Szerver gép Verziófrissítés alkalmával az összes kliens-en frissíteni kell a programot. A RAD (Rapid Application Development) sok eszközzel támogatott, számos jó vizuális fejlesztőkörnyezet: gyorsan összekattint-gathatunk és leprogramozhatunk komoly alkalmazásokat.... Kliens gép N Program RDBMS (Relational DataBase Management System)

Többrétegű (multitier) hálózati alkalmazások Minimálisan három réteg létezik: Front End = kliens oldali felhasználói réteg (általában egy WEB böngészőben) Middleware = szerver oldali prezentációs és logikai réteg (általában egy WEB szerveren beágyazott script-ekben összeolvasztva a megjelenítés és az egyszerűbb logika) Back End = hátsó szerver oldali nagykapacitású tároló (adatbázis szerver) vagy számoló réteg

Háromrétegű architektúra Front End Middleware Back End Kliens gép 1 Adatbázis szerver WEB Böngésző Kliens gép 2 WEB Böngésző... Internet/ Intranet Web szerver Web Server Application Server (pl. PHP) RDBMS (Relational DataBase Management System) Adatbázis szerver XML DBMS (XML DataBase Management System) Kliens gép N Egyéb szerver WEB Böngésző Nagykapacitású, bonyolul számításokat végző alkalmazás

Többrétegű architektúra Front End Kliens gép 1 Prezentációs layer Middleware Logikai layer Back End Adatbázis szerver WEB Böngésző Web szerver1 Web Server Applikációs szerver1 RDBMS (Relational DataBase Management System) Kliens gép 2 WEB Böngésző... Kliens gép N Internet/ Intranet Prezentációs alkalmazás (pl. JSP)... Web szerverk Web Server Application Server... Applikációs szerverm Adatbázis szerver XML DBMS (XML DataBase Management System) Egyéb szerver WEB Böngésző Prezentációs alkalmazás (pl. JSP) Application Server Nagykapacitású, bonyolul számításokat végző alkalmazás

Többrétegű architektúra jellemzői Load balancing, terhelésmegosztás. Tervezést támogató környezetek: Java J2EE,.Net. Architektúra felosztás-összevonás logikai szinten. A rendszer logikai architektúrája (tervezés, programozás) független a számítógépes megvalósítástól, hálózattól. A logikai réteg tovább osztható. Nagyon sok konkurens felhasználó kiszolgálására optimalizálva

Többrétegű architektúra jellemzői Kliens gép: böngésző, a logika többnyire a szerveren található vékony kliens architektúra Minimális logika a klienseken: a beviteli adatok validálására, a lapok speciális megjelenítésére (pl. JavaScript). A szerveren elkülönül az adattárolás, a logika és a prezentáció eltérő szerepkörök Az egyes szintek önmagukban is tesztelhetőek. A rendszer egyes komponensei több célra vagy újra felhasználhatók.

Többrétegű architektúra jellemzői A vékony kliensek miatt nagyon gyenge kliens gépek is elegendők. A technológia platformfüggetlen. A kliensekre nem kell drivert telepíteni. A verziófrissítés csak a szervert érinti, a klienseket nem. Sajnos egyelőre elég kevés eszköz támogatja a RAD-ot (Rapid Application Development), a környezet kevés segítséget nyújt a programozónak a megoldási lehetőségek kiválasztásában Házi szabványok, saját keretrendszerek készülnek. Nehezebb tesztelni

Load Balancer Tartalom HTML / XML Megjelnítés CSS Viselkedés JavaScript Web-es architektúra Front End Kliens: Web böngésző Prezentációs Layer Middleware Logikai Layer Back End Adatbázis szerver Web szerver Prezentációs szerver Alkalmazás szerver RDBMS Adatbázis szerver Kliens: Mobil böngésző / mobil kliens Internet Web szerver Prezentációs szerver Alkalmazás szerver XML DBMS Nagy kapacitású, összetett számításokat végző szerver

WS Load Balancer WS Tartalom HTML / XML Megjelnítés CSS Viselkedés JavaScript WS Web-es architektúra SOA Front End Kliens: Web böngésző Prezentációs Layer Web szerver Middleware SOA Layer ESB + Orchestration+ Back End / Persistence Layer Adatbázis szerver Kliens: Mobil böngésző / mobil kliens Internet Prezentációs szerver Web szerver Prezentációs szerver Web szolgáltatás (alkalmazási logika) Egyéb erőforrások, legacy systems (ERP, CRM, stb). SOA: háttér rendszerekből Business Objects (resources), WS + Human task + Business Rule. Üzleti folyamatok által irányítva

Információs rendszer 3 rétege Kliens Firewall Proxy Web Server Alkalmazás szerver (Üzleti logika, Adathozzáférés) Megjelenítési réteg (Presentation Layer) Alkalmazási logika réteg (Business Layer) Backend (Vállalati információs rendszer) DBMS B2B Erőforráskezelő réteg (Data Layer)

Információs rendszer 3 rétege Kliens Firewall Proxy Web Server Alkalmazás szerver (Üzleti logika, Adathozzáférés) Megjelenítési réteg (Presentation Layer) Alkalmazási logika réteg (Business Layer) Backend (Vállalati információs rendszer) DBMS B2B Erőforráskezelő réteg (Data Layer)

Vállalati alkalmazások

XML - extensible Markup Language

Kiterjeszthető jelölőnyelv Jelölő nyelv Nincs saját nyelvtana, elemkészlete Nyitott Szöveg alapú Címkékből (tag), attribútumokból és magából a tartalomból áll Hierarchikus szerkezetű Ember számára is értelmezhető Adat és a megjelenítés elválasztható egymástól Általános célú: kommunikáció, adatleírás, stb.

SGML nyelvcsalád

XML felhasználási területei Struktúrált dokumentumszerkesztés, leírás: docx Vektorgrafika tárolása: VML, SVG Alkalmazások közötti webes kommunikáció: WSDL Pénzügyi információk cseréje: OFX Digitális űrlapok kezelése: XFDL, Infopath Emberi erőforrás menedzsment jelölőnyelv: HRMML Jogi dokumentumok kezelése: OXCI Matematikai képletek leírása, formázása: MathML Konfigurációs adatok leírása: egyedi News feeds leírás: RSS 3D grafikai leírás: X3D Stílus leírásra megjelenítéshez: XSLT Adatbázis, lekérdezés: XQuery HTML leírás: XHTML

Jól formázott XML példa Fejrész Dokumentum elem, gyökérelem Feldolgozó utasítás <?xml version="1.0" encoding="iso-8859-2"?> <!-- Megjegyzés --> <?xml-stylesheet type="text/xsl" href="1.xsl"?> <segedanyagok xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="book.xsd" > <irodalom> <cim>xml lépésrol lépésre</cim> <szerzo>michael J. Joung</szerzo> <kiadas>2002</kiadas> </irodalom> <irodalom> <cim>az XML kézikönyv</cim> <szerzo>neil Bradley</szerzo> <kiadas>2005</kiadas> </irodalom> </segedanyagok <?SajatAlkalmazas Param1="ertek" Param2="ertek"?>

XML specifikációk közötti kapcsolatok DTD XML dokumentumok supersedes XSD XSLT XQuery uses XPath uses

DTD dokumentum típus def. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE cikk SYSTEM "cikk2.dtd"> <cikk> <datum>2003/05/01</datum> <szerzo>laci</szerzo> <tartalom>tananyag</tartalom> </cikk> A külső DTD fájl: <!ELEMENT cikk (datum, szerzo, tartalom)> <!ELEMENT datum (#PCDATA)> <!ELEMENT szerzo (#PCDATA)> <!ELEMENT tartalom (#PCDATA)>

XSD példa <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="konyv"> <xs:complextype> <xs:sequence> <xs:element name="szerzo" type="xs:string"/> <xs:element name="cim" type="xs:string"/> <xs:element name="ar" type="xs:integer"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> Az XML dokumentumban így kell megadni: <?xml version="1.0" encoding="utf-8"?> <konyv xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="konyv.xsd"> <szerzo>xy</szerzo> <cim>xml tananyag</cim> <ar>1000</ar> </konyv>

W3C Document Object Model Platform- és nyelv független interfészleírás A tartalom, a struktúra és a design hozzáféréséhez, módosításához. Objektumok és tulajdonságaik és hozzáférési metódusok szabálya Részei: Core DOM: bármilyen strukturált dokumentumra vonatkozó szabvány HTML DOM: HTML dokumentumokra XML DOM: XML dokumentumokra

XML DOM Node-ok Node típus Dokumentum Feldolgozási instrukció Elem Attribútum Szöveg Példa <!DOCTYPE food SYSTEM "food.dtd"> <?xml version="1.0"?> <drink type="beer">carlsberg</drink> type="beer" Carlsberg

Letar.xml kapcsolati struktúrája Gyökér elem: <leltar> parentnode Elem: <konyv> firstchild nextsibling previoussibling Elem: <konyv> Elem: <konyv> Elem: <konyv> Elem: <konyv> lastchild

XML parse-olás a böngészőkben XML beolvasása a memóriába XML DOM objektum készítése Parszolást követően az XML JavaScript-ből feldolgozható xmldoc=new ActiveXObject("Microsoft.XMLDOM"); //IE xmldoc=document.implementation.createdocument("","",null); //Firefox, Opera, stb. xmldoc.async="false"; xmldoc.load("leltar.xml");

XML DOM properties & methods Properties x.nodename x neve x.nodevalue x node értéke x.parentnode x node szülője x.childnodes x node gyermeke x.attributes x node attribútuma Metódusok x.getelementsbytagname(nev) visszaadja az összes nev nevű elemet x.appendchild(node) x elemhez beszúr egy gyermek elemet x.removechild(node) gyermek elem törlése

XML feldolgozás documentelement: gyökér elem getelementsbytagname("cim"): az összes cim nevű elem kijelölése getelementsbytagname("cim")[0]: az első cim nevű elem childnodes[0]: a cim nevű elem első gyermek eleme nodevalue: a node (szöveges elem) értéke nodename: node neve nodetype: node típusa

Delphi unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComObj; type TForm1 = class(tform) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM}

Delphi - 2 procedure TForm1.Button1Click(Sender: Tobject); var xml:variant; begin xml:=createoleobject('msxml2.domdocument.4.0'); xml.async := false; xml.loadxml('<alma></alma>'); root:=xml.documentelement; newnode:=xml.createelement('barack'); newnode.text:='sárga'; root.appendchild(newnode); newnode:=xml.createelement('citrom'); newnode.text:='savanyú'; root.appendchild(newnode); ShowMessage(xml.documentElement.xml); end; end.

Visual Basic Dim xmldoc As New Msxml2.DOMDocument40 Dim comment As IXMLDOMComment xmldoc.async = False xmldoc.loadxml ("<ALMA></ALMA>") Set root = xmldoc.documentelement Set newnode = xmldoc.createelement("barack") newnode.text = sárga root.appendchild newnode Set newnode = xmldoc.createelement("citrom") newnode.text = savanyú root.appendchild newnode MsgBox (xmldoc.documentelement.xml)

JavaScript var xmldoc = new ActiveXObject("Msxml2.DOMDocument.4.0"); var root; var newnode; xmldoc.async = false; xmldoc.loadxml("<alma></alma>"); root = xmldoc.documentelement; newnode = xmldoc.createelement("barack"); newnode.text = sárga ; root.appendchild(newnode); newnode = xmldoc.createelement("citrom"); newnode.text = savanyú ; root.appendchild(newnode); alert(xmldoc.documentelement.xml);

WEB-SZOLGÁLTATÁSOK

Webszolgáltatások fogalma IBM (lényege) Egy interface, mely a hálózaton keresztül szabványos XML üzenetekkel érhető el és hozzá formálsi XML leírás tartozik. (soap, wsdl) Sun Szoftverelemek, melyeket az alkalmazások felkutatnak, egyesíthetnek és átszervezhetnek, hogy megoldást találjanak a felhasználó problémájára. Elsősorban a Java nyelvre és az XML-re támaszkodnak. 38

Webszolgáltatások fogalma Microsoft (többféleképpen, lényeg) Nem objektummodellekre épít, hanem mindenhonnan elérhető webprotokollokon és adatformátumokon keresztül használjuk. Nem foglalkozik a megvalósítással, bármilyen rendszer, bármilyen programnyelv lehet a kiszolgáló. Nem szorítja meg az XML formátumot. W3C. 2004 A software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with XML serialization in conjunction with other Web-related standards. 39

Webszolgáltatások fogalma Bármilyen rendszer Bármilyen programnyelv HTTP Mime típusok Web itt hálózat, nem feltétlenül Internet (Világháló, World Wide Web) Egységesítés, modularitás (verziózás) Kérés-válasz típusú (Request-Response, Rq/Rs) 40

Webszolgáltatások Előzmények: RPC (távoli eljáráshívás) CORBA... Fajtái: SOAP RESTful... 41

Webszolgáltatások használata Service Registry / Broker Find Register Service Consumer / Requester Bind Execute Service Provider 42

Webszolgáltatás protokol szintek Service-based Processes Service Discovery Service Description - Webszolgáltatások integrálása - WS-BPEL - Webszolgáltatások regisztrálása - UDDI - Interfész specifikáció - WSDL Service Messaging Service Transport - XML alapú üzenetek - XML-RPC, SOAP -Üzenet átviel - HTTP, SMTP, FTP, BEEP 43

RESTful webszolgáltatások Representational State Transfer CRUD műveletekből HTTP műveleteket készítünk: Alkalmazás művelet Create Retrieve Update Delete HTTP protokoll POST GET PUT DELETE 44

RESTful webszolgáltatások HTTP(S) Hívás 1 GET URL (http://server/service?param1=ertek1&...) Név-érték párok (nincs struktúra, csak felsorolás) Urlencoding (értékek) Karakter ascii kódja hexadecimálisan % jel után ( = + ) 2047 byte adat lehet a kérésben 45

Rész(let)ek HTTP(S) Hívás 2 POST URL (http://server/service) Request data: bármi Request header Content-Type» application/x-www-form-urlencoded (Név-érték párok (nincs struktúra, csak felsorolás))» text/xml (lehet strukturálni) 46

Rész(let)ek HTTP(S) Eredmény / Válasz Bármi lehet Általában szöveges adatok Response header Content-Type HTML TEXT XML JSON (JavaScript Object Notation) 47

Példa: XML <?xml version="1.0" encoding="utf-8"?> <direct-messages type="array"> <direct_message> <text>hello</text> <sender> <name>teszt Elek</name> </sender> </direct-message> </direct-messages> JSON [ ] { "text":"hello", "sender":{ "name":"teszt Elek" } } 48

JSON (JavaScript Object Notation) Nyelvtől független szöveg formátum ( C-szerű leírás ) Emberek számára is olvasható írható, Könnyen feldolgozható és előállítható, adatcsere-formátum. A JSON-nak két típusú felépítése lehetséges: név-érték párok halmaza értékek rendezett halmaza (pl. tömb, vektor) JSON ELEM LÉTREHOZÁSA PHP-BAN <?php $array = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($array); // Eredmény: {"a":1,"b":2,"c":3,"d":4,"e":5}?> JSON ELEM OBJEKTUMMÁ ALAKÍTÁSA JAVASCRIPTBEN <script type="text/javascript"> var response = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var result = eval("("+response+")"); alert(result.a); // Eredmény: 1 alert(result.b); // Eredmény: 2 </script> 49

Rész(let)ek Kliens Bármilyen rendszer Bármilyen böngésző Bármilyen nyelven írt alkalmazás Web application Desktop application HTTP hívás kezdeményezése szövegfeldolgozása Szövegműveletek XML programkönyvtárak JSON programkönyvtárak 51

Rész(let)ek Szerver Bármilyen Bármilyen nyelven írt web alkalmazás HTTP kérés kiszolgálása Szövegműveletek (mint, ha HTML-t adna vissza) XML programkönyvtárak JSON programkönyvtárak 52

SOAP 53

W3C ajánlás (szabványosítás felé) SOAP Simple Object Access Protocol Verzió: 1.2 SOAP kérés Request headerben Content-Type: text/xml SOAPAction Tartalom XML saját névtérben 54

W3C ajánlás (szabványosítás felé) SOAP válasz Response headerben Content-Type: text/xml Válasz ugyanolyan borítékban (Envelope) található, mint a kérés Tartalom XML saját névtérben 55

SOAP <soap:envelope namespaces > <soap:header> <wsa:messageid> unique ID </wsa:messageid> <wsa:replyto> endpoint </wsa:replyto> </soap:header> <soap:body> <bank:balancerequest> data </bank:balancerequest> </soap:body> </soap:envelope>

SOAP Body Header

Példa: Host: server.com Content-Length: 100 SOAPAction: "http://server/service" Content-Type: text/xml;charset=utf-8 HTTP/1.1 200 OK Content-Length: 100 Content-Type: text/xml;charset=utf-8 <soapenv:envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/> <soapenv:header> </soapenv:header> <soapenv:body> </soapenv:body> </soapenv:envelope> 58

SOAP Request Message SOAP Envelope Namespace <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body xmlns:m="http://www.stock.org/stock"> <m:getstockprice> <m:stockname>ibm</m:stockname> </m:getstockprice> </soap:body> Message </soap:envelope> Message Namespace SOAP Envelope

SOAP Response Message <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body xmlns:m="http://www.stock.org/stock"> <m:getstockpriceresponse> <m:price>34.5</m:price> </m:getstockpriceresponse> Message </soap:body> </soap:envelope> Result returned in Body SOAP Envelope

REST példa 1. GET /stock/ibm HTTP/1.1 Host: www.example.org Accept: application/xml

SOAP példa 1. POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soapenvelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:body xmlns:m="http://www.example.org/stock"> <m:getstockprice> <m:stockname>ibm</m:stockname> </m:getstockprice> </soap:body> </soap:envelope>

REST példa 2. POST /order HTTP/1.1 Host: www.example.org Content-Type: application/xml; charset=utf-8 <?xml version="1.0"?> <order> <StockName>IBM</StockName> <Quantity>50</Quantity> </order> 63

SOAP példa 2. POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body xmlns:m="http://www.example.org/stock"> <m:buystock> <m:stockname>ibm</m:stockname> <m:quantity>50</m:quantity> </m:buystock> </soap:body> </soap:envelope>

W3C ajánlás (szabványosítás felé) WSDL Web Service Definition Language Verzió: 1.1 <definitions>: A WSDL gyökér eleme <porttype> Művelet definíció. Mely műveleteket, függvényeket használjuk. Melyik üzenetre milyen a válaszüzenet? <message> Üzenet definíció. Milyen üzeneteket küldünk át? <types> Típus definíciók, XML séma segítségével. Milyen adatokat viszünk át? <binding> Végpont és műveletek összekötése (protocol definíció). Hogyan vigyük át az üzeneteket? GET,POST,SOAP Vannak új irányok: JMS; Fájlírás, -figyelés <service> Végpont definíció. Hol található a szolgáltatás? 65

WSDL szerkezete <definitions> <porttype> </porttype> <message> </message> <types> </types> <binding> </binding> </definitions> 66

WSDL példa: <types> <types> <schema targetnamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/xmlschema"> <element name="tradepricerequest"> <complextype> <all> <element name="tickersymbol" type="string"/> </all> </complextype> </element> <element name="tradeprice"> <complextype> <all> <element name="price" type="float"/> </all> </complextype> </element> </schema> </types> 67

WSDL példa: <porttype> és <message> <porttype name="glossaryterms"> <operation name="getterm"> <input message="gettermrequest"/> <output message="gettermresponse"/> </operation> </porttype> <message name="gettermrequest"> <part name="term" type="xs:string"/> </message> <message name="gettermresponse"> <part name="value" type="xs:string"/> </message> 68

WSDL példa: <binding> <binding type="glossaryterms" name="b1"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <operation> <soap:operation soapaction="http://example.com/getterm"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <porttype name="glossaryterms"> <operation name="getterm"> <input message="gettermrequest"/> <output message="gettermresponse"/> </operation> </porttype> <message name="gettermrequest"> <part name="term" type="xs:string"/> </message> <message name="gettermresponse"> <part name="value" type="xs:string"/> </message> 69

WSDL példa: <service> <service name= GlossaryTermsService"> <port name= GlossaryTermsSoapHttpPort" binding="tns:glossarytermssoapbinding"> <soap:address location="http://localhost:8080/webservice/glo ssarytermsservice"/> </port> </service> 70

Végrehajtás Enterprise System Web Services Platform WSDL ServiceDeployment XML Schema Library Book.xsd types binding operation Java Method

WSDL Új irányok/fejlesztések WADL (Web Application Definition Language) WSEL (Web Service Endpoint Language): a szolgáltatás egyéb jellemzőinek leírása, pl.: biztonsági rendszer, használat költségei 72

UDDI Universal Description, Discovery and Integration Webszolgáltatás-tár, API specifikáció webszolgáltatások felderítéséhez Szolgáltatáskatalógus része 73

UDDI struktúra Business entity szervezeti információk, kontakt Business Service Nyújtott szolgáltatások Binding Template A szolgáltatás eléréséhez szükséges információk tmodel (technikai model) Specifikáció, pl.: WSDL Osztályozási, kategorizálási információk

UDDI példa 75

WS keresés a neten http://webservices.seekda.com/ 76

Tesztelés SoapUI Felület WSDL import Validálás (Rq/Rs) Példa BarCode39 project 77

Példa BarCode vonalkód generálás SoapUI-ban már láttuk Böngésző http://seekda.com/providers/webservicex.com/barcode GET, POST, SOAP Java alkalmazás SOAPClientTest 78

Példa Java kliens kódja (BarCode, SOAPClientTest) SOAP (automatikus kódgenerálás, JAXB) FileOutputStream fw = null; net.webservicex.barcode service = new net.webservicex.barcode(); net.webservicex.barcodesoap port = service.getbarcodesoap(); fw = new FileOutputStream(filename); fw.write(port.code39(jtextfield1.gettext(), Integer.parseInt(jTextField2.getText()), getlatszik(), jtextfield4.gettext())); fw.close(); 79

Példa Java kliens kódja (BarCode, SOAPClientTest) Szöveg feldolgozása HTTPCaller hc =new HTTPCaller(); hc.seturl("http://www.webservicex.com/barcode.asmx"); String req="<soapenv:envelope xmlns:q0=\"http://www.webservicex.net\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/xmlschema\" xmlns:xsi=\"http://www.w3.org/2001/xmlschemainstance\"><soapenv:header></soapenv:header><soapenv:body> <q0:code39> <q0:code>".concat(jtextfield1.gettext()).concat("</q0:code><q0:barsize>").concat(jtextfield2.ge ttext()).concat("</q0:barsize><q0:showcodestring>").concat((string) jcombobox1.getselecteditem()).concat("</q0:showcodestring> <q0:title>").concat(jtextfield4.gettext()).concat("</q0:title></q0:code39></soapenv:body></soap env:envelope>"); hc.setdata(req); fw = new FileOutputStream(filename); Map RqHeader = new TreeMap(); RqHeader.put("Host", "www.webservicex.com"); RqHeader.put("Content-Length", String.valueOf(req.length())); RqHeader.put("SOAPAction", "http://www.webservicex.net/code39"); RqHeader.put("Content-Type", "text/xml;charset=utf-8"); String res=hc.getstringresult(rqheader); fw.write(base64.decode(res.substring(res.indexof("<code39result>")+14, res.indexof("</code39result>")))); fw.close(); 80

Irodalom/Linkek Java alapú webszolgáltatások (2002. Kiskapu) http://www.w3.org/tr/soap/ http://www.w3.org/tr/wsdl http://www.json.org/json-hu.html http://www.xfront.com/rest-web-services.html http://en.wikipedia.org/wiki/soap_(protocol) http://en.wikipedia.org/wiki/web_application_description_l anguage 81

SZOLGÁLTATÁS ORIENTÁLT ARCHITEKTÚRÁK (SOA) 82

83

Bevezetés A növekvő adatkereslettel és az infrastruktúra komplexitásával olyan új architektúrára van szükség, ami lehetővé teszi a vállalkozások számára a rugalmasságot és a kiterjeszthetőséget. Alapvetően kódmentes, önálló logikai adatintegrációs forma. IT (és üzleti) stratégiai eszköz. A Hogyan? helyett a Mit? -re koncentrálva az integrációs megoldások gyors fejlesztése valósítható meg. 84

SOA - tulajdonságok Jól definiált illesztő felületet ad, fekete doboz - elrejti implementációjának részleteit Nyílt szabványú mechanizmusokon át hívható Építőelemei: szolgáltatások A szolgáltatások önállóan is működőképesek, platform- és eszközfüggetlenek (tetszőleges technológiával készülhetnek), szabványos, jól definiált interfésszel rendelkeznek, és szabványos adatcsere- és kommunikációs protokollokkal érhetők el az elosztott hálózatokban. 85

SOA példa A megvalósításának egy példája: Web Services Szolgáltatások melyek összekapcsolódás mentesek - ahelyett, hogy a forráskódúkba ágyazva hívnák meg egymást, egy előre meghatározott protokollt használnak az egymással való kommunikáció leírásához: A WDSL (Web Description Services Language) a szolgáltatásokat a SOAP (Simple Object Access Protocol) pedig kommunikációs protokollokat írja le. 86

Szolgáltatások típusai Üzleti szolgáltatások: teljes vagy rész üzleti funkciókat valósítanak meg. ügyfélkezelés számlakezelés Technikai szolgáltatások: Az üzleti szolgáltatások megvalósításához az egységesítés és újrafelhasználás érdekében nélkülözhetetlenek olyan alacsonyabb szintű építőelemek, melyek az üzleti felhasználók számára nem láthatók. naplózás, archiválás, dokumentumtárolás, megjelenítési szolgáltatások 87

SOA Igérete A SOA nagy ígérete: az alkalmazások fejlesztési költsége az időben előre haladva a végtelenben a nullához közelit, mivel egyre több szolgáltatás áll rendelkezésre az újabb feladat megvalósításához. Ezáltal a fejlesztések egyre inkább csak szolgáltatások egymás után kötéséből állnak. Erre a célra használt eszközök a Business Process Management, BPEL, WS-CDL, WS-Coordination. 88

Programozók vs. szoftverfejlesztők A programozók az alkalmazások fejlesztéséhez olyan hagyományos nyelveket használnak, mint Java, C++, C, C#. Szoftverfejlesztők, szoftvermérnökök és a különböző üzleti folyamat szakértői egy megfelelő hangszerelést használva kapcsolják össze az egyedi SOA objektumokat. 89

SOA létrejöttének okai rugalmatlan üzleti megoldások integrációs nehézségek a szabványok hiánya miatt architekturális problémák ad hoc fejlődés pont-pont kapcsolatok heterogén szigetmegoldások infrastrukturális hiányok lecserélési korlátok növekvő modularitás 90

SOA technológia fejlődésének mérföldkövei 92

Enterprise Application Integration (EAI), mint a SOA elődje A vállalati szintű alkalmazásintegráció (EAI) a különféle vállalati szoftverrendszerek (például ERP, SCM, CRM szoftverek) belső integrációját jelenti. Ahhoz, hogy a különböző szoftvereket folyamat-orientált módon integráljunk, az egyszerű, alkalmazások közötti pontpont adatcsere nem elegendő. A megfelelő megoldás a több alkalmazást is érintő komplex folyamatok leképezése. 93

SOA A szolgáltatásorientált architektúra lazán kapcsolódó, és együttműködő szoftverszolgáltatások segítségével támogatja az üzleti és egyéb folyamatokat. 94

SOA Alapelvei Újrafelhasználhatóság Részletesség Modularitás Komponálhatóság (composability) Komponensalapúság Együttműködési képesség Szabványok közti együttműködés (fő és vállalat specifikusan) Szolgáltatások azonosítása és kategorizálása elérhetősége és átadása megfigyelése és követése. 95

SOA infrastruktúra részei Szolgáltatások Szolgáltatásbusz (ESB) Szolgáltatástár (Registry-Repository) Front-end rendszerek (felhasználók) IT Service Management Üzleti monitorozás 96

Szabványos megvalósítás 97

BPEL - Business Process Execution Language 98

SOA keretrendszer A SOA keretrendszerek olyan újrafelhasználható szolgáltatásokat tartalmaznak, (vállalati osztályok feladatai, műveltei), és kellően megtervezettek ahhoz, hogy méretük változtatható legyen a betöltésük során, illetve megfeleljenek a különböző típusú tartós alkalmazások követelményeinek. Keretrendszer használatával jó minőségű szolgáltatás fejleszthető, amit tervezési minták és hasznos gyakorlatok segítenek. 99

Keretrendszer - fejlesztőknek Egy egységes alapot használnak az alkalmazások, webszolgáltatások és portálok készítésére. Fejlesztik a termelékenységet azáltal, hogy fuzionálnak a tervezési mintákkal és a helyes tapasztalatokkal. Kevesebb kódot írnak azáltal, hogy kihasználják a keretrendszer nyújtotta lehetőségeit. A J2EE/.NET szabványok és specifikációjuk ismerete nem szükséges. Nem szükséges szakértőnek lenniük az objektumorientált tervezésben és tervezési mintákban ahhoz, hogy ezt használják. 100

Keretrendszer - vállalatoknak Katalizátor a szolgáltatásorientált architektúra eléréséhez és alacsony költséghez Ismételhetőséget és egy minimális szintű architekturális és tervezési merevséget Fejlett üzleti gyorsaságot moduláris megoldás eredményeként, amik könnyen változtathatóak, gyakran konfigurációs módosítások által. Nagyobb következetességet, előre láthatóságot, és jobb teszt megoldást. Fejlett fejlesztői mobilitást projektek között 101

Szolgáltatások életciklusa Elemzés és elvárások Az üzlet kezdetben inicializálja és prioritásuk szerint sorrendbe teszi az üzleti igényeket. Tervezés és fejlesztés A tervezési fázisban az üzleti elemzők szorosan együttműködnek a modellezőkkel a megfelelő eredmény érdekében. IT üzemeltetés Felelős a tesztelését, véghezvitelért, a megfelelő környezetért, a hálózati méretezésért, és az adatközpontért. Feladata a bevezetés, monitorozás és a következő szint biztosítása. Követelményei a függőségek nyomon követése, és kezelése, alkalmazások támogatásának biztosítása, bevezetése és az üzleti szolgáltatások menedzselése a termelésben. 102

Üzleti folyamatok felügyelete Business Process Management (BPM) A folyamatok pontos megértésének segítségével csökkenti a kockázatokat, még a megvalósítást megelőzően. Redundanciák és szűk keresztmetszetek azonosítására és kiküszöbölésére szolgál. Elősegíti folyamatok automatizálásának megvalósítását a kézi tevékenységek kiiktatásával és új üzleti szabályokat és folyamatokat hajt azonnali végre. Megjeleníti a folyamatok valós viselkedését a legfontosabb működési jellemzők mérésével. Hosszú futási idejű, szinkronizált és aszinkron üzleti folyamatok menedzselésére használják. 103

SOA előnyei Újrafelhasználhatóság fejlesztési, adminisztratív és üzemeltetési költség csökkenése egységes fejlesztési és üzemeltetési módszertan üzlet és IT hatékony együttműködés rugalmasak, átláthatóak, mérhetőek és monitorozhatóak vállalati/üzleti folyamatok Szabványok alkalmazása jellemzi 104

SOA - hátrányai Kiegészítő környezet és tervezés szükségeltetik Különböző platformok és termékek közötti együttműködés létrehozása lehetetlen megfelelő szakember hiányában Bevezetésének lépéseit nem szabad elkapkodnunk Ne csak a rövidtávú, hanem a hosszú távú szempontokat is vegyük figyelembe a döntéseinkben és építsük fel a szükséges tudást Legyen elkötelezett a cégmenedzsment a SOA irányába, illetve az IT és az üzlet legyenek egyenrangú felek, ismerjék meg egymást, alakítsanak ki közös nyelvet 105