Web services, aplicações, acesso a aplicações, XML, API

50
WEB SERVICES

description

Um Web Service é um bloco de software que pode ser acedido pela Internet e usado remotamente por outras aplicações

Transcript of Web services, aplicações, acesso a aplicações, XML, API

Page 1: Web services, aplicações, acesso a aplicações, XML, API

WEB SERVICES

Page 3: Web services, aplicações, acesso a aplicações, XML, API

WEB SERVICES

Um cenário de utilização

3

Page 4: Web services, aplicações, acesso a aplicações, XML, API

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

Page 5: Web services, aplicações, acesso a aplicações, XML, API

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

Page 6: Web services, aplicações, acesso a aplicações, XML, API

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

Page 7: Web services, aplicações, acesso a aplicações, XML, API

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

Page 8: Web services, aplicações, acesso a aplicações, XML, API

WEB SERVICES

Arquitectura baseada em SOAP,WSDL e UDDI

Fonte:Introduction to Web Services by Philippe Le Hégaret – w3c.org

8

Page 9: Web services, aplicações, acesso a aplicações, XML, API

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

Page 10: Web services, aplicações, acesso a aplicações, XML, API

CAMADAS DE PROTOCOLOS

Descoberta UDDI

Descrição WSDL

Mensagens XML SOAP,XML-RPC

HTTPSMTP FTPTransporte

10

Page 11: Web services, aplicações, acesso a aplicações, XML, API

WEB SERVICES

11

Page 12: Web services, aplicações, acesso a aplicações, XML, API

SOAPSimple Object Access Protocol

12

Page 13: Web services, aplicações, acesso a aplicações, XML, API

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

Page 14: Web services, aplicações, acesso a aplicações, XML, API

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

Page 15: Web services, aplicações, acesso a aplicações, XML, API

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

Page 16: Web services, aplicações, acesso a aplicações, XML, API

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

Page 17: Web services, aplicações, acesso a aplicações, XML, API

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;}

Page 18: Web services, aplicações, acesso a aplicações, XML, API

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

Page 19: Web services, aplicações, acesso a aplicações, XML, API

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

Page 20: Web services, aplicações, acesso a aplicações, XML, API

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

Page 21: Web services, aplicações, acesso a aplicações, XML, API

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

Page 22: Web services, aplicações, acesso a aplicações, XML, API

CAMADAS DE PROTOCOLOS

Descoberta UDDI

Descrição WSDL

Mensagens XML SOAP,XML-RPC

HTTPSMTP FTPTransporte

22

Page 23: Web services, aplicações, acesso a aplicações, XML, API

WSDLWeb Service Description

Language

23

Page 24: Web services, aplicações, acesso a aplicações, XML, API

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

Page 25: Web services, aplicações, acesso a aplicações, XML, API

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

Page 26: Web services, aplicações, acesso a aplicações, XML, API

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

Page 27: Web services, aplicações, acesso a aplicações, XML, API

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

Page 28: Web services, aplicações, acesso a aplicações, XML, API

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

Page 29: Web services, aplicações, acesso a aplicações, XML, API

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

Page 30: Web services, aplicações, acesso a aplicações, XML, API

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

Page 31: Web services, aplicações, acesso a aplicações, XML, API

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>

Page 32: Web services, aplicações, acesso a aplicações, XML, API

WSDL - WEB SERVICE DESCRIPTION LANGUAGE

Message Exchange pattern

32

Page 33: Web services, aplicações, acesso a aplicações, XML, API

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

Page 34: Web services, aplicações, acesso a aplicações, XML, API

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

Page 35: Web services, aplicações, acesso a aplicações, XML, API

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

Page 36: Web services, aplicações, acesso a aplicações, XML, API

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

Page 37: Web services, aplicações, acesso a aplicações, XML, API

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>

Page 38: Web services, aplicações, acesso a aplicações, XML, API

UDDIUniversal Description, Discovery andIntegration

38

Page 39: Web services, aplicações, acesso a aplicações, XML, API

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

Page 40: Web services, aplicações, acesso a aplicações, XML, API

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

Page 41: Web services, aplicações, acesso a aplicações, XML, API

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

Page 42: Web services, aplicações, acesso a aplicações, XML, API

WEB SERVICES

Web Services em .NetCriação de um serviço Web

Criação de um cliente do serviço

42

Page 43: Web services, aplicações, acesso a aplicações, XML, API

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

Page 44: Web services, aplicações, acesso a aplicações, XML, API

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

Page 45: Web services, aplicações, acesso a aplicações, XML, API

WEB SERVICES .NET

Framework .Net para Web Service

45

Fonte: Anatomy of an XML Web Service Lifetime - .NET Framework Developer's Guide

Page 46: Web services, aplicações, acesso a aplicações, XML, API

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

Page 47: Web services, aplicações, acesso a aplicações, XML, API

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

Page 48: Web services, aplicações, acesso a aplicações, XML, API

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>

Page 49: Web services, aplicações, acesso a aplicações, XML, API

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

Page 50: Web services, aplicações, acesso a aplicações, XML, API

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>