Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

XML, Web Services, REST, JSON

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "XML, Web Services, REST, JSON"— Μεταγράφημα παρουσίασης:

1 XML, Web Services, REST, JSON
Διάλεξη 6 XML, Web Services, REST, JSON Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 1

2 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
XML Πηγές: Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 2

3 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Τι είναι η XML Η XML (eXtensible Markup Language) είναι μια markup meta-γλώσσα (υποσύνολο της SGML) που χρησιμοποιείται για περιγραφή, αναπαράσταση και ανταλλαγή δεδομένων. Παρέχει μια διεπαφή επικοινωνίας και ανταλλαγής δεδομένων μεταξύ εφαρμογών διαφορετικών συστημάτων και τεχνολογιών. Οι εφαρμογές χρησιμοποιούν έναν XML Parser για να ανακτήσουν τα δεδομένα του XML εγγράφου. Επιπλέον χαρακτηριστικά: Επεκτάσιμη και απλή στη σύνταξη built-in data validation υποστηρίζει Unicode Excellent for handling data with a complex structure or atypical data Human- and computer-friendly format Handles data in a tree structure having one root element Excellent for long-term data storage and data reusability Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 3

4 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Ένα xml αρχείο <Employee_Info> <Employee Employee_Number=“1”> <Name> George Kakavoulis</Name> <Department> HR Dept </Department> <Telephone> (+30) </Telephone> < > </Employee> <Employee Employee_Number=“2”> <Name> Maria Kokkinou</Name> <Department> Logistics Dept </Department> <Telephone> (+30) </Telephone> < > . </Employee_Info> Code checked Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 4

5 Στοιχεία ενός xml εγγράφου
Elements: tags <aTag>, <aTag/> που μπορεί να περιέχουν data. Αποτελούνται από το "start tag," το "content tag," και το "end tag”, π.χ. Element χωρίς content: <element_name/> (χωρίς start και end tag) Attributes: περιέχουν πληροφορίες για τα elements, π.χ. <aTag id=“123”> Τα elements μπορεί να έχουν attributes, content καθώς και child elements. Στο content: χρήση predefined entity references για δεσμευμένους χαρακτήρες: [<  <] [>  >] κ.α. **predefined entity references για δεσμευμένους χαρακτήρες στο content : [αντί <  <] [αντί >  >] [αντί &  &] [αντί "  "] [αντί '  &apos;] Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 5

6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
XML Schema H XML Schema είναι μια schema definition γλώσσα που προτάθηκε από τον οργανισμό W3C με σκόπο να περιγράψει την δομή ενός XML εγγράφου. Καθορίζει ένα αυστηρό πλαίσιο κανόνων σύνταξης.  Ένα .xsd έγγραφο αποτελείται από elements και attributes. Πλεονεκτήματα: γλώσσα με XML σύνταξη Object-oriented Εμπλουτισμένοι τύποι δεδομένων (built-in, ορισμένοι από τον χρήστη) Υποστηρίζει Namespaces Ένα element σύνθετου τύπου μπορεί να περιέχει child elements και attributes, ενώ ένα element απλού τύπου μπορεί να περιέχει μόνο text. Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 6

7 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
employee.xsd XML Schema παράδειγμα <?xml version="1.0"?> <xs:schema xmlns:xs=" > <xs:element name="Employee_Info" type="EmployeeInfoType" /> <xs:complexType name="EmployeeInfoType"> <xs:sequence> <xs:element ref="Employee" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:element name="Employee" type="EmployeeType" /> <xs:complexType name="EmployeeType"> <xs:sequence > <xs:element ref="Name" /> <xs:element ref="Department" /> <xs:element ref="Telephone" /> <xs:element ref=" " /> <xs:attribute name="Employee_Number" type="xs:int" use="required"/> <xs:element name="Name" type="xs:string" /> <xs:element name="Department" type="xs:string" /> <xs:element name="Telephone" type="xs:string" /> <xs:element name=" " type="xs:string" /> </xs:schema> Code checked Εξήγηση κώδικα στο: **The prefix (e.g. xs or xsd) does not matter at all, one can bind any prefix to that, what matters is the namespace URI the prefix is bound to. If it is then it is the W3C XML schema language. So <xs:schema xmlns:xs=" is the same as <xsd:schema xmlns:xsd=" Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 7

8 Complex Type Elements: Τμήμα Πληροφορικής και Τηλεπικοινωνιών
XML Schema ορισμοί Complex Type Elements: Simple Type Elements: Attributes: XML Schema sequence element choice element Reference Elements: Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 8

9 XML Schema τύποι δεδομένων (1/2)
Γενικοί built-in τύποι δεδομένων: Επιπλέον: Τύποι για αναπαράσταση ημερομηνιών, DTD-compatible, κ.α. Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο

10 XML Schema τύποι δεδομένων (2/2)
Ορισμός απλών τύπων από τον χρήστη: Ορισμός σύνθετων τύπων από τον χρήστη: <xs:simpleType name="belongType">   <xs:restriction base="xs:string">     <xs:enumeration value="Sales"/>     <xs:enumeration value="Development"/>     <xs:enumeration value="Service"/>   </xs:restriction> </xs:simpleType> Απλός τύπος ορισμένος από τον χρήστη Complex type extensions are quite similar to the inherit function of Java, C++ and other object-oriented languages. New element declarations and attribute declarations can be added to the base complex type data type. The difference is that the additional element is added to the end of the base data type, and when the complex type is extended, the data type becomes a complex type. Συνήθως τα user-defined types τα σώζουμε σε ξεχωριστό .xs το οποίο το κάνουμε import ή include στο κύριο .xs <xs:include>: include an .xs with the same namespace or no namespace <xs:import>: include an .xs having a different namespace Ανάθεση user-defined τύπου σε element : <xs:element name=“Emp" type=“EmpType"/> Ενσωμάτωση .xs εξωτερικού αρχείου: <xs:include schemaLocation=“EmpType.xs”> Με χρήση extension σε έναν απλό τύπο δημιουργείται στην ουσία ένας σύνθετος τύπος με attribute Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 10

11 XML Schema Namespaces (1/2)
Αφηρημένα περιβάλλοντα (abstract containers) που περιέχουν μια ομάδα σχετιζόμενων xs elements και attributes και τα χαρακτηρίζουν μοναδικά. Χρησιμοποιούνται ως prefix στα ονόματα των elements/ attributes, επιτρέποντας την ενσωμάτωση elements/ attributes από περισσότερα του ενός Namespaces χωρίς conflicts σε ονόματα. Χαρακτηρίζονται από ένα μοναδικό όνομα, συχνά URI. <emp:employee xmlns:emp="urn:corp:emp">   <emp:personInfo>     …(other emp:tags)…   </emp:personInfo> </emp:employee> Quite often a URI beginning with " is used in practice. Since the URI is not actually accessed, it is not a problem if the file, etc. does not really exist. Understand that a URI represents nothing more than a logical namespace name. Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 11

12 XML Schema Namespaces (2/2)
Default Namespace (χωρίς prefix) <employeeList xmlns="urn:corp:list" xmlns:emp="urn:corp:emp" xmlns:sec="urn:corp:sec"> <personList> <emp:empID>AB272654</emp:empID> <sec:name sec:ID=“AB121”>Sales</sec:name> <emp:name>John Smith</emp:name> </list:personList> <emp:empID>E231290</emp:empID> <sec:name sec:ID=“AB125”>Development</sec:name> <emp:name>Ichiro Tanaka</emp:name> </list:personList> </list:employeeList> Δηλώσεις υπόλοιπων Namespaces Attribute με Namespace A "default namespace" is a namespace declaration that does not use a namespace prefix. The scope of the default namespace is the element for which the namespace was declared and the related content (except attributes). Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 12

13 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Σύνδεση .xs με .xml Ως ξεχωριστό αρχείο: Στο root element του .xml γίνεται η προσθήκη: <Employee_Info xmlns:xsi=" xsi:noNamespaceSchemaLocation="employee.xs"> Ενσωματωμένο: <?xml version="1.0"?> <class xmlns:xsi=" xsi:noNamespaceSchemaLocation="#mySchema"> <xs:schema id="mySchema" xmlns:xs=" <xs:element name="class" type="xs:any"/> <xs:element name="student" type="xs:string"/> </xs:schema> <student>Miltos Karras</student> <student>John Smith</student> </class> Προσθήκη στο root element xs tags Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 13

14 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
XML Binding (JAXB) Η Java™Αρχιτεκτονική για XML Binding (JAXB) παρέχει έναν γρήγορο τρόπο σύνδεσης XML schemas σε Java αναπαραστάσεις και ενσωμάτωσης XML data σε εφαρμογές Java. Η JAXB παρέχει μεθόδους για αυτόματη παραγωγή (unmarshal) Java content trees από XML instance έγγραφα και αντίστροφα (marshal). Using JAXB involves two discrete sets of activities: • Generate and compile JAXB classes from a source schema, and build an application that implements these classes • Run the application to unmarshal, process, validate, and marshal XML content through the JAXB binding framework SOAP does not mandate a single programming model -- nor does it define language bindings for a specific programming language. In the context of the Java programming language, it's up to the Java community to define the specific language binding. Java language bindings are now being pursued through the JAX-RPC initiative (XML-based RPC) Web services. Better through Java API for XML-Based Web Services (JAX-WS) and Java Architecture for XML Binding (JAXB) Web services.: Η JAXB χρησιμοποιείται σε συνδυασμό με το Java API for XML (JAX-WS) για τη δημιουργία Web Services Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 14

15 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Web Services Πηγές: Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 15

16 Τι είναι τα Web Services
Είναι μια τεχνολογία για κατανεμημένα υπολογιστικά συστήματα (όπως οι: CORBA, RMI, EJB, κ.α.) όσον αφορά σε υπηρεσίες request/response. Πρόκειται για ευέλικτα software components που παρέχουν ένα πλαίσιο επικοινωνίας μεταξύ συστημάτων και εφαρμογών διαφορετικών τεχνολογιών, καθώς χρησιμοποιούν standard XML - γλώσσες. Για τη μετάδοση μηνυμάτων τα Web Services χρησιμοποιούν κυρίως HTTP. Πλεονεκτήματα: Διαλειτουργικότητα, λόγω XML Μετάδοση μηνυμάτων και διαμέσω firewalls, λόγω HTTP (χρήση fixed port 80 που τα firewalls επιτρέπουν να περάσει) Web services decouple objects from the platforms that hold them hostage. That is, Web services facilitate interactions among platform-independent objects, which are able to access data from anywhere on the Web. Now Web services, with its promise of broad-based application interoperability, arrives on the scene as the ultimate "glue" to make these technologies (Java,XML…diverse technologies) interact, if not seamlessly, at least without the excess baggage that accompanied previous technologies like CORBA and RMI. In some sense, Web services represent the second coming of CORBA. But whereas CORBA was an object-oriented, IIOP-based binary communications framework, laden with stubs, skeletons and vendor-specific ORBs, Web services are lightweight, HTTP-based, XML-driven, and completely platform- and language-neutral. Where CORBA was a 600-pound semi-caged gorilla, Web services is a gazelle romping freely through the vast Internet preserves. Uses: Web Services have Two Types of Uses Reusable application-components. There are things applications need very often. So why make these over and over again? Web services can offer application-components like: currency conversion, weather reports, or even language translation as services. Connect existing software. Web services can help to solve the interoperability problem by giving different applications a way to link their data. With Web services you can exchange data between different applications and different platforms. **"Systems that rely on propriety objects are called tightly coupled (opposite of loosely coupled) because they rely on a well-defined but fragile interface. If any part of the communication between application and service object is disrupted, or if the call is not exactly right, unpredictable results may occur. loosely-coupled environments: without any previous agreements having been established between them Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 16

17 Publish, find, bind paradigm
The Web Services model follows the publish, find, and bind paradigm. In the first step, a service provider publishes a Web Service in a Web Service registry. Secondly, a client who is looking for a service to meet their requirement searches in a registry. After successfully finding multiple matches, it chooses a service. The client then chooses a service based on its preferences. The client then downloads the service description and binds with that to invoke and use the service. Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 17

18 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
…από μια άλλη οπτική Η διευθυνσιοδότηση των Web services γίνεται μέσω ενός URI: π.χ. Οι WS διευθύνσεις προσπελαύνονται μόνο από μηχανές (όχι ανθρώπους) Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 18

19 Τυπική Web Service διάδραση
SOAP reqs-responses UDDI (WSDL) WSDL (UDDI) Publish, bind and find mechanisms have their respective counterparts in three separate (but somewhat equal) protocols that make up the Web services network stack: WSDL, SOAP and UDDI (Universal Description and Discovery Interface). SOAP is the binding mechanism between conversing endpoints. WSDL publishes Web service interfaces to parties interested in communicating across heterogeneous platforms. it also includes constructs that let you describe address and protocol information for the Web services you want to publish. UDDI acts as a registry for publishing and locating Web services Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 19

20 Web Services Network Stack
One of the primary concerns of Web-based programmers was how to transmit data in an interoperable manner. At the bottom-most layer is the XML standard that addresses this. SOAP (Simple Object Access Protocol) is an XML-based mechanism for messaging and RPC (Remote Procedure Calls). It addresses the fundamental problem of firewall traversal in RPC systems by using HTTP as the transport. SOAP is the protocol used for invoking the service. WSDL (Web Services Description Language) provides an XML-based way of describing a Web Service, giving details of using it. WSDL is an XML equivalent of IDL (Interface Definition Language), used in the RPC days. UDDI (Universal Description Discovery Integration) provides a "Yellow page" directory of Web Services, making it easier for clients to discover the services of their choice. The service provider publishes the service description (WSDL) and other searchable details in the UDDI registry. A client uses UDDI to perform the find of a service. Το UDDI (Universal Description Discovery Integration) παρέχει έναν κατάλογο από Web Services, για να διευκολύνει τους clients να ανακαλύψουν τα WS της επιλογής τους. Ο πάροχος του WS δημοσιεύει την περιγραφή του WS (WSDL) με άλλα στοιχεία αναζήτησης στο μητρώο του UDDI. Ο client χρησιμοποιεί το UDDI για να βρεi ένα WS. Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 20

21 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
WSDL Η Web Service Description Language (WSDL) είναι μια W3C standard XML-based γλώσσα που περιέχει πληροφορίες για το interface, τη σημασιολογία και τους κανόνες κλήσης ενός Web service. Η WSDL ορίζει τα Web services σαν μια συλλογή από ports και operations (abstract interface). Περιλαμβάνει επίσης σαφείς οδηγίες για την περιγραφή της διεύθυνσης και πληροφορίες πρωτοκόλλου του Web service. Αφού δημιουργήσετε ένα Web service, δημοσιεύετε την περιγραφή του και έναν σύνδεσμο προς αυτό στο μητρώο UDDI. Για να χρησιμοποιήσει κάποιος το WS ζητά το WSDL αρχείο του ώστε να βρει την τοποθεσία του WS, τις μεθόδους κλήσης και πώς να τις προσπελάσει. Στη συνέχεια χρησιμοποιεί τις πληροφορίες αυτές για να δημιουργήσει ένα SOAP αίτημα προς εσάς. <definitions>: Root element του WSDL <types>: Τί τύπου δεδομένα θα μεταδοθούν; <message>: Ποια μηνύματα θα μεταδοθούν; <portType>: Ποιες λειτουργίες (μέθοδοι) υποστηρίζονται; <binding>: Πώς θα μεταδοθούν τα μηνύματα; Τι SOAP-specific λεπτομέρειες υπάρχουν; <service>: Σε ποια τοποθεσία βρίσκεται το WS; Requesting applications tune themselves to Web services using WSDL (Web Services Description Language), which provides low-level technical information about the service desired, grants applications access to XML Schema information for data encoding, and ensures that the right operations are invoked over the right protocols. WSDL defines Web services as a collection of ports and operations. A WSDL port is analogous to an interface, and a WSDL operation is analogous to a method. WSDL publishes Web service interfaces to parties interested in communicating across heterogeneous platforms. WSDL, however, goes beyond just being an interface definition language; it also includes constructs that let you describe address and protocol information for the Web services you want to publish. The interesting thing about WSDL is that it describes an abstract interface for Web services while simultaneously allowing you -- in excruciating detail -- to bind a Web service to a specific transport mechanism, such as HTTP. By abstracting the interface, WSDL functions as a reusable Web service technology. By binding to a specific transport mechanism, WSDL makes the abstract concrete. WSDL is an XML-based language for locating and describing Web services. WSDL stands for Web Services Description Language WSDL is based on XML WSDL is used to describe Web services WSDL is used to locate Web services WSDL is a W3C standard Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 21

22 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Element Defines <types> The data types used by the web service <message> The messages used by the web service <portType> The operations performed by the web service <binding> The communication protocols used by the web service <service> The name and location of the web Service WSDL - Δομή <definitions> <types>   definition of types </types> <message>   definition of a message.... </message> <portType>   definition of a port </portType> <binding>   definition of a binding.... </binding> </definitions> <message name="getTermRequest">   <part name="term" type="xs:string"/> </message> <message name="getTermResponse">   <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">   <operation name="getTerm">     <input message="getTermRequest"/>     <output message="getTermResponse"/>   </operation> </portType> WSDL Ports The <portType> element is the most important WSDL element. It describes a web service, the operations that can be performed, and the messages that are involved. The <portType> element can be compared to a function library (or a module, or a class) in a traditional programming language. WSDL Messages The <message> element defines the data elements of an operation. Each message can consist of one or more parts. The parts can be compared to the parameters of a function call in a traditional programming language. WSDL Types The <types> element defines the data types that are used by the web service. For maximum platform neutrality, WSDL uses XML Schema syntax to define data types. WSDL Bindings The <binding> element defines the message format and protocol details for each port. Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο

23 Τμήμα Πληροφορικής και Τηλεπικοινωνίων
WSDL Ports One-way Request-Response <message name="getTermRequest">   <part name="term" type="xs:string"/> </message> <message name="getTermResponse">   <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">   <operation name="getTerm">     <input message="getTermRequest"/>     <output message="getTermResponse"/>   </operation> </portType> <message name="newTermValues">   <part name="term" type="xs:string"/>   <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms">   <operation name="setTerm">     <input name="newTerm" message="newTermValues"/>   </operation> </portType > Left: In the example above, the port "glossaryTerms" defines a one-way operation called "setTerm". The "setTerm" operation allows input of new glossary terms messages using a "newTermValues" message with the input parameters "term" and "value". However, no output is defined for the operation. Right: In the example above, the port "glossaryTerms" defines a request-response operation called "getTerm". The "getTerm" operation requires an input message called "getTermRequest" with a parameter called "term", and will return an output message called "getTermResponse" with a parameter called "value". Type Definition One-way The operation can receive a message but will not return a response Request-response The operation can receive a request and will return a response Solicit-response The operation can send a request and will wait for a response Notification The operation can send a message but will not wait for a response Διάλεξη 7 Τμήμα Πληροφορικής και Τηλεπικοινωνίων Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο

24 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
WSDL Binding binding element name attribute: defines the name of the binding type attribute: points to the port for the binding soap:binding element style attribute: can be "rpc" or "document” transport attribute: defines the SOAP protocol to use operation element a SOAP action for each operation definition of the encoding for the input and output <binding type="glossaryTerms" name="b1"> <soap:binding style="document” transport=" /> <operation> <soap:operation soapAction=" <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation> </binding> TO DO why document? why literal? Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο

25 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
WSDL – Παράδειγμα (1/3) Το namespace για το συγκεκριμένο web service Ορισμός δύο complex types που θα χρησιμοποιηθούν από το wsdl Είσοδος Έξοδος Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο

26 WSDL – Παράδειγμα (2/3) Namespaces που θα χρησιμοποιηθούν Request
Σε ποιο XML Schema βασίζεται το WSDL Response Ορισμός μεθόδου, ορισμάτων και τιμή που επιστρέφει Διάλεξη 7 Διάλεξη 8 Διάλεξη 6

27 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
WSDL – Παράδειγμα (3/3) Πρωτόκολλο επικοινωνίας και τρόπος σύνδεσης SOAP με το WSDL. Τύπος soap μηνυμάτων Το όνομα του web service και που βρίσκεται Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο

28 Τμήμα Πληροφορικής και Τηλεπικοινωνίων
SOAP Το Simple Object Access Protocol (SOAP) είναι ένα W3C standard XML-based πρωτόκολλο για αποστολή μηνυμάτων και υλοποίηση απομακρυσμένων κλήσεων σε ένα κατανεμημένο περιβάλλον. Με χρήση του SOAP τα δεδομένα μπορούν να διαταχθούν χωρίς να ληφθεί υπόψη το πρωτόκολλο μεταφοράς (συνήθως HTTP). Το SOAP αποτελεί ένα επεκτάσιμο πλαίσιο επικοινωνίας που επιλύει το πρόβλημα ασυμβατότητας διαφορετικών συστημάτων όσον αφορά στην πρόσβαση στα data. SOAP Schema namespace <SOAP-ENV: Envelope xmlns: SOAP-ENV=" SOAP-ENV: encodingStyle=" <SOAP-ENV:Header> πληροφορία για ενδιάμεσους processing nodes (π.χ. authentication or authorization server κ.α.) – το Header δεν περιέχει πληροφορία σχετική με το body </SOAP-ENV:Header> <!-- Request --> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="some-URI"> <symbol>DEF</Symbol> </m: GetLastTradePrice> </SOAP-ENV:Body> <!-- Response --> <m:GetLastTradePriceResponse <price>22.50</price> </m: GetLastTradePriceResponse> </SOAP-Envelope> SOAP encodings SOAP lets you build applications by remotely invoking methods on objects. SOAP removes the requirement that two systems must run on the same platform or be written in the same programming language. Instead of invoking methods through a proprietary binary protocol, a SOAP package uses XML. All information between the requesting application and the receiving object is sent as tagged data in an XML stream over HTTP. From a Web services point of view, SOAP may be implemented as either a client or a server. SOAP Clients and Servers A SOAP client is a program that creates an XML document containing the information needed to invoke remotely a method in a distributed system. SOAP clients need not be traditional. In addition to being your garden-variety desktop application, a SOAP client could also be a Web server or a server-based application. Messages and requests from SOAP clients are typically sent over HTTP. As a result, SOAP documents are able to traverse almost any firewall, enabling the exchange of information across divergent platforms. A SOAP server is simply special code that listens for SOAP messages and acts as a distributor and interpreter of SOAP documents. External Web services may interact with application servers based on J2EE technology, which process SOAP requests from a variety of clients. SOAP servers ensure that documents received over a HTTP connection are converted to a language that the object at the other end understands. Because all communications are made in the form of XML, objects in one language (say, Java) may communicate through SOAP with objects in any other language (C++, for example). It's the job of the SOAP server to make sure the end points understand -- and are happy with -- the SOAP they're being served. Get Last Trade Price for symbol DEF Respond with price 22.50 Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνίων Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 28

29 Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Stubs Σε μια WS εφαρμογή, ο κώδικας των SOAP κλήσεων πάντα δημιουργείται και μεταφράζεται αυτόματα. Όταν έρθει η στιγμή για μια client εφαρμογή να προσπελάσει ένα Web Service, ανατίθεται η διαδικασία σε ένα κομμάτι software που λέγεται stub. Web Services programmers usually only have to concentrate on writing code in their favorite programming language and, in some cases, in writing WSDL. SOAP code, on the other hand, is always generated and interpreted automatically for us. Once we've reached a point where our client application needs to invoke a Web Service, we delegate that task on a piece of software called a stub. We can simply concentrate on writing the client and/or server code, and leave all the dirty work to the stubs (which, again, we don't even have to write ourselves... they can be generated automatically from the WSDL description of a web service). The stubs are generally generated only once. In general, we only go through the discovery step once, then generate the stubs once (based on the WSDL of the service we've discovered) and then reuse the stubs as many times as we want (unless the maintainers of the Web service decide to change the service's interface and, thus, its WSDL description). Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 29

30 Ένας Web Service πάροχος
Web service: First and foremost, we have our Web service. As we have seen, this is basically a piece of software that exposes a set of operations. For example, if we are implementing our Web service in Java, our service will be a Java class (and the operations will be implemented as Java methods). Obviously, we want a set of clients to be able to invoke those operations. However, our Web service implementation knows nothing about how to interpret SOAP requests and how to create SOAP responses. That's why we need a... SOAP engine: This is a piece of software that knows how to handle SOAP requests and responses. In practice, it is more common to use a generic SOAP engine than to actually generate server stubs for each individual Web service (note, however, that we still need client stubs for the client). One good example of a SOAP engine is Apache Axis (this is, in fact, the SOAP engine used by the Globus Toolkit). However, the functionality of the SOAP engine is usually limited to manipulating SOAP. To actually function as a server that can receive requests from different clients, the SOAP engine usually runs within an... Application server: This is a piece of software that provides a 'living space' for applications that must be accessed by different clients. The SOAP engine runs as an application inside the application server. A good example is the Jakarta Tomcat server, a Java Servlet and Java ServerPages container that is frequently used with Apache Axis and the Globus Toolkit. Many application servers already include some HTTP functionality, so we can have Web services up and running by installing a SOAP engine and an application server. However, when an application server lacks HTTP functionality, we also need an... HTTP Server: This is more commonly called a 'Web server'. It is a piece of software that knows how to handle HTTP messages. A good example is the Apache HTTP Server, one of the most popular web servers in the Internet. Διάλεξη 6 Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ανάπτυξη Λογισμικού Χειμερινό Εξάμηνο 30

31 REST

32 Τι είναι το REST (1/2) To REST (Representational State Transfer) είναι μια αρχιτεκτονική σχεδιασμού δικτυακών εφαρμογών. Στηρίζεται σε ένα πρωτόκολλο stateless, client-server, cachable. Σχεδόν πάντα HTTP. Βασική φιλοσοφία: Αντί για πολύπλοκους μηχανισμούς, όπως π.χ. CORBA, RPC, SOAP, να χρησιμοποιηθεί απλό HTTP για όλες τις κλήσεις μεταξύ των μηχανών. Πλήρες. Μπορεί να χρησιμοποιηθεί για πολύπλοκες εφαρμογές.

33 Τι είναι το REST (2/2) Το web μπορεί να θεωρηθεί REST εφαρμογή.
Οι REST εφαρμογές χρησιμοποιούν HTTP μεθόδους για να μεταδόσουν, να ζητήσουν ή να διαγράψουν δεδομένα. HTTP για όλες τις πράξεις CRUD (Create, Read, Update, Delete)

34 REST ως ελαφρύ web service
Όπως τα web services, το REST είναι ανεξάρτητο πλατφόρμας ανεξάρτητο γλώσσας βασισμένο σε πρότυπα (HTTP) μπορεί να χρησιμοποιηθεί με firewalls Δεν προδιαγράφει ασφάλεια (συνήθως username, password) κρυπτογράφηση (συνήθως HTTPS)

35 Απλότητα του REST Web Services, SOAP <?xml version="1.0"?>
<soap:Envelope xmlns:soap= soap:encodingStyle=" <soap:body pb=" <pb:GetUserDetails <pb:UserID>12345</pb:UserID> </pb:GetUserDetails> </soap:Body> </soap:Envelope> REST

36 Πολυπλοκότερο REST Στις περισσότερες περιπτώσεις μια αίτηση GET είναι αρκετή Αν απαιτείται μεγάλο μέγεθος ή δυαδικό είδος παραμέτρων, συνήθως χρησιμοποιείται POST και περνάμε τις παραμέτρους στο σώμα της POST. Καλή πρακτική: GET για αιτήσεις που είναι read-only, απλές παράμετροι. POST για όλα τα υπόλοιπα (update, delete, create) και read με πολύπλοκες παραμέτρους.

37 REST και XML Οι REST αιτήσεις (requests) σπάνια χρησιμοποιούν REST.
Χρήση XML για ευκολότερη πιστοποίηση type safety.

38 Απόκριση REST Συχνά ένα αρχείο XML – εύκολο να επεκταθεί, type safety
Άλλα formats: JSON (JavaScript Object Notation) – εύκολο parsing με Javascript και άλλες γλώσσες CSV (Comma Separated Values) – συμπυκνωμένη μορφή <parts-list> <part id="3322"> <name>ACME Boomerang</name> <desc> Used by Coyote in <i>Zoom at the Top</i>, 1962 </desc> <price currency="usd" quantity="1">17.32</price> <uri> </part> <part id="783"> <name>ACME Dehydrated Boulders</name> Used by Coyote in <i>Scrambled Aches</i>, 1957 <price currency="usd" quantity="pack">19.95</price> <uri> </parts-list>

39 Αρχιτεκτονική REST (1/4)
Πόροι (Resources) – αναγνωρίζονται με λογικά URLs. Τόσο η κατάσταση (state) όσο και η λειτουργικότητα (functionality) εμφανίζονται ως πόροι. Τα λογικά URLs σημαίνουν ότι οι πόροι είναι προσβάσιμοι από όλα τα σημεία του συστήματος. Οι πόροι είναι το βασικό συστατικό ενός REST συστήματος. Όλες οι πληροφορίες για ένα αντικείμενο (ή σύνδεσμοι προς αυτές) είναι διαθέσιμες στον πόρο που αντιπροσωπεύει το αντικείμενο. Σε RPC, SOAP services υπάρχουν μέθοδοι ή υπηρεσίες για κάθε τμήμα της πληροφορίας (π.χ. τιμή, ποσότητα, χρώμα, κτλ.)

40 Αρχιτεκτονική REST (2/4)
Ιστός από πόρους Ένας πόρος δεν θα πρέπει να είναι υπερβολικά μεγάλος και να περιέχει πολλές λεπτομέρειες. Όπου αρμόζει, ένας πόρος θα πρέπει να περιέχει συνδέσμους προς άλλες πληροφορίες, όπως στο web. Client – server. O server σε ένα σύστημα μπορεί να είναι ο client σε ένα άλλο.

41 Αρχιτεκτονική REST (3/4)
Stateless Δεν υπάρχει κατάσταση στη σύνδεση. Οι servers, clients μπορεί να είναι stateful. Κάθε νέα αίτηση πρέπει να φέρει όλη την απαραίτητη πληροφορία για την επεξεργασία της, ανεξάρτητα από προηγούμενη αλληλεπίδραση του ίδιου client με τον server.

42 Αρχιτεκτονική REST (4/4)
Cacheable Οι πόροι πρέπει να μπορούν να αποθηκευτούν προσωρινά όπου είναι εφικτό (με χρόνο λήξης). Το πρωτόκολλο πρέπει ρητά να επιτρέπει τη δήλωση ικανότητας προσωρινής αποθήκευσης ή μη καθώς και το χρόνο λήξης. Χρησιμοποιείται HTTP  χρησιμοποιούνται HTTP cache-control headers Οι clients θα πρέπει να ακολουθούν την προδιαγραφή των servers για την προσωρινή αποθήκευση Proxy Servers Μπορεί να χρησιμοποιηθούν ως τμήμα της αρχιτεκτονικής για τη βελτίωση της απόδοσης και της κλιμακωσιμότητας.

43 Οδηγίες για σχεδιασμό REST 1/3
Όχι χρήση «πραγματικών» URL, όπως π.χ. ένα XML αρχείο Χρήση «λογικών» URLs: Οι ερωτήσεις δεν θα πρέπει να επιστρέφουν υπερβολικά πολλά δεδομένα. Αν απαιτείται, μπορεί να χρησιμοποιηθεί μηχανισμός σελιδοποίησης, επιστρέφοντας π.χ. τα πρώτα 10 αποτελέσματα με συνδέσμους για τα υπόλοιπα.

44 Οδηγίες για σχεδιασμό REST 2/3
Αν η απόκριση είναι XML, να συνοδεύεται από DTD ή schema.

45 Οδηγίες για σχεδιασμό REST 2/3
Συμπερίληψη REST URLs σε αποκρίσεις Δεν χρειάζεται να αφεθούν οι clients να κατασκευάζουν μόνοι τους τα URLS. Σε κάθε απόκριση να συμπεριλαμβάνεται το πραγματικό URL για περισσότερες πληροφορίες Μεγαλύτερο μέγεθος απόκρισης Καλύτερη συμπεριφορά clients σε μελλοντικές αλλαγές Οι αιτήσεις GET δεν θα πρέπει ποτέ να προκαλούν αλλαγή κατάστασης Χρήση POST για αλλαγή κατάστασης (ή PUT, DELETE, κτλ.)

46 Διάλεξη 6 JSON

47 JSON JavaScript Object Notation Format ανταλλαγής δεδομένων
Εύκολο για ανθρώπους να γράψουν και να διαβάσουν Εύκολο για μηχανές να δημιουργήσουν και να αναλύσουν Προέρχεται από τη γλώσσα JavaScript Είναι ανεξάρτητο γλώσσας προγραμματισμού Από τα δημοφιλέστερα formats ανταλλαγής δεδομένων

48 Δομή JSON Βασίζεται στις δομές δεδομένων:
Συλλογή ζευγών ονόματος-τιμής. Γνωστή και ως object, record, struct, dictionary, hash table, keyed list, associative array. Ταξινομημένη λίστα τιμών. Γνωστή ως array, vector, list, sequence.

49 Μορφή JSON 1/2

50 Μορφή JSON 2/2

51 Παράδειγμα JSON { "firstName": "John", "lastName": "Smith",
"isAlive": true, "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": " " }, "phoneNumbers": [ "type": "home", "number": " " ], "children": [], "spouse": null }

52 RESTful services σε JAVA
JAX-RS: Java API for RESTful Web Services (JAX-RS), σύνολο από APIs για την ανάπτυξη REST services. To JAX-RS είναι τμήμα της Java EE6 (Java Specification Request (JSR) 311). Jersey: H πρότυπη υλοποίηση του JAX-RS Παρέχει βιβλιοθήκη για την υλοποίηση RESTful web services σε Java servlet container

53 Jersey Στο μέρος του server, το Jersey παρέχει μια υλοποίηση servlet που σαρώνει προκαθορισμένες κλάσεις για να ταυτοποιήσει πόρους REST. Το servlet αυτό πρέπει να καταχωριστεί στο web.xml της web εφαρμογής. Στο μέρος του client παρέχεται και client βιβλιοθήκη για την επικοινωνία με υπηρεσίες REST. To servlet αναλύει την εισερχόμενη HTTP αίτηση και επιλέγει την κατάλληλη κλάση και μέθοδο για να απαντήσει. Η επιλογή βασίζεται σε annotations. Μία REST web εφαρμογή αποτελείται από κλάσεις δεδομένων (πόρους) και υπηρεσίες. Οι δύο τύποι συνήθως διατηρούνται σε διαφορετικά packages. To JAX-RS υποστηρίζει τη δημιουργία XML and JSON αρχείων μέσω τηςJava Architecture for XML Binding (JAXB).

54 JAX-RS Annotations 1/2 Annotation Description @PATH(your_path)
Sets the path to base URL + /your_path. The base URL is based on your application name, the servlet and the URL pattern from the web.xml configuration file. @POST Indicates that the following method will answer to an HTTP POST request. @GET Indicates that the following method will answer to an HTTP GET request. @PUT Indicates that the following method will answer to an HTTP PUT request. @DELETE Indicates that the following method will answer to an HTTP DELETE request.

55 JAX-RS Annotations 2/2 Annotation Description
@Produces(MediaType.TEXT_PLAIN[, more-types]) @Produces defines which MIME type is delivered by a method annotated In the example text ("text/plain") is produced. Other examples would be "application/xml" or "application/json". @Consumes(type[, more-types]) @Consumes defines which MIME type is consumed by this method. @PathParam Used to inject values from the URL into a method parameter. This way you inject, for example, the ID of a resource into the method to get the correct object.


Κατέβασμα ppt "XML, Web Services, REST, JSON"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google