You are on page 1of 32

11/27/2008

Παγκόσμιος Ιστός

Σήμερα τα δεδομένα 
ξ γ μ η μ ρφή
εξάγονται με τη μορφή 
ιστοσελίδων

Η επόμενη γενιά του Παγκόσμιου 
Ιστού δίνει έμφαση στα πραγματικά 
δεδομένα όχι σε κείμενο

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

HTTP  FTP  NNTP  WAIS VMS


Server Server Server Gateway Gateway

Servers/Gateways

Data Driven Web
Machine/Browser/Server

Mac PC Linux PC Windows CE/Palm Solaris

Addressing Scheme e.g. DNS or P2P?
& Format e.g. XML
& Common Protocols e.g. SOAP

Mac PC Linux PC Windows CE/Palm Solaris


Machine/Browser/Server

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 συμφωνούν σε 
μια κοινή γλώσσα

Wieviel Uhr What’s the  Quelle heure est‐il?


ist es? 7pm!
time?

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

Ένα πρόγραμμα στέλνει ένα αίτημα (request ) σε ένα απομακρυσμένο Web service, το 


οποίο περιέχει ένα XML μήνυμα και (προαιρετικά) λαμβάνει μια απάντηση (response)

Ένα απλό 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>

<soap:Body xmlns:m ="http://www.stock.org/stock">


<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>

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>

<soap:Body xmlns:m ="http://www


= http://www.stock.org/stock
stock org/stock">
>
<m:GetStockMarketResponse>
<wsa:EndpointReference>
<wsa:Address>http://www.dow-service.com</wsa:Address>
</wsa:EndpointReference>
</m:GetStockMarketResponse>
</soap:Body>
</soap:Envelope>

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 – Με ποιον τρόπο πραγματοποιείται η πρόσβαση σε 
αυτές τις υπηρεσίες

Δεδομένα του UDDI – Σύνοψη

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 στο κατάλληλο σημείο

y java -classpath %AXISCLASSPATH% org.apache.axis.client.AdminClient -


lhttp://localhost:8080/axis/services/AdminService deploy.wsdd

Ανάπτυξη 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 Το un‐deployment file δίνεται ως παράμετρος στον AdminClient του Axis 


για επεξεργασία: 
java -classpath %AXISCLASSPATH%
org.apache.axis.client.AdminClient
h i li t Ad i Cli t -
lhttp://localhost:8080/axis/services/AdminService
undeploy.wsdd
y Η επαλήθευση της απόσυρσης μπορεί και πάλι να γίνει ελέγχοντας τη λίστα 
των deployed services με χρήση ενός Web browser

Πηγές
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

You might also like