Web Services. Distributed Object Systems 11. Web Services, SOAP and NET. Web Applications. Web Services. Web services vs Distributed Objects



Similar documents
Web-Service Example. Service Oriented Architecture

Introduction. Tom Dinkelaker, Ericsson Guido Salvaneschi, Mira Mezini, TUD

Web Services Development Guide: How to build EMBRACE compliant Web Services Version 2.0, 13 December 2006

WEB SERVICES. Revised 9/29/2015

Developing Java Web Services

What is a Web service?

ITS. Java WebService. ITS Data-Solutions Pvt Ltd BENEFITS OF ATTENDANCE:

Grid Computing. Web Services. Explanation (2) Explanation. Grid Computing Fall 2006 Paul A. Farrell 9/12/2006

T Network Application Frameworks and XML Web Services and WSDL Tancred Lindholm

Web Services Development for IBM WebSphere App Server V7.0 Exam.

JVA-561. Developing SOAP Web Services in Java

Service Oriented Architecture using JAVA

Griglie e Sistemi di Elaborazione Ubiqui

XIII. Service Oriented Computing. Laurea Triennale in Informatica Corso di Ingegneria del Software I A.A. 2006/2007 Andrea Polini

Middleware and the Internet

Motivation Definitions EAI Architectures Elements Integration Technologies. Part I. EAI: Foundations, Concepts, and Architectures

Java Web Services Training

Integration of Hotel Property Management Systems (HPMS) with Global Internet Reservation Systems

T320 E-business technologies: foundations and practice

The presentation explains how to create and access the web services using the user interface. WebServices.ppt. Page 1 of 14

Creating Web Services in NetBeans

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Cúram Web Services Guide

VALLIAMMAI ENGINEERING COLLEGE SRM NAGAR, KATTANKULATHUR DEPARTMENT OF COMPUTER APPLICATIONS SUBJECT : MC7502 SERVICE ORIENTED ARCHITECTURE

Developing Web Services Applications

WSDL Example (Interface) WSDL Example (Implementation) Universal Description, Discovery and Integration. UDDI Usage

Web Services Development for IBM WebSphere Application Server V7.0. Version: Demo. Page <<1/10>>

What is in a Distributed Object System? Distributed Object Systems 5 XML-RPC / SOAP. Examples. Problems. HTTP protocol. Evolution

Introduction to Service Oriented Architectures (SOA)

Service Oriented Computing: SOAP, WSDL and UDDI. Dr. Cristian Mateos Diaz ( ISISTAN - CONICET

Outline SOA. Properties of SOA. Service 2/19/2016. Definitions. Comparison of component technologies. Definitions Component technologies

SOAP. SOAP SOAP d Apache/IBM Invocation générique : SOAP. Message XML SOAP. SOAP d Apache/IBM Invocation générique : SOAP

Distributed Embedded Systems

Software agents. Web services. and. F. Dignum Utrecht University

Lesson 4 Web Service Interface Definition (Part I)

Oracle Application Server 10g Web Services Frequently Asked Questions Oct, 2006

Introduction to Web Services

Ambientes de Desenvolvimento Avançados

ISM/ISC Middleware Module

Joke Server example. with Java and Axis. Web services with Axis SOAP, WSDL, UDDI. Joke Metaservice Joke Server Joke Client.

Middleware and the Internet. Example: Shopping Service. What could be possible? Service Oriented Architecture

A PERFORMANCE MODEL WEB SERVICE

A standards-based approach to application integration

IBM SPSS Collaboration and Deployment Services Version 6 Release 0. Single Sign-On Services Developer's Guide

NetBeans IDE Field Guide

Introduction into Web Services (WS)

A Cross Platform Web Service Implementation Using SOAP

Research on the Model of Enterprise Application Integration with Web Services

Internationalization and Web Services

Introduction to Testing Webservices

e-gov Architecture Service Interface Guidelines

Service Oriented Architecture

FUSE ESB. Getting Started with FUSE ESB. Version 4.1 April 2009

Web Services Technologies

4.2 Understand Microsoft ASP.NET Web Application Development

David Pilling Director of Applications and Development

4. Concepts and Technologies for B2C, B2E, and B2B Transaction

02267: Software Development of Web Services

Affiliate SOAP-API. Content:

Design and Implementation of a Framework for Testing BPEL Compositions

Increasing IT flexibility with IBM WebSphere ESB software.

Copyright IONA Technologies Web Services. Seán Baker IONA Technologies

Ontology-based Web Service Composition: Part 1. Rolland Brunec Betreuerin: Sabine Maßmann Universität Leipzig, Abteilung Datenbanken

.NET and J2EE Intro to Software Engineering

Modern XML applications

Web Services and their support in Java

Web Services Servizio Telematico Doganale

Lesson 18 Web Services and. Service Oriented Architectures

Web services can convert your existing applications into web applications.

Service Oriented Computing: Web Service Development. Dr. Cristian Mateos Diaz ( ISISTAN - CONICET

SW : : Introduction to Web Services with IBM Rational Application Developer V6

Send your request via a SOAP-Request (e.g. with DotNET/SOAP, Java, PHP) to he following URL of our server:

Service-Oriented Architectures

Building Web Services with XML Service Utility Library (XSUL)

EAI OVERVIEW OF ENTERPRISE APPLICATION INTEGRATION CONCEPTS AND ARCHITECTURES. Enterprise Application Integration. Peter R. Egli INDIGOO.

JAVA API FOR XML WEB SERVICES INTRODUCTION TO JAX-WS, THE JAVA API FOR XML BASED WEB SERVICES (SOAP, WSDL)

ARCHITECTURE FRAMEWORK PROPOSAL FOR DYNAMIC AND UBIQUITOUS SECURITY IN GLOBAL SOA

JAVA API FOR XML WEB SERVICES (JAX-WS)

Demonstrating BC: Sending Out Mass ing v1.0

Consuming and Producing Web Services with WST and JST. Christopher M. Judd. President/Consultant Judd Solutions, LLC

Model Problems in Technologies for Interoperability: Web Services

Service Oriented Architecture (SOA) Implementation Framework for Satellite Mission Control System Software Design

Mobile devices as Web service providers

WCF WINDOWS COMMUNICATION FOUNDATION OVERVIEW OF WCF, MICROSOFTS UNIFIED COMMUNICATION FRAMEWORK FOR.NET APPLICATIONS

ENTERPRISE SERVICES. By Paul Fremantle, Sanjiva Weerawarana, and Rania Khalaf

Web Services Development In a Java Environment

Web Services and Service Oriented Architectures. Thomas Soddemann, RZG

The Microsoft Way: COM, OLE/ActiveX, COM+ and.net CLR. Chapter 15

XML in Programming 2, Web services

Web Services in.net (1)

API Guide. SilkCentral Test Manager

A SOA Based Framework for the Palestinian e-government Integrated Central Database

1 What Are Web Services?

IBM Rational Rapid Developer Components & Web Services

How To Create A C++ Web Service

Emerging Technologies Shaping the Future of Data Warehouses & Business Intelligence

Java Security Web Services Security (Overview) Lecture 9

Introduction to WebSphere Process Server and WebSphere Enterprise Service Bus

DEPLOYMENT ARCHITECTURE FOR JAVA ENVIRONMENTS

Transcription:

Distributed Object Systems 11 Web Services, SOAP and NET Piet van Oostrum Web Services Some Definitions A Web Service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web Service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. (W3C) Web Services are Web-based enterprise applications that use open, XML-based standards and transport protocols to exchange data with calling clients. (Sun) Oct. 16, 2007 Piet van Oostrum 1 Web Services More Definitions Web Services is a technology that allows applications to communicate with each other in a platform- and programming language-independent manner. A Web Service is a software interface that describes a collection of operations that can be accessed over the network through standardized XML messaging. It uses protocols based on the XML language to describe an operation to execute or data to exchange with another Web Service. A group of Web services interacting together in this manner defines a particular Web service application in a Service-Oriented Architecture (SOA). (IBM) Often, the term Web Services is used to generate hype rather than to describe real technological advances. (Aaron Skonnard, Microsoft) Web Applications Web Application: Programs and resources embedded in, or accessed through, a Web server Two kinds: Presentation oriented, built around (dynamic) HTML pages intended for people Service oriented, a Web Service made available to other applications through XML and HTTP protocols intended for computers/programs A Web Service is software on local or remote machine with a set of well defined interfaces (ports) specified in XML (WSDL) Piet van Oostrum 2 Piet van Oostrum 3 Web Services/SOA Used for EAI (Enterprise Application Integration): integrating the various applications in an enterprise with each other. B2Bi (Business-to-Business Integration): the business interactions between different enterprises. Service-Oriented Architecture (SOA) is a component model that inter-relates an application s different functional units, called services, through well-defined interfaces and contracts between these services. The interface is defined in a neutral manner that should be independent of the hardware platform, the operating system, and the programming language in which the service is implemented. This allows services, built on a variety of such systems, to interact with each other in a uniform and universal manner. (IBM) Web services vs Distributed Objects Web Services (WS) and Distributed Objects (DO) are similar but there are differences Both involve distributed entities but Web Services are more loosely coupled Both are (more or less) based on the RPC paradigm WS interact with messages; DO with RPC DO have âăijfactoriesâăi; WS manage instances internally (not really OO) DO have explicit state (stateful services) WS use context in the messages to link interactions (stateful interactions) Piet van Oostrum 4 Piet van Oostrum 5 slides11.pdf October 21, 2008 1

Web Services structure UDDI Universal Description, Discovery and Integration WSDL Web Services Description Language SOAP XSD XML Simple Object Access Protocol language neutral type descriptions extensible Markup Language WSDL/UDDI WSDL Web Services Description Language Uses XML to describe Web Services Used as an IDL for SOAP Can be used as a more general description mechanism Uses XML schemas for types (XSD) UDDI - Universal Description, Discovery and Integration Kind of telephone directory for Web Services (yellow pages) WS-I (Web Services Interoperability) organisation maintains standards Piet van Oostrum 6 Piet van Oostrum 7 Current Java standard support Java Platform, Enterprise Edition (Java EE) provides the APIs and tools Java API for XML-based RPC (JAX-RPC) uses SOAP and HTTP client programs can make XML-based remote procedure calls. supports WSDL with JAX-RPC and a WSDL, can interoperate with clients and services running on Java-based or non-java-based platforms such as.net. The SOAP with Attachments API for Java (SAAJ) enables to produce and consume messages conforming to the SOAP 1.1 specification and SOAP with Attachments. JAX-RPC is now called JAX-WS (it is not only RPC). Some people think it is quite bad SOAP request body The SOAP request body contains an XML document The document has a SOAP envelope, SOAP headers and a SOAP body These are all XML elements It uses namespaces The namespace of the SOAP envelope determines the SOAP version Namespaces used: SOAP message (envelope, header, body) namespace SOAP Encoding namespace namespace for the methods XML Schema namespace (for schema tags) XML Schema types (for standard types) maybe namespaces for transactions, own types and marshalling etc. Piet van Oostrum 8 Piet van Oostrum 9 SOAP use SOAP is not yet a mature system like Corba or COM No (general) support for object creation, object references etc. How to use: Write your own support Microsoft.NET uses SOAP internally Microsoft SOAP SDK SOAP for Java: Apache or Axis Apache SOAP: originally developed by IBM uses special objects and methods, e.g. org.apache.soap.rpc.call object Python support is available (but not standard) SOAP styles There are different ways in which SOAP can be used RPC - like remote procedure call: request and response Message oriented: Only one message is sent Response message may be sent asynchronously and processed independently Corresponding to this there are different styles of encoding the input and/or output: RPC style: data is encoded (in XML) as methodname + list of parameters document style: data is encoded as an XML document Piet van Oostrum 10 Piet van Oostrum 11 slides11.pdf October 21, 2008 2

RPC style encoding public void mymethod(int x, float y); WSDL example: <message name="mymethodrequest"> <part name="x" type="xsd:int"/> <part name="y" type="xsd:float"/> </message> <message name="empty"/> <porttype name="myport"> <operation name="mymethod"> <input message="mymethodrequest"/> <output message="empty"/> </operation> </porttype> <binding style="rpc" /> Piet van Oostrum 12 Port Type / Service / Binding A port type component describes a set of messages that a service sends and/or receives. It does this by grouping related messages into operations. An operation is a set of input and output messages, a port type is a set of operations. A port type can optionally extend one or more other port types. In such cases the port type contains the operations of the port types it extends, along with any operations it defines. (So port types are similar to interfaces in COM and Corba) A service component describes the set of port types that a service provides and the ports they are provided over. A binding component described a concrete binding of a port type component and associated operations to a particular concrete message format and transmission protocol. Piet van Oostrum 13 Binding <wsdl:binding name="mybinding" > <wsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="mymethod"> <wsoap:operation soapaction="urn:myinterface#mymethod"/> <wsdl:input> <wsoap:body use="encoded" namespace="" encodingstyle=""/> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="myservice"> <wsdl:port name="myport" binding=""> </wsdl:port> </wsdl:service> SOAP message Namespaces used: xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" SOAP message: <soap:envelope> <soap:body> <mymethod> <x xsi:type="xsd:int">5</x> <y xsi:type="xsd:float">5.0</y> </mymethod> </soap:body> </soap:envelope> Piet van Oostrum 14 Piet van Oostrum 15 Notes This is called the RPC/encoded style, because it contains type info The operation name appears in the message (easy for receiver to dispatch) The type encoding info (such as xsi:type="xsd:int") is maybe just overhead But it may be useful for overloading You cannot easily validate this message since there is no schema defining the message (only the x and y part) RPC/encoded is not WS-I compliant. RPC/literal style WSDL is almost the same, except there is a use="literal" instead of use="encoded" in the binding part. SOAP message: <soap:envelope> <soap:body> <mymethod> <x>5</x> <y>5.0</y> </mymethod> </soap:body> </soap:envelope> The type info has disappeared. Piet van Oostrum 16 Piet van Oostrum 17 slides11.pdf October 21, 2008 3

Document/literal style Notes <types> <schema> <element name="xelement" type="xsd:int"/> <element name="yelement" type="xsd:float"/> </schema> </types> <message name="mymethodrequest"> <part name="x" element="xelement"/> <part name="y" element="yelement"/> </message> <message name="empty"/> Document/encoded style is not used. We use only Document/literal style. There is a schema definition in the WSDL The parameters have an element name <schema> <element name="xelement" type="xsd:int"/> <element name="yelement" type="xsd:float"/> </schema> <part name="x" element="xelement"/> <porttype name="myport"> <operation name="mymethod"> <input message="mymethodrequest"/> <output message="empty"/> </operation> </porttype> Piet van Oostrum 18 Piet van Oostrum 19 SOAP message <soap:envelope> <soap:body> <xelement>5</xelement> <yelement>5.0</yelement> </soap:body> </soap:envelope> Notes: There is no type encoding info. You can validate this message Everything within the soap:body is defined in a schema. The operation name in the SOAP message is lost. WS-I only allows one child of the soap:body in a SOAP message. This example s soap:body has two children. Piet van Oostrum 20 Document/literal wrapped This style wraps a document root with the method name around the parameters <message name="mymethodrequest"> <part name="parameters" element="mymethod"/> </message> <message name="empty"> <part name="parameters" element="mymethodresponse"/> </message> Piet van Oostrum 21 Document/literal wrapped SOAP message <types> <schema> <element name="mymethod"> <complextype> <sequence> <element name="x" type="xsd:int"/> <element name="y" type="xsd:float"/> </sequence> </complextype> </element> <element name="mymethodresponse"> <complextype/> </element> </schema> </types> Piet van Oostrum 22 <soap:envelope> <soap:body> <mymethod> <x>5</x> <y>5.0</y> </mymethod> </soap:body> </soap:envelope> Looks like the RPC/literal style in RPC it is the method name here it is the root element of the document Document style can be used to pass any type of XML document, not only a parameter list The message can be validated (there is a schema) No type info in the message (difficult in case of overloading) There is a method name Piet van Oostrum 23 slides11.pdf October 21, 2008 4

Advantages of document style You can use any XML document as input or output You are not bound to a fixed interface (in the IDL sense) Gives more flexibility Good for asynchronous processing Python example Python has callable objects Class can override the call () operator Undefined method names and attributes can be intercepted SOAPpy and ZSI (Zolera SOAP Infrastructure) are two open-source SOAP libraries for Python These are not yet complete (mainly RPC style) (http://www.xmethods.com/ contains a list of free SOAP services) E.g. currency exchange (how many dollars per euro?) Piet van Oostrum 24 Piet van Oostrum 25 Python example WSDL extract from SOAPpy import SOAPProxy url = "http://xurrency.com/servidor_soap.php" namespace = "http://xurrency.com/api.wsdl" server = SOAPProxy(url, namespace) server.config.dumpsoapout = True server.config.dumpsoapin = True print server.getvalue(100,"eur","usd") Using WSDL: from SOAPpy import WSDL WSDLFILE= http://xurrency.com/servidor_soap.php?wsdl server=wsdl.proxy(wsdlfile) server.soapproxy.config.dumpsoapout = True server.soapproxy.config.dumpsoapin = True print server.getvalue(100,"eur","usd") <message name="getvaluerequest"> <part name="amount" type="xsd:float" /> <part name="base" type="xsd:string" /> <part name="target" type="xsd:string" /></message> <message name="getvalueresponse"> <part name="return" type="xsd:float" /></message> <porttype name="xurrencyporttype"> <operation name="getvalue"> <input message="tns:getvaluerequest"/> <output message="tns:getvalueresponse"/> </operation> </porttype> Piet van Oostrum 26 Piet van Oostrum 27 WSDL extract Result <binding name="xurrencybinding" type="tns:xurrencyporttype"> *** Outgoing SOAP ********************************************** <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope <operation name="getvalue"> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encodi <soap:operation soapaction="http://xurrency.com/servidor_soap.php/getvalue" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" style="rpc"/> <input><soap:body use="encoded" namespace="http://xurrency.com/xurrency.wsdl" encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output></output> </operation> </binding> <service name="xurrency"> <port name="xurrencyport" binding="tns:xurrencybinding"> <soap:address location="http://xurrency.com/servidor_soap.php"/> </port> </service> xmlns:xsi="http://www.w3.org/1999/xmlschema-instance" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/1999/xmlschema" > <SOAP-ENV:Body> <ns1:getvalue xmlns:ns1="http://xurrency.com/xurrency.wsdl" SOAP <v1 xsi:type="xsd:int">100</v1> <v2 xsi:type="xsd:string">eur</v2> <v3 xsi:type="xsd:string">usd</v3> </ns1:getvalue> </SOAP-ENV:Body> </SOAP-ENV:Envelope> **************************************************************** Piet van Oostrum 28 Piet van Oostrum 29 slides11.pdf October 21, 2008 5

Result *** Incoming SOAP ****************************************************** <?xml version="1.0" encoding="iso-8859-1"?> <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:getvalueresponse xmlns:ns1="http://xurrency.com/xurrency.wsdl"> <return xsi:type="xsd:float">136.2500</return> </ns1:getvalueresponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ************************************************************************ 136.25 SOAP servers SOAP services run in an HTTP server (when protocol is HTTP) Could be standard HTTP server, like Apache, Tomcat Often run in Application server like IBM Websphere or JBoss (together with EJB) Or run server with its own HTTP request processing Some of these frameworks have a HTTP server built in Piet van Oostrum 30 Piet van Oostrum 31 Example CGI scripts (using Python ZSI) def hello(): return "Hello, world" def echo(*args): return args.net def average(*args): sum = 0 for i in args: sum += i return sum / len(args) from ZSI import dispatch dispatch.ascgi() This makes all the methods (functions) in the module available as Web Services. Piet van Oostrum 32 Piet van Oostrum 33.NET What is.net? Collection of software (libraries, programming languages, compilers, tools, protocols) for interoperability Both local and distributed Why? Difficult to connect different programming languages calling conventions are different data types are different memory management doesn t fit No inheritance between different languages Difficult to connect remote systems DCOM/Corba etc require special code.net solutions Common Language Runtime One runtime system for all languages share libraries share memory management Piet van Oostrum 34 Piet van Oostrum 35 slides11.pdf October 21, 2008 6

Intermediate code All.NET compilers compile to an intermediate code MSIL = Microsoft Intermediate Language Can also be ported to other systems (Mono is an open source project cloning.net) Compare Java or Python Bytecode MSIL contains a lot of information about source (types, names, etc) MSIL can be interpreted Usually MSIL is compiled to native code just in time (JIT) Probably for future systems (64-bit) Compilation Piet van Oostrum 36 Piet van Oostrum 37 Common Type System A type system for all programming languages in.net Different programming languages can use each other s types Including inheritance System Value Value Enumerations User Value Pointers Classes Reference Self-describing Arrays Interfaces Value types Are passed by value Usually allocated on the stack Copy semantics Like Corba value types RMI, value parameters Includes standard types int, bool, float... These are boxed or unboxed (Put into an object) if necessary Can define own value types, with methods Reference types Are passed by reference Usually allocated on the heap Pointer semantics Some are garbage collected Delegates Boxed values User Defined Piet van Oostrum 38 Piet van Oostrum 39 Managed/unmanaged pointers Managed pointers are under control of the CLR This includes garbage collection Meta information (type) is put into IL Can only be used safely Unmanaged pointers Are unsafe under complete control of the program E.g. old-fashioned C/C++ pointers Necessary for e.g. the garbage collector Managed/unmanaged code Managed code Uses managed pointers Is safe for the CLR Supports garbage collection Full access to all.net facilities Unmanaged code Can use unmanaged pointers Is unsafe Do your own mewmory management Piet van Oostrum 40 Piet van Oostrum 41 slides11.pdf October 21, 2008 7

Languages C# Java-like Specially designed for.net Big libraries (like Java) Libraries can be used by other (managed) code Java classes can be translated to C# Visual Basic new version that has comparable facilities as C# C/C++ etc. Special MS extensions for managed code Normal C/C++ is of course unsafe For.NET programming managed extensions (MC++) are necessary But other vendors compilers have to be modified.net and DCOM Interoperability between (D)COM and.net COM objects can disguise themselves as CLR objects CLR object can act as COM components Distributed calls by SOAP All this is (more or less) transparently done by the CLR Special pragma s inserted in source code Compilers can generate WSDL. Piet van Oostrum 42 Piet van Oostrum 43 slides11.pdf October 21, 2008 8