SOAP és webservice.

Slides:



Advertisements
Hasonló előadás
4. alkalom – Hálózat Kezelés
Advertisements

Windows Communication Foundation (WCF)
RESTful Web Service tesztelése
Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
Hálózati és Internet ismeretek
HÁLÓZAT SOAP Hagyományos WCF/ASMX webszervizek.
Tempus S_JEP Számítógép hálózatok Összefoglalás Összefoglalás Összeállította: Broczkó Péter (BMF)
Client Access Server. Autodiscovery service Availability service (EWS) Offline Address Book (OAB) service Activesync service Outlook Web Access Public.
HÁLÓZATOK.
2007 ISP TANFOLYAM ÉSZAKNET, LH COM. USER AUTHENTIKÁCIÓ •MAC – IP •MAC – DHCP •MAC – IP – RADIUS •PPPoE – RADIUS.
Webszolgáltatások PHP-ben
HTML5 alapú fejlesztő és futtató környezet megvalósítása
2. Alkalmazási (applikációs) réteg
Bevezetés a Java programozásba
Osztott alkalmazások kezelése. VIR elosztott architektúra indítékai: - meglévő komponensek integrációja - WEB / Internet elterjedése (nemzetköziség) -
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
WSDL alapismeretek A WSDL (Web Services Description Language – Web szolgáltatások leíró nyelv) egy XML-alapú nyelv a Web szolgáltatások leírására és azok.
Hálózatkezelés, java.net Elek Tibor
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
Haladó Programozás A webszolgáltatás fogalma
Számítógépes hálózatok világa Készítette: Orbán Judit ORJPAAI.ELTE.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
SOAP alapismeretek A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül. Forrás:
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
Exchange Server 2007 Client Access Role
1 Simple Network Management Protocol, azaz egyszerű hálózatmenedzsment protokoll Takács Béla 2006.
Programrendszerek Fejlesztése 14/11 1. Az előző előadás tartalma: 2  Alkalmazásszerverek, alkalmazásszerverek felépítése  Java EE alkalmazások és modulok.
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
LOGO Webszolgáltatások Készítette: Kovács Zoltán IV. PTM.
Flash és PHP? De még mennyire! Kiss-Tóth Marcell
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Készítette: Lipp Marcell
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Java programozási nyelv Filekezelés
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
HTML5 alapú fejlesztő és futtató környezet megvalósítása
Gyakorlat 3. Számítógép hálózatok I.
Illés Zoltán ELTE Informatikai Kar
Java web programozás 11..
Az Internet alkalmazásai
Objektum orientált programozás
Webszolgáltatások Simon Balázs
Hálózat menedzsment Óravázlat Készítette: Toldi Miklós.
Illés Zoltán ELTE Informatikai Kar
Számítógépes hálózat vezérlőegységei.  Hálózati adapterkártya.  Modem.  HUB, megfelelő címre küldő elosztó eszköz.  Repeater („ismétlő”), azonos típusú.
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
Java web programozás 6..
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
.NET FRAMEWORK Röviden Krizsán Zoltán 1.0. Tulajdonságok I Rövidebb fejlesztés 20 támogatott nyelv (nyílt specifikáció) 20 támogatott nyelv (nyílt specifikáció)
Ingyenes, online technikai kurzusok Microsoft Virtual Academy.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
JSF – komponens alapú webfejlesztés. Mi az a JSF mire jó ● Egy szerver oldali, komponens alapú felhasználói felület keretrendszer ● Támogatja a webes.
Haladó Programozás A webszolgáltatás fogalma Szabványok és protokollok
Hálózatos programok készítése
Alkalmazott Informatikai Tanszék
Webszervizek (JAX-WS, és JAX-RS) bemutatása
Webtechnológiák információs redszerekben
Hálószolgáltatások (Web Services)
Webtechnológiák információs redszerekben
Alkalmazott Informatikai Tanszék
Web technológia alapjai
LINQ to Xml Xml kezelése Linq-val Zaklóczki Dávid
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hálózatkezelés Java-ban
Internet és kommunikáció
Internet és kommunikáció
Információtechnológiai alapismeretek
Előadás másolata:

SOAP és webservice

XML-API

XML használata Program-program kapcsolat egyik módja adóprogram előállítja az átvinni kívánt objektumot objektum bean-ként objektumból XML XML átvitele vevő kapott egy XML-t XML-ből átalakítás objektummá

Átvitel megoldása Adó rendszer (mint web-kliens) XML-ben a kérés válaszXML -> bean bean->XML XML-ben a kérés (HTTP request-ként) XML-ben a válasz (HTTP response-ként) Vevő rendszer (mint web-szerver) válaszbean -> XML XML->bean

Működés Kérés egy Javabean-ben képződik Szimulált böngésző bean-ből XML-t kell generálni szimulálni kell programmal a web-böngészőt HTTP-request készítés Szimulált böngésző visszaveszi a HTTP-response-ot az adattartalom egy XML-szerkezet XML-ből Javabean struktúrát kell készíteni

XML és Javabean kapcsolata public class TestBean implements java.io.Serializable { protected int foo; protected String bar; protected java.util.Date baz; protected Vector thingies; protected TestSubbean sub; … } <MarkTest> <foo>5</foo> <bar>This is the bar value</bar> <baz> <year>2003</year> <month>03</month> . . . </baz> <thingies> <item index=”0”>Moe</thing> <item index=”1”>LX</thing> </thingies> <sub> <name>Mark</name> <age>56</age> </sub> </MarkTest>

XML és Javabean kapcsolata public class TestBean implements java.io.Serializable { protected int foo; protected String bar; protected java.util.Date baz; protected Vector thingies; protected TestSubbean sub; … } <MarkTest> <foo>5</foo> <bar>This is the bar value</bar> <baz> <year>2003</year> <month>03</month> . . . </baz> <thingies> <item index=”0”>Moe</thing> <item index=”1”>LX</thing> </thingies> <sub> <name>Mark</name> <age>56</age> </sub> </MarkTest>

Bean-ből XML készítése try { TestBean b = new TestBean(); b.setFoo(5); b.setBar("This is the bar value"); ... b.setThingies(new String[] { "Moe", "LX"} ); TestSubbean sub = new TestSubbean(); sub.setName("Mark"); sub.setAge(56); b.setSub(sub); FileOutputStream fileOut = new FileOutputStream(”output.xml"); JOXBeanOutputStream joxOut = new JOXBeanOutputStream(fileOut); joxOut.writeObject("MarkTest", b); } bean előállítása ez jön létre! első szint neve kell! bean, mint bemenet

XML-ből bean készítése bemeneti xml try { FileInputStream in = new FileInputStream(”input.xml"); JOXBeanInputStream joxIn = new JOXBeanInputStream(in); TestBean testBean = (TestBean) joxIn.readObject( TestBean.class); } int foo = testbean.getFoo(); String bar = testbean.getBar(); ... „minta” osztályként megadva felhasználás

Átvitel HTTP-vel Külön Java-osztály a kezeléshez Request-készítés Response-várás URL dataURL = new URL(protocol, host, port, uri); URLConnection connection = dataURL.openConnection(); ByteArrayOutputStream byteStream = ...; byteStream.writeTo(connection.getOutputStream()); BufferedReader in = new BufferedReader( new InputStreamReader (connection.getInputStream()));

SOAP

Előzmények: WDDX Web Distribution Data Exchange </wddxPacket> <wddxPacket version=“1.0”> <header /> <data> <recordset rowCount=”1” fieldNames=“url,headLine,source”> <field name=“url”> <string>http://c.xxx.com/here.pl?x228879</string> </field> <field name=“headLine”> <string>Firefighters in Wyoming</string> <field name=“source”> <string>CNN</string> </recordset> </data> </wddxPacket>

Előzmények: XML-RPC <methodCall> <methodName>NumberToText</methodname> <params> <param> <value><i4>28</i4></value> </param> </params> </methodCall> <methodResponse> <params> <value><string>huszonnyolc</string></value> </methodResponse>

SOAP Simple Object Application Protocol MicroSoft találja ki, W3C is elfogadja 2000-től távoli programok együttműködésére „alrendszer”, azaz alsó szintű építőelem intranetben, Interneten működik: lehet SMTP, FTP, vagy közvetlen IP-alapú de általában HTTP-vel használják XML 2.0-t használ (névtér kell!) RPC jelleggel működik

Remote Procedure Call Összevetés a lokális eljárás hívással hívó és hívott eljárás más “végrehajtási kontextusban” Eljárás jellemzői utasítás szekvencia van egy belépés és egy visszatérési pontja hívó addig nem lép tovább, amíg nincs visszatérés

RPC specialitásai Kliens/szerver - összekapcsolódás (binding) hívó: kliens, hívott: szerver binding-ot a kliens kezdeményezi Paraméter átadás nincs cím szerinti hívás! Újabb végrehajtási hibák távoli gép hibái függetlenek a lokálistól Biztonsági problémák - 2 értelemben is hálózati kommunikáció megbízható legyen hálózati kommunikáció veszélyhelyzetei

Réteges szerkezet alkalmazás alkalmazás SOAP SOAP HTTP HTTP komm.verem

SOAP átvitel Boríték rendszerben Adás-vétel hasonló szerkezetben 3 névtér kell SOAP, XML-séma, XML-típusok törzs (body) mindenképpen kell itt a hívás ill. a válasz fejléc (header) nem szükséges fejlécben különleges lehetőségek

SOAP-kérés boríték POST /xxx/InventoryChck.jws HTTP/1.0 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 426 SOAPAction: “” <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“http://schemas.../encoding/” xmlns:xsd=“http://www.w3.org./.../XMLSchema” xmlns:SOAP-ENV=“http://sschemas.../envelope/” xmlns:xsi=“http://www.w3.org/.../XMLSchema-instance” > <SOAP-ENV:Body> <doCheck> <arg0 xsi:type=“xsd:string”>947-TI</arg0> <arg1 xsi:type=“xsd:int”>1</arg1> </doCheck> </SOAP-ENV:Body> </SOAP-ENV:Envelope> HTTP header HTTP body

SOAP-kérés boríték POST /xxx/InventoryChck.jws HTTP/1.0 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 426 SOAPAction: “” <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“http://schemas.../encoding/” xmlns:xsd=“http://www.w3.org./.../XMLSchema” xmlns:SOAP-ENV=“http://sschemas.../envelope/” xmlns:xsi=“http://www.w3.org/.../XMLSchema-instance” > <SOAP-ENV:Body> <doCheck> <arg0 xsi:type=“xsd:string”>947-TI</arg0> <arg1 xsi:type=“xsd:int”>1</arg1> </doCheck> </SOAP-ENV:Body> </SOAP-ENV:Envelope> HTTP header HTTP body

SOAP-válasz boríték HTTP/1.0 200 OK Content-Type: text//xml; charset=utf-8 Content-Length: 426 <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“http://schemas.../encoding/” xmlns:xsd=“http://www.w3.org./.../XMLSchema” xmlns:SOAP-ENV=“http://sschemas.../envelope/” xmlns:xsi=“http://www.w3.org/.../XMLSchema-instance” > <SOAP-ENV:Body> <doCheckResponse> <doCheckResult xsi:type=“xsd:boolean”>true</doCheckResult> </doCheckResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Fejlécek és szerepük mindenképpen végrehajtandó! <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“http://schemas.../encoding/” xmlns:xsd=“http://www.w3.org./.../ XMLSchema” xmlns:SOAP-ENV=“http://sschemas.../envelope/” xmlns:xsi=“http://www.w3.org/.../XMLSchema-instance” > <SOAP-ENV:Header> <t:Transaction xmlns:t=”.../...” SOAP-ENV:mustUnderStand=“1”> 123456 </t:Transaction> <p:Priority xmlns:p=”.../...” ...> ... </p:Priority> </SOAP-ENV:Header> <SOAP-ENV:Body> ... </SOAP-ENV:Body> </SOAP-ENV:Envelope> mindenképpen végrehajtandó!

Autentikáció <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“http://schemas.../encoding/” xmlns:xsd=“http://www.w3.org./.../ XMLSchema” xmlns:SOAP-ENV=“http://sschemas.../envelope/” xmlns:xsi=“http://www.w3.org/.../XMLSchema-instance” > <SOAP-ENV:Header> <ai:AuthenticationInfo xmlns:ai=”.../...” SOAP-ENV:mustUnderStand=“1” SOAP-ENV:actor=“urn:X-Skala:PartnerGateway”> <username>PartnerA</username> <password>xxabsoap</password> </ai:AuthenticationInfo> ... <SOAP-ENV:Header> </SOAP-ENV:Envelope>

Actor szerepe: lánc SOAP-üzenet módosítható! pl. naplózás webservice megvalósító WS ügynök k é r é s igénylő v á l a s z

Hibajelzések HTTP/1.0 500 OK Content-Type: text/xml; charset=utf-8 Content-Length: 426 <?xml version “1.0” encoding=“UTF-8” ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle=“http://schemas.../encoding/” xmlns:xsd=“http://www.w3.org./.../ XMLSchema” xmlns:SOAP-ENV=“http://sschemas.../envelope/” xmlns:xsi=“http://www.w3.org/.../XMLSchema-instance” > <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>AuthenticationFalure</faultcode> <faultstring>Failed to authenticate client</faultstring> <faultactor> urn:X-Skala:PartnerGateway</faultactor> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Webservice (webszolgáltatás)

Szolgáltatás nyilvántartó Általános szerkezet Szolgáltatás modell kliens keresés használat Szolgáltatás nyilvántartó Szolgáltató közzététel

Milyen szolgáltatást? Fő jellemzők Alsó átvitel mint egy metódus paraméterezés 2 módon hagyományos paraméterek (int, Hashtable, Vector, stb.) XML be/ki általában állapotmentes megoldás Alsó átvitel SOAP-pal

Webservice példák Autentikáció Irányítószám-helységnév Díjszámítás int check (String username, String password) int changePassword (String username, String oldpass, String newpass, String newpass2) Irányítószám-helységnév Vector findHelysegByIrszam (String irszam) Vector findIrszamByHelyseg (String helyseg) Vector getAllHelyseg () Díjszámítás HashMap getFee (int male, Date birthdate , int sum, int year)

Díjszámítás-webservice kimenete HashMap getFee (int male, Date birthdate , int sum, int year) e_date 1 e_sum 2 o_age 54 o_age 34 o_annual 34560 o_monthly 2880 o_monthlyCheck 3168

Webservice jelentősége Intranetben szolgáltatások az intranet tetszőleges helyén igénybevehetők tetszőleges nyelven központi karbantartás Ez B2B kommunikáció extranet kapcsolatokon a lényeges info megy át

Webservice, mint B2B kapcsolat intranet tűzfal www.xxx.hu Internet “webservice” szerver ügyfél gépe vagy intranetje

Műveletek típusa Kérés-válasz (pl. díjszámítás) legáltalánosabb Csak válasz (pl. időpont lekérdezés) nincs bemenő paraméter Jelzés (pl. időtúllépés a keresésben) a szolgálató kezdeményezi milyen címre jöjjön: előtte címbeadás Jelzés-válasz (pl. időtúllépés hatására leállító akció) jelzésre a kliens visszaszól hasonló problémák, mint a jelzésnél

Szolgáltatás leírása Külön nyelv WSDL: WebService Definition Language XML forma sok komponensből Elemei mit csinál adat és protokollformátumok protokollra jellemző címek

WSDL elemei 0. definition: a leírás neve, így kereshető 1. types: milyen típusok szerepelnek egyáltalán 2. message: be/ki egységek 3. portType: műveletek csoportja, átvitel-független operation: konkrét név, általában több is 4. binding: hogyan kapcsolódik a SOAP-hoz 5. service: kapuk csoportjának neve port: hol érhető el a szolgáltatás

WSDL fejléce <?xml version=“1.0” ?> <definitions name=“PriceCheck” targetNamespace= “http://host:port/axis/srv/PriceCheck” xmlns:pc= “http://host:port/axis/srv/PriceCheck/” xmlns:xsd=“http://www.w3c.org/2001/XMLSchema/” xmlns:soap= “http://schemas.xmlsoap.org/wsdl/soap/” xmlns= “http://schemas.xmlsoap.org/wsdl/” > alapértelmezett névtér

WSDL elemzése 1 2 3 4 5 ... <types> <xsd:element name=“price” type=“xsd:double” /> ... </types> <message name=“PriceCheckRequest”> <part name=“sku” type=“xsd:string” /> </message> <portType name=“PriceCheckPortType”> <operation name=“checkPrice” parameterOrder=“...”> <documentation>Szöveges dokumentáció</documentation> <input message=“pc:PriceCheckRequest” /> <binding name=“PriceCheckSOAPBinding” type=“pc:PriceCheckPortType”> <http:binding verb=”GET" /> <soap:binding ... <operation name =“checkPrice” ... <service name=“PriceCheckService”> <port name=“PriceCheck” binding=“pc:PriceCheckSOAPBinding”> <soap:address location=“http://host:port/axis/srv/PriceCheck”/> 1 2 3 4 5

Valós példa Irányítószám-helységnév findIrszamByHelyseg szolgáltatások (néhány) Vector findHelysegByIrszam (String irszam) Vector findIrszamByHelyseg (String helyseg) Vector getAllHelyseg () findIrszamByHelyseg ha értelmes a helységnév ha nem: hibajelzés (NO_SUCH_RECORD, …) Vácduka 2167 Budapest 1011,. . . 1239

Definició

Valós példa Kimenet kódolás Kimeneti példák definició elvileg Vector findIrszamByHelyseg (String helyseg) definició a valóságban HashMap findIrszamByHelyseg (String helyseg) Kimeneti példák o_result OK o_1 1011 o_2 1012 o_29 1239 o_result NO_SUCH_RECORD

Típusok

Üzenetek

Kapu és művelet

Összekötés az alsóbb szinttel

Szolgáltatás

WSDL bővítése Egyéb kapcsolási módok GET/POST használata SOAP (eddig) közvetlen web használata (GET v. POST) GET/POST használata elönyös a webes akcióknál http://www.xxx.hu/findIrszamByHelyseg?helyseg=“Budapest”

Webservice készítés Ingyenes rendszerek Apache-Axis http://ws.apache.org/axis/ TheMindElectric/GLUE http://www.themindelectric.com/glue/index.html

Webservice használata Használati formák Java programból természetes Windows-XP-ben már az Excel-ből is PERL interface van PHP interface van Központi karbantartás interface kidolgozása (pl. GUI formában)