XML WEB Services
0
Web Services
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 Webrelated standards.
Fonte:http://www.w3.org/TR/2004/NOTE-ws-arch-20040211
1
Web Services

Um cenário de utilização
2
Web Services

Um Web Service é um bloco de software que
pode ser acedido pela Internet e usado
remotamente por outras aplicações
Infra-estrutura para a comunicação entre aplicações
3
Web Services

Antecedentes






DCOM – Distributed Component Object Model
CORBA -Common Object Request Broker
Architecture
Java RMI – Remote Method Invocation
Problemas de interoperabilbidade
Orientados à ligação
Dependentes da plataforma
4
Web Services

Características de um Web Service







Expõe funcionalidades de programação na Web serviço
São acedidos usando protocolos standard - HTTP
Comunicam por meio de mensagens
Simple Object Access Protocol
Usam XML para codificar as mensagens
Estruturam as mensagens usando o protocolo
SOAP
Web Services Description Language
São auto-descritivos permitindo a um cliente
facilmente comunicar com o serviço - WSDL
Universal Description, Discovery and Integration
São serviços que podem ser registados e
facilmente descobertos
– UDDI
Independentes
de plataformas,
linguagens de
programação e sistemas operativos
5
Arquitectura de um Web Service




Service-Oriented Architecture + Web =
Web Services
Fornecedor do serviço - Implementa o serviço,
define as funcionalidades a desenvolver e
disponibiliza o serviço na Internet.
Cliente do serviço - Qualquer aplicação que usa o
serviço. Faz chamada remota ao fornecedor do
serviço criando uma conexão e enviando um
pedido
Registo do serviço - é um directório de serviços
logicamente centralizado. Fornece um lugar para
registar os serviços e definir mecanismo simples
6
de publicação/descoberta desses serviços.
Web Services

Arquitectura baseada em SOAP,WSDL e UDDI

Fonte:Introduction to Web Services by Philippe Le Hégaret – w3c.org
7
Camadas de Protocolos




Serviço de transporte - é responsável pelo
transporte das mensagens entre aplicações.
HTTP , SMTP , FTP
Mensagens XML - responsável pela
codificação das mensagens num formato
XML, de modo a serem facilmente
interpretadas pelas aplicações. XML-RPC e
SOAP
Descrição do serviço - é responsável pela
descrição da interface publica do serviço,
implementada através do protocolo WSDL
Descoberta do Serviço - é responsável pela
centralização dos serviços, simplificando a
sua publicação/descoberta - UDDI
8
Camadas de Protocolos
Descoberta
UDDI
Descrição
WSDL
Mensagens XML
SOAP, XML-RPC
Transporte
HTTP SMTP FTP
9
Web Services
10
SOAP
Simple Object Access Protocol
11
SOAP

SOAP Version 1.2 (SOAP) is a lightweight protocol
intended for exchanging structured information in a
decentralized, distributed environment. It uses XML
technologies to define an extensible messaging
framework providing a message construct that can be
exchanged over a variety of underlying protocols. The
framework has been designed to be independent of
any particular programming model and other
implementation specific semantics.
[SOAP Version 1.2 Part 1: Messaging Framework ]
http://www.w3.org/TR/2003/REC-soap12-part1-20030624/
12
SOAP

SOAP é um protocolo baseado em XML
para troca de mensagens entre aplicações

Define:


A estrutura das mensagens
Um modelo de processamento que descreve
como as mensagens devem ser
processadas pelo serviço.
13
SOAP

Template de uma mensagem SOAP:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/en
velope/">
<soap:Header>
<!-- optional -->
<!-- header blocks go here... -->
</soap:Header>
<soap:Body>
<!-- payload or Fault element goes here... ->
</soap:Body>
</soap:Envelope>
14
SOAP
<soap:Envelope>
Elemento raiz de uma mensagem SOAP. Contém um
Header opcional e um Body obrigatório
<soap:Header>
usado para codificar informação adicional da
mensagem – header blocks
<soap:Body>
contém o conteúdo principal da mensagem a enviar e
deve ser um documento XML válido.
 <soap:Fault>
trata os erros de um modo centralizado, permitindo ao
servidor comunicar ao cliente os erros encontrados no
processamento da mensagem
15
Mensagem SOAP .Net
[WebMethod ]
public int Add(int x, int y)
{return x+y;}
Codificação da chamada Add(3,5)
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Add xmlns="http://w2kslosaw/DemoService/">
<x>3</x>
<y>5</y>
</Add>
</soap:Body>
</soap:Envelope>
16
Mensagem SOAP .Net

Codificação da Resposta
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AddResponse xmlns="http://w2kslosaw/helloworld/">
<AddResult>
8
</AddResult>
</AddResponse>
</soap:Body>
</soap:Envelope>
17
SOAP – Protocol Binding



Para além da codificação da mensagem em SOAP é
necessário definir como a mensagem será enviada.
Uma da grandes vantagens do SOAP é que não está
ligado a nenhum protocolo particular. As mensagens
SOAP podem ser enviadas por qualquer protocolo que
possa transmitir XML
A especificação SOAP define apenas um “protocol
binding” – enviar mensagens SOAP via HTTP POST
18
SOAP – Protocol Binding
Exemplo
de um
mensagem SOAP:
pedido
HTTP
com
uma
POST /losaw/dir1/demoservice.asmx HTTP/1.1
Host: w2ks
Request
Content-Type: text/xml; charset=utf-8
Content-Length: 312
SOAPAction: "http://w2kslosaw/helloworld/Add"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope …
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope
/">
<soap:Body>
<Add xmlns="http://w2kslosaw/helloworld/">
<x>3</x>
<y>5</y>
</Add>
19
</soap:Body>
</soap:Envelope>
SOAP – Protocol Binding
Exemplo
de resposta HTTP com mensagem SOAP:
HTTP/1.1 200 OK
Response
Content-Type: text/xml; charset=utf-8
Content-Length: 100
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope …
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AddResponse xmlns="http://w2kslosaw/helloworld/">
<AddResult>8</AddResult>
</AddResponse>
</soap:Body>
</soap:Envelope>
20
Camadas de Protocolos
Descoberta
UDDI
Descrição
WSDL
Mensagens XML
SOAP, XML-RPC
Transporte
HTTP SMTP FTP
21
Web Service
WSDL
Web Service Description Language
22
WSDL

WSDL is an XML format for describing network
services as a set of endpoints operating on
messages containing either document-oriented or
procedure-oriented information. The operations and
messages are described abstractly, and then bound
to a concrete network protocol and message format
to define an endpoint. Related concrete endpoints
are combined into abstract endpoints (services).
WSDL is extensible to allow description of endpoints
and their messages regardless of what message
formats or network protocols are used to
communicate.
[Web Services Description Language (WSDL) 1.1 ]
http://www.w3.org/TR/2001/NOTE-wsdl-20010315
23
WSDL - Web Service Description Language


WSDL é uma especificação para descrever um
Web Service num vocabulário XML
WSDL é um documento XML para descrever:

A interface pública descrevendo todas as funções
disponibilizadas pelo serviço
A informação dos tipos de dados para as
mensagens de chamada/resposta dos serviços
A informação sobre o protocolo de transporte a usar

A informação sobre a localização do serviço


WSDL representa um contracto entre o cliente do serviço
e o fornecedor do serviço
24
WSDL - Web Service Description Language

Estrutura de um documento WSDL






<definitions> é o elemento raíz do documento WSDL
<types> especifica o tipo de dados usados no serviço
que serão referenciados pelas mensagens
<message> especifica as mensagens do serviço
<definitions> Root
<portType> especifica as <operation>( interface) do
<types> Que dados?
serviço
<binding> especifica o <message>
formato dasQue
mensagens
e um
mensagens?
protocolo de transporte
operações?
<service> especifica a <portType>
localizaçãoQue
para
invocar o
serviço <port>
<binding> Que formato e transporte?
<service> Onde está o serviço?
25
WSDL - Web Service Description Language

Definitions
É o elemento raíz de um documento WSDL. O atributo
targetNamespace permite definir um namespace e o atributo
xmlns permite referenciar outos namespaces
<definitions
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:s0="http://w2kslosaw/addservice/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://w2kslosaw/addservice/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
26
WSDL - Web Service Description Language
<types>
Contém declarações de tipos de dados referenciadas
pelas mensagens
É um Schema embebido no documento.
Add
<types>
<s:schema elementFormDefault="qualified"
[WebMethod ]
targetNamespace="http://w2kslosaw/addservice/">
public int Add(int x, int y)
<s:element name="Add">
{return x+y;}
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />
</s:sequence>
</s:complexType>
27
</s:element>
WSDL - Web Service Description Language
<message>
 Uma descrição abstracta das mensagens entre o cliente e
o servidor.
 Cada mensagem contém uma ou mais <part> que
descrevem um item a ser enviado ou recebido
 Um element part tem um atributo element ou type
<message name="AddSoapIn">
<part name="parameters" element="s0:Add" />
</message>
Referência a types
<message name="AddSoapOut">
<part name="parameters" element="s0:AddResponse" />
</message>
28
WSDL - Web Service Description Language
<message name="AddSoapIn">
<part name="parameters" element="s0:Add" />
</message>
<types>…
<s:element name="Add"> …
<s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<soap:Body>
<Add xmlns="http://w2kslosaw/DemoService/">
<x>3</x>
<y>5</y>
Request
</Add>
</soap:Body>
29
WSDL - Web Service Description Language
<portType>


(Interfaces)
Define um grupo de <operation> relacionadas, isto é uma
interface para o serviço.
Cada operação é constituída por combinações de elementos
input e output (e fault opcional) dependendo do
padrão da mensagem (Message Exchange Pattern)
<portType name="DemoServiceSoap">
<operation name="Add">
<input message="s0:AddSoapIn" />
<output message="s0:AddSoapOut" />
</operation>
</portType>
<message name="AddSoapIn">
<part name="parameters" element="s0:Add" />
</message>
30
WSDL - Web Service Description Language

Message Exchange pattern
31
WSDL - Web Service Description Language
<binding>
 Descreve os detalhes concretos da utilização de um
determinado portType com um dado protocolo.
 Define o formato das mensagens e os detalhes do protocolo.
 Especifica como criar um envelope SOAP para uma operation
Referência ao portType
<binding name="DemoServiceSoap“ type="s0:DemoServiceSoap">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"
/>
<operation name="Add">
<soap:operation style="document"
soapAction="http://w2kslosaw/addservice/Add"
/>
<input> <soap:body use="literal" /> </input>
<output> <soap:body use="literal" /> </output>
</operation>
</binding>
32
WSDL - Web Service Description Language
<soap:binding>


binding através de SOAP

transport define o protocolo de transporte
transport=http://schemas.xmlsoap.org/soap/http

style – tipo de documento
style="document"
33
WSDL - Web Service Description Language

<soap:binding>
<soap:operation style="document"
soapAction="http://w2kslosaw/addservice/Add" />
<input> <soap:body use="literal" /> </input>
<output> <soap:body use="literal" /> </output>
</operation>



<soap:operation> define a forma como é feito o binding de
determinada operação
<soapAction> define cabeçalho http SOAPACTION
<soap:body> - define a codificação da mensagem no body do
SOAP
use="literal"
34
WSDL - Web Service Description Language
<service>


O elemento service define um ou mais elementos port ( ponto
de acesso).
Um elemento <port> é usado para especificar um endereço
do Web Service com referência a um determinado binding.
<service name="DemoService">
Referência ao binding
<port name="DemoServiceSoap"
binding="s0:DemoServiceSoap">
<soap:address
location="http://w2ks/losaw/dir1/demoservice.asmx" />
</port>
</service>
35
Service
Port
Binding
Operation
PortType
Operation
Message
Part
Types
<service name="DemoService">
binding="s0:DemoServiceSoap">
<soap:address location="http://w2ks/losaw/dir1/demoservice.asmx"
<binding name="DemoServiceSoap“ type="s0:DemoServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<operation name="Add">
<portType name="DemoServiceSoap">
<operation name="Add">
<input message="s0:AddSoapIn" />
<output message="s0:AddSoapOut" />
<message name="AddSoapIn">
<part name="parameters" element="s0:Add" />
</message>
<types>
<s:element name="Add">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />
</s:sequence>
Web Services
Universal Description, Discovery
and Integration
37
UDDI

Um registo de serviços





UDDI Business registry
Um local para descobrir serviços e
informação detalhado sobre o serviço , p.e
WSDL
Classificar, catalogar e gerir Web services
Selecção dinâmica da implementação de
um serviço em Runtime
Criado inicialmente por Microsoft, IBM e
Ariba
38
UDDI

Repositórios UDDi de teste





http://test.uddi.microsoft.com/
https://uddi.ibm.com/testregistry/registry.html
http://udditest.sap.com
Replicação da informação nos repositórios
Registo da informação



White pages – identificação da empresa
Yellow pages – classificação do serviço
Green pages – informação técnica sobre o serviço
39
UDDI

UDDI Programmers APIs






Inquiry API Set
Publication API Set
Security Policy API Set
Subscription API Set
Value Set API Set
Implementações




Microsoft UDDI SDK
IBM UDDI4J
Java API for XML Registry – JAXR
WASP UDDI
40
Web Services
 Web


Services em .Net
Criação de um serviço Web
Criação de um cliente do serviço
41
WSDL - Web Service Description Language

Exemplos

1 – Web service .Net básico
Somarservice.asmx


2 – Criar Cliente do serviço
3 - Cliente para um serviço maquina w2ks
http://w2ks/losaw/dir1/demoservice.asmx
4 – Tempo nos aeroportos
42
Web Services .Net
Ficheiro .asmx
<%@ WebService Language="c#" Codebehind="demoservice.asmx.cs"
Class="demoservice.DemoService" %>

Ficheiro .asmx.cs
[WebService(Namespace=http://w2ks.dei.isep/addservice
)]
public class DemoService :
System.Web.Services.WebService
{
public DemoService()}
...
[WebMethod]
public int Add(int x, int y)
{
43
return x+y;
Web Services .Net

Framework .Net para Web Service
Fonte: Anatomy of an XML Web Service Lifetime - .NET Framework Developer's Guide
44
Web Services .Net
O cliente cria uma nova instância da classe proxy do serviço
web

w2ks.DemoService ws=new w2ks.DemoService();
A classe proxy é criada através da descrição do serviço no
ficheiro .wsdl (Reference.cs)

public class DemoService :
System.Web.Services.Protocols.SoapHttpClientProtocol {
public DemoService() {
this.Url = "http://w2ks/losaw/dir1/demoservice.asmx"; }
….
public int Add(int x, int y)
{ object[] results = this.Invoke("Add", new object[]
{x,y});
45
return ((int)(results[0])); }
Web Services .Net

O cliente chama um método do serviço
POST /losaw/dir1/demoservice.asmx
resultado=ws.Add(x,y);


HTTP/1.1 Host: w2ks
Content-Type: text/xml; charset=utf-8
Content-Length:
A plataforma no cliente
serializelength
os argumentos do método
SOAPAction: http://w2kslosaw/addservice/Add
numa mensagem SOAP
e envia a mensagem através da
<?xml version="1.0" encoding="utf-8"?>
rede usando o protocolo
HTTP para o computador onde
<soap:Envelope
reside o serviço Web
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
O serviço Web recebe
a mensagem SOAP e deserialize o
xmlns:soap="http://schemas.xmlsoap.org/soap/envelop
<soap:Body>
XML recebido. Criae/">
uma
instância da classe que implementa
xmlns="http://w2kslosaw/addservice/">
o serviço e invoca o<Add
método
do serviço.
<x>int</x> <y>int</y>
</Add>
</soap:Body>
46
</soap:Envelope>
Web Services .Net


O serviço executa o código e serialize o
HTTP/1.1enviando
200 OK
resultado
uma mensagem de
Content-Type: text/xml; charset=utf-8
resposta
paralength
o cliente
Content-Length:
<?xml version="1.0" encoding="utf-8"?>
O cliente
deserialize
a mensagem ...
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AddResponse xmlns="http://w2kslosaw/addservice/">
<AddResult>int</AddResult>
</AddResponse>
</soap:Body>
</soap:Envelope>
47
Download

Apresentação Web Services