Professional Documents
Culture Documents
Παγκόσμιος Ιστός
Σήμερα τα δεδομένα
ξ γ μ η μ ρφή
εξάγονται με τη μορφή
ιστοσελίδων
Η επόμενη γενιά του Παγκόσμιου
Ιστού δίνει έμφαση στα πραγματικά
δεδομένα όχι σε κείμενο
1
11/27/2008
To Web
Browsers
Mac
M PC Linux
PC Li PC Windows
PC Wi d CE/Palm
CE/P l Solaris
S l i
Addressing Scheme
& Format e.g. HTML, Applets
& Common Protocol
Servers/Gateways
Data Driven Web
Machine/Browser/Server
Addressing Scheme e.g. DNS or P2P?
& Format e.g. XML
& Common Protocols e.g. SOAP
2
11/27/2008
Εξέλιξη του παγκόσμιου ιστού
y Οι εταιρίες χρειάζονται standard μηχανισμούς ώστε να μπορούν
y Να δημοσιεύσουν
y Να διαφημίσουν
y Και να ανακαλύψουν
y Συνδέσμους προς πραγματικές πηγές δεδομένων και όχι ιστό‐σελίδες
y Το πρώτο βήμα είναι η αναπαράσταση δεδομένων …
Ο Client και ο Server πρέπει να
καταλάβουν ο ένας τον άλλον
Wieviel Uhr ?
ist es? Server
Client
3
11/27/2008
Ο Client και ο Server συμφωνούν σε
μια κοινή γλώσσα
Client Server
Ο client κωδικοποιεί την πληροφορία σε αυτήν
την «κοινή γλώσσα», ο server αποκωδικοποιεί
την πληροφορία
Decode
Encode
Wieviel Uhr What’s the Quelle heure est‐il?
ist es? time?
Client Server
4
11/27/2008
XML‐RPC χρησιμοποιεί την XML ως την
«κοινή γλώσσα» για τη μετάδοση των
δεδομένων
Encode Decode
Java Java
C++ XML C++
Python Python
etc. etc.
Client Server
XML‐RPC?
y Σύνολο προδιαγραφών και εφαρμογών που επιτρέπουν σε
λογισμικό που τρέχει σε ανόμοια λειτουργικά συστήματα,
σε διαφορετικά περιβάλλοντα να πραγματοποιεί κλήσεις
διαδικασίας μέσω του Διαδικτύου.
Διαδικτύου
y Απομακρυσμένη κλήση διαδικασιών που χρησιμοποιεί το
HTTP για τη μεταφορά και την XML για την κωδικοποίηση
των δεδομένων.
y Έχει σχεδιαστεί με το στόχο να είναι όσο το δυνατόν
απλούστερο, επιτρέποντας ταυτόχρονα τη μετάδοση και
επεξεργασία
ξ ργ σύνθετων δομών
μ δεδομένων.
μ
5
11/27/2008
Ανταλλαγή δεδομένων
y Αυτή η εστίαση στην αναπαράσταση και ανταλλαγή δεδομένων με χρήση της
XML έχει οδηγήσει σε δύο κύριες ερευνητικές κατευθύνσεις:
y Το Σημασιολογικό Ιστό (Semantic Web): μια επέκταση του τρέχοντος Παγκόσμιου
Ιστού όπου δίνεται στην πληροφορία ένα σαφώς καθορισμένο νόημα,
καθιστώντας δυνατή αποτελεσματικότερη συνεργασία ανθρώπων και υπολογιστών
y Εστιάζει στην αναπαράσταση των δεδομένων
y επιδιώκει να δημιουργήσει έναν Ιστό επεξεργάσιμο από μηχανές
y W3C και μεγάλο αριθμός ερευνητικών και βιομηχανικών συνεργατών
y Βασίζεται στο Resource Description Framework (RDF)
y Την έννοια της Υπηρεσίας Ιστού ‐ Web Service: ένα σύστημα λογισμικού
σχεδιασμένο να υποστηρίζει την διαλειτουργική αλληλεπίδραση μηχανής με
μηχανή μέσω ενός δικτύου
y Οι υπηρεσίες ιστού παρέχουν τους κατάλληλους ορισμούς (και την υποδομή) ώστε να
επιτρέψουν σε εφαρμογές να ανταλλάσσουν XML μηνύματα
Σημασιολογικός Ιστός και Υπηρεσίες
Παγκόσμιου Ιστού
y Αλληλοσυμπληρώνονται:
y Οι υπηρεσίες Ιστού ικανοποιούν τις άμεσες ανάγκες τεχνολογίας
y Ο σημασιολογικός Ιστός έχει τη δυνατότητα για τη μελλοντική
ανάπτυξη
y “Semantic Web Enabled Web Services (SWWS)”
y θα μετασχηματίσει τον Ιστό από μια στατική συλλογή των πληροφοριών σε
μια κατανεμημένη υπολογιστική συσκευή βάσει της τεχνολογίας
σημασιολογικού Ιστού, κάνοντας το περιεχόμενο στον Παγκόσμιο Ιστό
επεξεργάσιμο και ερμηνεύσιμο από μηχανές
6
11/27/2008
Τι είναι Web Service?
y Web services είναι προγράμματα λογισμικού που καθιστούν δυνατή την επικοινωνία
απομακρυσμένων εφαρμογών μέσω XML μηνυμάτων
Request
XML
Response
XML
Ένα απλό Web Service
y Ένα ελάχιστο web service αποτελείται από 3 συνιστώσες :
y Την υπηρεσία: μια συνιστώσα λογισμικού ικανή να επεξεργάζεται ένα
XML έγγραφο.
y Ο μηχανισμός μεταφοράς, η γλώσσα προγραμματισμού, κλπ δεν είναι
σημαντική
y Το έγγραφο: το XML έγγραφο που περιέχει όλη την πληροφορία για τη
συγκεκριμένη εφαρμογή
y Τη διεύθυνση: περιγράφει το πρωτόκολλο (π.χ. TCP ή HTTP) και τη
δικτυακή διεύθυνση που μπορεί να χρησιμοποιηθεί για την πρόσβαση
στην υπηρεσία
y Ονομάζεται και «port‐reference»
y Στην πράξη χρειάζεται κι ένας «φάκελος» (π.χ. SOAP)…
y Προσθέτει πράγματα όπως πληροφορίες ασφάλειας / δρομολόγησης χωρίς
αλλαγή του περιεχομένου του μηνύματος
7
11/27/2008
Χαρακτηριστικά Web Service
y Υποστήριξη ανταλλαγής εγγράφων: XML αρχεία που περιέχουν
πληροφορία προσανατολισμένη σε έγγραφο (document‐oriented) ή
προσανατολισμένη σε διαδικασίες (procedural‐oriented)
λ δ δ ( d l d)
y Προτυποποίηση: βασίζεται στην προτυποποιημένη γλώσσα XML κι που
υποστηρίζεται από τις μεγαλύτερες διεθνώς τεχνικές εταιρίες
τεχνολογίας
y Διαλειτουργικότητα: η XML χρησιμοποιείται στο επίπεδο ανταλλαγής
δεδομένων
y Loosely Coupled: ο διαχωρισμός της διεπαφής του web server (WSDL)
από την υλοποίηση τους αποσυνδέει τη λογική του client και τη λογική
του server
y καθιστά πολύ ευκολότερη την αλλαγή μιας εφαρμογής χωρίς να χρειάζεται η
ενημέρωση του κώδικα του πελάτη
y Υποστηρίζει απομακρυσμένη κλήση διαδικασιών (Remote Procedure
Call – RPC): (εγγενής στο SOAP) μέσω ενός XML‐based πρωτοκόλλου
Πρωτόκολλα υπηρεσιών Παγκόσμιου
Ιστού (Web Services)
y Πρωτόκολλα που βασίζονται
σε XML
y Ανταλλαγή μηνυμάτων
y SOAP, XML‐RPC Service
Registry
y Περιγραφή υπηρεσιών
y WSDL
Find Publish
y Ανακάλυψη υπηρεσιών (UDDI) (UDDI)
y UDDI
Describe
y Πολλά άλλα (WSDL)
Service Service
y BPEL, WSRF, WS‐Addressing Consumer Provider
Bind
y SOAP, WSDL και UDDI (SOAP)
είναι de‐facto πρότυπα
8
11/27/2008
Δομή Web Service
Envelope
(SOAP) XML XML Language
Specific
XML e.g. Java
Web
Service SOAP
Interface Server
(WSDL)
Envelope
p
(SOAP)
XML
XML
XML
Envelope
(SOAP)
XML XML Java
Soap Client
XML
Java
Web
Service SOAP
Interface Server
(WSDL)
Java
XML
Soap Client
Envelope
(SOAP)
Παράδειγμα όταν οι υλοποιήσεις Client και
XML XML Service είναι σε Java
9
11/27/2008
SOAP
y Simple Object Access Protocol (SOAP)
Simple Object Access Protocol (SOAP)
y Η γενική ιδέα είναι ίδια όπως αυτή του XML‐RPC
y Φάκελος για την ανταλλαγή XML μηνυμάτων
y Δεν καθορίζει μοτίβο ανταλλαγής μηνυμάτων
y Δεν περιορίζεται σε request/response
y Δεν προσδιορίζει πρωτόκολλο για τη μεταφορά
y Συνήθως HTTP, αλλά μπορεί να είναι οποιοδήποτε πρωτόκολλο μπορεί
Συνήθως HTTP αλλά μπορεί να είναι οποιοδήποτε πρωτόκολλο μπορεί
να μεταφέρει ένα SOAP μήνυμα
y Μοιάζει πολύ με (X)HTML έγγραφο…
SOAP Έγγραφο (Μήνυμα)
y Ένα SOAP μήνυμα είναι ένα XML
SOAP Envelope έγγραφο που περιέχει τα
(Required) ακόλουθα στοιχεία:
ακόλουθα στοιχεία:
y Envelope
SOAP Header y Προσδιορίζει το XML έγγραφο ως
(Optional) SOAP μήνυμα (υποχρεωτικό)
y Header (προαιρετικό)
y Πληροφορίες για το αίτημα στο SOAP
Extension Information body, π.χ. πληροφορίες ασφάλειας,
e.g. routing, security προφίλ χρήστη, κλπ (προαιρετικό)
y Body (υποχρεωτικό)
SOAP Bodyy y Request και response σε XML μορφή
(Required) y Fault
l
y Πληροφορία για σφάλματα που
μπορεί να έχουν προκύψει κατά την
Application Data επεξεργασία ενός μηνύματος
e.g. request, response (προαιρετικό)
error
10
11/27/2008
SOAP Request (HTTP)
POST /InStock HTTP/1.1
Host: www.stock.org HTTP
Content-Type: application/soap+xml; charset=utf-8
Header
Content Length: nnn
Content-Length:
<?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
Envelope
<soap:Header>
... (optional header information)
</soap:Header>
SOAP
Header
<soap:Body xmlns:m="http://www.stock.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice> SOAP
</soap:Body> Body
</soap:Envelope>
Το envelope βασίζεται στο HTTP
SOAP Response (HTTP)
HTTP/1.1 200 OK
Content-Type: application/soap; charset=utf-8
Content-Length: nnn
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle ="http://www.w3.org/2001/12/soapencoding">
<soap:Header>
... (optional header information)
</soap:Header>
11
11/27/2008
SOAP Faults
y SOAP fault : στέλνεται σε περίπτωση που προκύψει κάποιο
σφάλμα
<Body xmlns=http://www.w3.org/2001/12/soap-envelope>
<Fault>
<faultcode>Client</faultcode>
<faultstring>Something went wrong</faultstring>
<detail>Application specific error information</detail>
</Fault>
</Body>
y Fault Code
y Client – «Κακή» διαμόρφωση μηνύματος από τον client
y Server – Πρόβλημα στον server οπότε δεν μπορούσε να προωθηθεί το
μήνυμα
y VersionMismatch – Μη έγκυρο namespace για το SOAP envelope
y MustUnderstand – Μη κατανόηση στοιχείου επικεφαλίδας
WS‐Addressing
y Για την αποφυγή εξάρτησης από το HTTP για απόκτηση
ης
διεύθυνσης
y Επιτρέπει την ενσωμάτωση πληροφορίας
διευθυνσιοδότησης στην SOAP επικεφαλίδα
y Π.χ. To, From, FaultTo
y Τέτοιου τύπου τιμές μπορούν επίσης να μεταφερθούν
μέσα στο SOAP body με τη χρήση της δομής
EndpointReference xml
y Ορίζει πως ένα EndpointReference μπορεί να αντιστοιχηθεί
σε ένα σύνολο από SOAP headers.
12
11/27/2008
SOAP Request
(HTTP & WS‐Addressing)
POST /StockMarketService HTTP/1.1
Host: www.stock.org
Content-Type: application/soap+xml; charset=utf-8 HTTP
Content Length: nnn
Content-Length: Header
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap=http://www.w3.org/2001/12/soap-envelope
xmlns:wsa="http://www.w3.org/2005/08/addressing" SOAP
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
Envelope
<soap:Header>
<wsa:MessageID>urn:uuid:1</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://example.com/business/client</wsa:Address> SOAP
</wsa:ReplyTo>
<wsa:To>http://www.stock.org/StockMarketService</wsa:To>
Header
<wsa:Action> http://www.stock.org/GetStockMarket</wsa:Action>
http://www stock org/GetStockMarket</wsa:Action>
</soap:Header>
<soap:Body xmlns:m="http://www.stock.org/stock">
<m:GetStockMarket>
<m:MarketName>DOW</m:MarketName> SOAP
</m:GetStockMarket>
</soap:Body>
Body
</soap:Envelope>
SOAP Response
(HTTP & WS‐Addressing)
HTTP/1.1 200 OK
Content-Type: application/soap; charset=utf-8
Content-Length: nnn
<soap:Envelope
xmlns:soap=http://www.w3.org/2001/12/soap-envelope
xmlns:wsa="http://www.w3.org/2005/08/addressing"
soap:encodingStyle ="http://www.w3.org/2001/12/soapencoding">
<soap:Header>
<wsa:MessageID>urn:uuid:2</wsa:MessageID>
<wsa:RelatesTo>urn:uuid:1</wsa:RelatesTo>
<wsa:To>http://example.com/business/client</wsa:To>
<wsa:Action> http://www.stock.org/GetStockMarketResponse</wsa:Action>
</soap:Header>
13
11/27/2008
SOAP: Γιατί τόσος ντόρος;
y XML based
y Απλό και ελαφρύ
φρ
y Σε σύγκριση με CORBA, RMI, DCOM, κλπ.
y Ανεξαρτησία από γλώσσες προγραμματισμού και λειτουργικά
συστήματα
y Αντίθετα από τεχνολογίες όπως RMI (Java) ή DCOM (Windows)
y Ανεξαρτησία από πρωτόκολλο μεταφοράς μηνυμάτων
y Με WS
Με WS‐Addressing
Addressing
y Επεκτάσιμο
y Πρόσθετα χαρακτηριστικά μπορούν να περιληφθούν στην επικεφαλίδα
y Υποστήριξη κατασκευαστών, εταιριών ανάπτυξης λογισμικού
y IBM, Microsoft, Apache, HP, Sun, etc
WSDL
y Web Service Definition Language (WSDL)
y Γλώσσα περιγραφής Υπηρεσιών Παγκόσμιου Ιστού
y Τα WSDL έγγραφα περιγράφουν:
y Τι μπορεί να κάνει η υπηρεσία
y Που βρίσκεται η υπηρεσία
y Πως μπορεί να κληθεί η υπηρεσία
y Γενικά διαθέσιμα ως ιστοσελίδες
y Π.χ. http://bouscat.cs.cf.ac.uk/someService?WSDL
y Παρόμοια με γλώσσες περιγραφής διεπαφών όπως CORBA
Π ό λώ φή δ φώ ό CORBA
Interface Definition Language (IDL) αλλά περισσότερο
ευέλικτη
14
11/27/2008
Παράδειγμα πρωτοκόλλων
επικοινωνίας για WSDL
Client Service
WSDL Έγγραφα (1)
y Types
Types y Ποιοι τύποι δεδομένων θα μεταδοθούν
y Messages
Messages y Ποια μηνύματα θα μεταδοθούν
y Port Types
y Ποιες λειτουργίες (functions)
Port Types
υποστηρίζονται/παρέχονται
y Bindings
y Με ποιο τρόπο θα μεταδοθούν τα
Με ποιο τρόπο θα μεταδοθούν τα
Bindings μηνύματα
y Λεπτομέρειες πρωτοκόλλου μηνυμάτων
Service (π.χ. SOAP)
y Service
y Που βρίσκεται η υπηρεσία
15
11/27/2008
WSDL Έγγραφα (2)
• Μια υπηρεσία (service) έχει πολλά ports
Service
• Ένα port ορίζει ένα endpoint στο
οποίο στέλνονται μηνύματα
ί έλ ύ
Port
• Π.χ. http://cs.cf.ac.uk/service
Port
(http://host/)
• Κάθε port συνδέεται με :
Binding
(e.g. SOAP)
Binding • Ένα πρωτόκολλο μηνυμάτων
• Π.χ. SOAP
• Ένα port type
Abstract
Port Type Definition • Τα port types προσδιορίζουν:
p yp ρ ρζ
• Όνομα λειτουργίας
(in) Message Operation(s) (out) Message
• Τύπο εισερχόμενων μηνυμάτων
• Τύπο εξερχόμενων μηνυμάτων
• Οι τύποι ορίζονται με τη χρήση XML
Schemas
WSDL Έγγραφα (3)
16
11/27/2008
WSDL Έγγραφα (4)
<message name="getBookRequest">
<part name="param" element="isbn"/>
</message>
<message name="getBookResponse">
<part name="resp" element="book"/> Αφαιρετικός (abstract)
</message> ορισμός
της υπηρεσίας
<portType name="bookPortType">
<operation name="getBook">
<input message="getBookRequest"/>
<output message="getBookResponse"/>
</operation>
</portType>
WSDL Έγγραφα (5)
<binding type="bookPortType" name="bookBind">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
p p p g p p
<operation>
<soap:operation soapAction="getBook"/>
<input> <soap:body use="literal"/> </input>
<output> <soap:body use="literal"/> </output>
</operation>
</binding>
<service
i name="Hello_Service">
" ll S i "
<port binding="bookBind" name="bookPort">
<soap:address location="http://localhost/bookservice"/>
</port>
</service>
17
11/27/2008
UDDI
y Universal Description, Discovery and Integration (UDDI)
Protocol
y Αρχικά Microsoft, IBM και Ariba
y Ευρετήριο για business services
y Όπως ένας τηλεφωνικός κατάλογο για τις υπηρεσίες Ιστού, αν και δεν
περιορίζεται στις υπηρεσίες Ιστού
y XML‐based
y UDDI κατάλογος αποτελείται από 3 συνιστώσες
y White Pages ‐
g Επιχειρήσεις
χ ρή ς
y Yellow Pages – Υπηρεσίες που παρέχονται από τις επιχειρήσεις
y Green Pages – Με ποιον τρόπο πραγματοποιείται η πρόσβαση σε
αυτές τις υπηρεσίες
18
11/27/2008
UDDI – White Pages
y Πληροφορίες για επιχειρήσεις
y Όνομα
y Περιγραφή επιχείρησης
y Πιθανόν σε πολλαπλές γλώσσες
y Πληροφορίες επικοινωνίας
y Διεύθυνση
y Τηλέφωνο
y κλπ
λ
y Άλλες πληροφορίες
y Dun & Bradstreet Universal Numbering System number (D.U.N.S)
UDDI Data Model (1)
<businessEntity
businessKey=“ABCD”>
<name>BBC</name>
<description>
...
</description>
</businessEntity>
19
11/27/2008
UDDI – Yellow Pages
y Ταξινόμηση υπηρεσιών/επιχειρήσεων με βάση
ημ ς ηγ ρ ς
τυποποιημένες κατηγορίες
y Standard Industrial Classification (SIC)
y 7361 = Services ‐ Employment Agencies
y 7385 = Services ‐ Telephone Interconnect Systems
y United Nations Standard Products and Services Code (UNSPSC)
y 93141800 = Employment
y 83111603 = Cellular telephone services
p
y Μια επιχείρηση μπορεί να παρέχει πολλές υπηρεσίες
UDDI Data Model (2)
<businessService
serviceKey=“EFGH”
businessKey=“ABCD”>
<name>News</name>
<businessEntity </businessService>
businessKey=“ABCD”>
<name>BBC</name>
<description>
...
</description>
<businessService
</businessEntity>
serviceKey=“IJKL”
businessKey=“ABCD”>
<name>Weather</name>
</businessService>
20
11/27/2008
UDDI – Green Pages
y Πως μπορεί να γίνει η πρόσβαση σε μια υπηρεσία
y Πληροφορία σχετική με Web Service
y Διεύθυνση Web Service
y Παράμετροι
y Πληροφορία που δεν σχετίζεται με Web Service
y E‐mail
y FTP
y CORBA
y Τηλέφωνο
y Μια υπηρεσία μπορεί να έχει πολλά bindings (π.χ. ένα
Μ ί ί έ λλά bi di ( έ web
b
service binding, ένα τηλεφωνικό binding)
UDDI Data Model (3)
<businessEntity <bindingTemplate>
businessKey=“ABCD”> bindingKey=“MNOP”
<name>BBC</name> serviceKey=“EFGH”>
<description> <description>
p
... Web Service
</description> </description>
</businessEntity> <accessPoint>
http://bbc.co.uk/news
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelKey=”QRST”/>
<businessService </tModelInstanceDetails>
serviceKey=“EFGH” </bindingTemplate>
businessKey=“ABCD”>
<name>News</name>
</businessService> <bindingTemplate>
bindingKey=“IJKL”
serviceKey=“EFGH”>
<description>
Web Page
</description>
<accessPoint>
http://news.bbc.co.uk
</accessPoint>
</bindingTemplate>
21
11/27/2008
UDDI ‐ tModels
y Δεν υπάρχει άμεση/ρητή σύνδεση μεταξύ UDDI και WSDL
y Το binding template περιέχει πληροφορίες για το σημείο πρόσβασης
στην υπηρεσία
y Δεν περιέχει πληροφορία για τη διεπαφή με το σημείο πρόσβασης
y tModel (Technical Model) συσχετίζει την περιγραφή μιας
διεπαφής με ένα binding
y e.g. WSDL
y Πολλαπλά bindings μπορεί να αναφέρονται στο ίδιο interface
(tModel)
y Π.χ. η αεροπορική βιομηχανία μπορεί να ορίσει μια
τυποποιημένη διεπαφή (interface) κράτησης εισιτηρίων,
και πολλαπλές αεροπορικές εταιρίες να χρησιμοποιούν/να
εφαρμόζουν αυτή τη διεπαφή
UDDI Data Model (4)
<businessEntity <bindingTemplate>
businessKey=“ABCD”> bindingKey=“MNOP”
<name>BBC</name> serviceKey=“EFGH”>
<description> <description>
... Web Service
</description> </description>
</businessEntity> <accessPoint>
http://bbc.co.uk/news
</accessPoint>
<tModelInstanceDetails>
<businessService <tModelInstanceInfo tModelKey=”QRST”/>
serviceKey=“EFGH” </tModelInstanceDetails>
businessKey=“ABCD”> </businessTemplate>
<name>News</name>
</businessService>
<tModel tModelKey=”QRST”>
<overviewDoc>
<overviewURL>
http://bbc.co.uk/news?wsdl
</overviewURL>
</overviewDoc>
</tModel>
22
11/27/2008
UDDI Query
<find_business>
<findQualifiers>
<findQualifier>
<fi dQ lifi >
uddi:uddi.org:findQualifier:exactMatch
</findQualifier>
</findQualifiers>
<name>
BBC
</name>
</find_business>
y Επίσης find_service, find_binding, find_tModel
y Σημείωση: Λεξικολογική αναζήτηση
Όλα μαζί
<businessEntity>
<name>Book Club</name>
<businessService>
<name>Book Service</name>
Service <bindingTemplate>
<description>Web Service</description>
Registry <tModelInstanceDetails>
<tModelInstanceInfo tModelKey=”QRST”/>
<find_service>
</tModelInstanceDetails>
<findQualifiers>
</bindingTemplate>
<findQualifier>
exactMatch
Find Publish
<tModel tModelKey=”QRST”>
<overviewDoc>
</findQualifier> (UDDI) (UDDI)
<overviewURL>
</findQualifiers>
http://cs.cf.ac.uk/bookservice?wsdl
<name>
</overviewURL>
Book Service
</name>
Describe </overviewDoc>
</tModel>
</find_service> (WSDL) </businessService>
Service Service
</businessEntity>
Consumer Provider
Bind
(SOAP) http://cs.cf.ac.uk/bookservice
23
11/27/2008
Όλα μαζί
<message name="getBookRequest">
<part name="param“ element="isbn"/>
</message>
<message name="getBookResponse">
<part name="resp" element="book"/>
</message>
<portType name="bookPortType">
Service
<operation
< ti name="getBook">
" tB k">
Registry
<input message="getBookRequest"/>
<output message="getBookResponse"/>
</operation>
</portType>
Find Publish
<binding type="bookPortType" name="bookBind">
<soap:binding style="document"
(UDDI) (UDDI)
transport=http://schemas.xmlsoap.org/soap/http
<operation>
<soap:operation soapAction="getBook"/>
Describe
<input> <soap:body use="literal"/> </input>
<output> <soap:body use="literal"/> </output>
(WSDL)
</operation>
</binding>
Service Service
<service name="Hello_Service">
Consumer <
<portt bi "b kBiProvider
binding="bookBind"
di d" name="bookPort">
"b kP t">
Bind<soap:address location="http://cs.cf.ac.uk/bookservice"/>
</port>
(SOAP)
</service> http://cs.cf.ac.uk/bookservice
Όλα μαζί
Service
Registry
Find Publish
(UDDI) (UDDI)
Describe
(WSDL) <soap:Envelope
Service Service
<soap:Body>
<soap:Envelope <getBookResponse>
<soap:Body> Consumer Provider
<book>
<getBookRequest> Bind <title>Harry Potter</title>
<isbn>0004702670</isbn> (SOAP) <author>J.K. Rowling</author>
http://cs.cf.ac.uk/bookservice
</getBookRequest> <date>2005-10-05</date>
</soap:Body> </book>
</soap:Envelope> </getBookResponse>
</soap:Body>
</soap:Envelope>
24
11/27/2008
Ανακεφαλαίωση
y XML
y Βάση για όλα τα πρωτόκολλα υπηρεσιών Παγκόσμιου ιστού
y Απλή, μορφή κειμένου, ανεξαρτησία από πλατφόρμες, ευρέως
χρησιμοποιούμενη
ύ
y SOAP
y Απλό πρωτόκολλο για την ανταλλαγή XML μηνυμάτων
y Επεκτάσιμο μέσω της επικεφαλίδας
y WSDL
y Γλώσσα για περιγραφή/ ορισμό web services
y Operations
y Inputs/Outputs
y UDDI
y Κατάλογος για υπηρεσίες
y Σύνθετες δομές δεδομένων
Τι χρειαζόμαστε για ανάπτυξη
Web Service
y SOAP Engine: Axis
y http://ws.apache.org/axis/
y Java Web Server: Tomcat
y http://jakarta.apache.org/tomcat/
25
11/27/2008
Εγκατάσταση Tomcat και Axis server
y Εγκατάσταση του Tomcat
y http://jakarta.apache.org/tomcat/
y Υποθέτουμε ότι η εγκατάσταση γίνεται στο φάκελο /usr/tomcat/
y Εγκατάσταση του Apache Axis
y http://ws.apache.org/axis/
y Υποθέτουμε ότι η εγκατάσταση γίνεται στο φάκελο /usr/axis
y Στην εγκατάσταση του Tomcat, υπάρχει ένας φάκελος όπου
τοποθετούνται οι Web εφαρμογές (/usr/tomcat/webapps)
y Εκεί μέσα αντιγράφουμε τον φάκελο του Axis /usr/axis/webapps/axis
μ γρ φ μ φ pp
y Αρχικοποιούμε τις μεταβλητές περιβάλλοντος και ξεκινάμε τον Tomcat
y JAVA_HOME μεταβλητή περιβάλλοντος που περιέχει το φάκελο όπου είναι
εγκατεστημένη η Java
y τρέχει τοπικά στο port 8080 (by default)
y http://localhost:8080/
Εγκατάσταση Tomcat και Axis server
y Πηγαίνουμε στην Axis home page http://localhost:8080/axis/
y Πρέπει να εμφανιστεί η παρακάτω οθόνη
26
11/27/2008
Εγκατάσταση Tomcat και Axis server
y Πηγαίνουμε στην επιλογή Validate
y Επικύρωση τοπικών ρυθμίσεων
y Αν υπάρχουν προβλήματα εμφανίζεται μια λίστα αυτών καθώς και
προτεινόμενες λύσεις
y Προσπαθούμε να επιλύσουμε κάθε πρόβλημα και φορτώνουμε τη σελίδα
συνεχώς μέχρι να τα έχουμε λύσει όλα
y Συνήθως λείπει ένα αρχείο που χρειάζεται για να τρέξει ο Axis activation.jar.
y Κατεβάζουμε το αρχείο από το link και το τοποθετούμε στο φάκελο lib του
tomcat
y Χρειάζεται επανεκκίνηση του tomcat
Εγκατάσταση Tomcat και Axis server
27
11/27/2008
Εγκατάσταση Tomcat και Axis server
y Στον φάκελο /usr/tomcat/webapps υπάρχει ένα WEB‐INF sub‐
directory που περιέχει βασικές πληροφορίες ρύθμισης και sub‐
directories που περιέχουν μεταξύ άλλων τις Java βιβλιοθήκες (lib) και
d ξ λλ β βλ θ (l b)
τις κλάσεις των Web services (classes)
y Ρύθμιση μεταβλητών περιβάλλοντος για
y Axis home directory
y library directory
y Java classpath
y Με το αρχείο setenv.bat
y Εκκίνηση του tomcat
y Μέσα στον φάκελο /usr/tomcat/bin
y Γράφουμε στη γραμμή εντολών catalina run ή catalina start
Ανάπτυξη Web Service
y Κώδικας Web service
y Μεταγλώττιση κώδικα και τοποθέτηση αντίστοιχης κλάσης στο κατάλληλο
directory :
javac -d %CATALINA_HOME%\webapps\axis\WEB-INF\classes
SilverService.java
j
y O φάκελος %CATALINA_HOME%/webapps/axis/WEB‐INF/classes/ είναι το
σημείο που ψάχνει ο Axis να βρει τις κλάσεις για Web services
28
11/27/2008
Ανάπτυξη Web Service με χρήση Axis
y Για την ανάπτυξη και χρήση μιας υπηρεσίας χρειάζεται ένα αρχείο Axis Web Service
Deployment Descriptor (WSDD) που περιγράφει την υπηρεσία:
y Το WSDD format περιέχει ένα στοιχείο deployment XML. Αυτό ορίζει το Java
namespace μαζί με ένα στοιχείο service, που ορίζει την υπηρεσία
y Ένα namespace είναι κάτι ανάλογο με το package
y Ένα service μπορεί να έχει ένα ή όλα από τα παρακάτω:
y Μια ροή αιτήματος (request flow)
y Ένα pivot Handler, που είναι ο πάροχος υπηρεσίας
y Μια ροή απόκρισης (response flow)
Ανάπτυξη Web Service με χρήση Axis
y Ο πάροχος υπηρεσίας σε αυτό το παράδειγμα είναι java:RPC ,'' δηλαδή, remote
procedure caller (RPCProvider).
y Το tag parameter προσδιορίζει ποια κλάση (δηλαδή SilverSevice) πρέπει να
φορτώσει ο πάροχος και ποιες μεθόδους σε αυτήν την κλάση πρέπει να
καλέσει
y Εδώ προσδιορίζουμε ότι μπορεί να κληθεί οποιαδήποτε public μέθοδος στην κλάση
μας.
y Εναλλακτικά το σύνολο των προσβάσιμων μεθόδων θα μπορούσε να περιοριστεί
χρησιμοποιώντας μια λίστα ονομάτων διαθέσιμων μεθόδων
29
11/27/2008
Ανάπτυξη Web Service με χρήση Axis
y Τα WSDD αρχεία είναι επαναχρησιμοποιήσιμα και απαιτούν ελάχιστες
αλλαγές προκειμένου να μπορούν να χρησιμοποιηθούν για άλλες υπηρεσίες
χ γή μ ς ηρ ς μ ς ης
y π.χ. Αλλαγή ονόματος υπηρεσίας και ονόματος κλάσης
y Η WSDD περιγραφή περνάει στον Axis AdminClient, που μεταγλωττίζει ένα
Web service βάσει των παραμέτρων της περιγραφής και «δημοσιεύει» το Web
service στο κατάλληλο σημείο
Ανάπτυξη Web Service με χρήση Axis
30
11/27/2008
Ανάπτυξη Web Service με χρήση Axis
y Για να εξασφαλίσετε ότι η
υπηρεσία Ιστού έχει
εγκατασταθεί σωστά, μπορείτε
γξ
να ελέγξετε τα Web Services που
έχουν δημοσιευθεί στο
περιβάλλον του Axis
χρησιμοποιώντας ένα Web
browser και πηγαίνοντας στην
επιλογή View the list of deployed
Web services
Ανάπτυξη Web Service
Κώδικας Client
31
11/27/2008
«Απόσυρση» Web Service
y Για την «απόσυρση» ενός Web service, χρειάζεται ένα αρχείο WSDD
undeployment αντίστοιχο του προηγούμενου deployment file
Πηγές
y http://perisic.com/xmlrpc
y http://wiki.lundogbendsen.dk/pages/viewpage.action?pageId=4653137
y Ian J. Taylor, "From P2P to Web Services and Grids: Peers in a Client /
Server World (Computer Communications & Networks)", Springer‐
Verlag London Ltd, Oct 2004
32