Web services, aplicações, acesso a aplicações, XML, API
-
Upload
nuno-pereira -
Category
Documents
-
view
2.521 -
download
1
description
Transcript of Web services, aplicações, acesso a aplicações, XML, API
WEB SERVICES
WEB SERVICES
A Web service is a software system designed tosupport interoperable machine-to-machine interactionover a network. It has an interface described in amachine-processable format (specifically WSDL).Other systems interact with the Web service in amanner prescribed by its description using SOAPmessages, typically conveyed using HTTP with anXML serialization in conjunction with other Web-related standards.
Fonte:http://www.w3.org/TR/2004/NOTE-ws-arch-20040211
2
WEB SERVICES
Um cenário de utilização
3
WEB SERVICES
Um Web Service é um bloco de software que
pode ser acedido pela Internet e usado
remotamente por outras aplicações
4
Infra-estrutura para a comunicação entre aplicações
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
5
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
Usam XML para codificar as mensagens
Estruturam as mensagens usando o protocolo SOAP
São auto-descritivos permitindo a um cliente facilmente comunicar com o serviço - WSDL
São serviços que podem ser registados e facilmente descobertos – UDDI
6
Independentes de plataformas, linguagens de programação e sistemas operativos
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 de
publicação/descoberta desses serviços.
7
WEB SERVICES
Arquitectura baseada em SOAP,WSDL e UDDI
Fonte:Introduction to Web Services by Philippe Le Hégaret – w3c.org
8
CAMADAS DE PROTOCOLOS
Serviço de transporte - é responsável pelotransporte das mensagens entre aplicações.HTTP , SMTP , FTP
Mensagens XML - responsável pelacodificação das mensagens num formatoXML, de modo a serem facilmenteinterpretadas pelas aplicações. XML-RPC eSOAP
Descrição do serviço - é responsável peladescrição da interface publica do serviço,implementada através do protocolo WSDL
Descoberta do Serviço - é responsável pelacentralização dos serviços, simplificando asua publicação/descoberta - UDDI
9
CAMADAS DE PROTOCOLOS
Descoberta UDDI
Descrição WSDL
Mensagens XML SOAP,XML-RPC
HTTPSMTP FTPTransporte
10
WEB SERVICES
11
SOAPSimple Object Access Protocol
12
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/
13
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.
14
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>
15
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 edeve 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
16
MENSAGEM SOAP .NET
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>
17
[WebMethod ]
public int Add(int x, int y)
{return x+y;}
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>
18
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
19
SOAP – PROTOCOL BINDINGExemplo de um pedido HTTP com umamensagem SOAP:POST /losaw/dir1/demoservice.asmx HTTP/1.1
Host: w2ks
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>
</soap:Body>
</soap:Envelope>
20
Request
SOAP – PROTOCOL BINDING
Exemplo de resposta HTTP com mensagem SOAP:
HTTP/1.1 200 OK
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>
21
Response
CAMADAS DE PROTOCOLOS
Descoberta UDDI
Descrição WSDL
Mensagens XML SOAP,XML-RPC
HTTPSMTP FTPTransporte
22
WSDLWeb Service Description
Language
23
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
24
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
25
WSDL representa um contrato entre o cliente do serviço e
o fornecedor do serviço
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
<portType> especifica as <operation>( interface) do
serviço
<binding> especifica o formato das mensagens e um
protocolo de transporte
<service> especifica a localização para invocar o
serviço <port>
26
WSDL - WEB SERVICE DESCRIPTION LANGUAGE
DefinitionsÉ o elemento raíz de um documento WSDL. O atributotargetNamespace 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/">
27
WSDL - WEB SERVICE DESCRIPTION LANGUAGE
<types>
Contém declarações de tipos de dados referenciadas
pelas mensagens
É um Schema embebido no documento.
28
<types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://w2kslosaw/addservice/">
<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>
</s:complexType>
</s:element>
[WebMethod ]
public int Add(int x, int y)
{return x+y;}
Add
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> quedescrevem 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>
<message name="AddSoapOut">
<part name="parameters" element="s0:AddResponse" />
</message>
29
Referência a types
WSDL - WEB SERVICE DESCRIPTION LANGUAGE
<message name="AddSoapIn">
<part name="parameters" element="s0:Add" />
</message>
30
<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>
</Add>
</soap:Body>
Request
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>
31
<message name="AddSoapIn">
<part name="parameters" element="s0:Add" />
</message>
WSDL - WEB SERVICE DESCRIPTION LANGUAGE
Message Exchange pattern
32
WSDL - WEB SERVICE DESCRIPTION LANGUAGE
<binding> Descreve os detalhes concretos da utilização de umdeterminado portType com um dado protocolo.
Define o formato das mensagens e os detalhes do protocolo.
Especifica como criar um envelope SOAP para uma operation
<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>
33
WSDL - WEB SERVICE DESCRIPTION LANGUAGE
<soap:binding>
binding através de SOAP
transport define o protocolo de transportetransport=http://schemas.xmlsoap.org/soap/http
style – tipo de documentostyle="document"
34
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"
35
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">
<port name="DemoServiceSoap"
binding="s0:DemoServiceSoap">
<soap:address
location="http://w2ks/losaw/dir1/demoservice.asmx" />
</port>
</service>
36
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>
UDDIUniversal Description, Discovery andIntegration
38
UDDI
Um registo de serviçosUDDI 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
39
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
40
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
41
WEB SERVICES
Web Services em .NetCriação de um serviço Web
Criação de um cliente do serviço
42
WSDL - WEB SERVICE DESCRIPTION LANGUAGE
Exemplos
1 – Web service .Net básicoSomarservice.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
43
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)
{
return x+y;
}
44
WEB SERVICES .NET
Framework .Net para Web Service
45
Fonte: Anatomy of an XML Web Service Lifetime - .NET Framework Developer's Guide
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});
return ((int)(results[0])); }
46
WEB SERVICES .NET
O cliente chama um método do serviço
resultado=ws.Add(x,y);
A plataforma no cliente serialize os argumentos do método numa mensagem SOAP e envia a mensagem através da rede usando o protocolo HTTP para o computador onde reside o serviço Web
O serviço Web recebe a mensagem SOAP e deserialize o XML recebido. Cria uma instância da classe que implementa o serviço e invoca o método do serviço.
47
WEB SERVICES .NET
48
POST /losaw/dir1/demoservice.asmx
HTTP/1.1 Host: w2ks
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: http://w2kslosaw/addservice/Add
<?xml version="1.0" encoding="utf-8"?>
<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/envelop
e/"> <soap:Body>
<Add xmlns="http://w2kslosaw/addservice/">
<x>int</x> <y>int</y>
</Add>
</soap:Body>
</soap:Envelope>
WEB SERVICES .NET
O serviço executa o código e serialize
o resultado enviando uma mensagem
de resposta para o cliente
O cliente deserialize a mensagem ...
49
WEB SERVICES .NET
50
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<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/addservice/">
<AddResult>int</AddResult>
</AddResponse>
</soap:Body>
</soap:Envelope>