Aula 23: Web Services (I)

Documentos relacionados
Sistemas distribuídos. Prof. Emiliano Monteiro

Introdução a Web Services

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

Web Services - Definição. Web Services - Introdução. Universidade Federal de Santa Catarina. DSOOII Web Services

Desenvolvimento de Aplicações Distribuídas

Universidade Federal Fluminense Mestrado em Sistemas de Telecomunicações. Disciplina: Fundamentos de Sistemas Multimídia.

Web Services. Tópicos. Introdução (1/3) CONTEXTO HISTÓRICO WEB SERVICES Conclusões

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Simplificada (Juridica) Versão: 1.0. Autor: Angelo Bestetti Junior

Aula 1: Apresentação, Computação Corporativa

INFORMÁTICA. Instruções: Para responder às questões de números 71 e 72, considere o texto a seguir:

Aula 5: J2EE Application Assembly Model

PMR3507 Fábrica digital

O que se espera para o futuro dos Web Services? As tecnologias são respectivamente JSON e REST.

DESENVOLVIMENTO DE SISTEMAS SENSÍVEIS

LEIC/LERC 2007/08 Exame de Época Especial de Sistemas Distribuídos

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Aula 2: Arquitetura em Três Camadas e APIs

Web Services. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

REST RESTfulWeb Services JAX-RS

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

UFG - Instituto de Informática

5 Estudo de Caso. 5.1.O Cenário

Sérgio Koch Van-Dall

Prof. Me. Sérgio Carlos Portari Júnior

STD29006 Sistemas Distribuídos

Redes de Computadores e Aplicações

Web Services. (Introdução)

SERVIÇOS WEB. Frankley Gustavo F. Mesquita, Tamiris Souza Fonseca. 27 de junho de 2016

Técnicas de Programação para a Web. Luiz Cláudio Silva. Novembro de Apresentação

Sistemas Operacionais II

Objetos e Componentes Distribuídos: EJB e CORBA

SERVIÇO CONTRATO Especificação das operações de Serviço

Principais conceitos de CORBA

INTEGRAÇÃO DE UMA REDE DE SENSORES SEM FIO COM A WEB UTILIZANDO UMA ARQUITETURA ORIENTADA A SERVIÇO

Webservices LEANDRO MENDES FERREIRA

Projeto. Observatório Nacional de Clima e Saúde

Sistemas Distribuídos

UNIVERSIDADE FEDERAL DO MARANHÃO CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO DIEGO RABELO MACIEL

GERENCIAMENTO BASEADO NA WEB. Baseado em slides gentilmente cedidos pelo Prof. João Henrique Kleinschmidt da UFABC.

Engenharia de Software Orientada a Serviços

Desenvolvimento de Aplicações Corporativas Avançadas. Web Services

Redes de Computadores

Sistemas Distribuídos Aula 10

Arquitetura de Rede. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

EA975 - Laboratório de Engenharia de Software

Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos

Introdução a Web Services

Comentários: Desenvolvimento de Sistemas Rogério Araújo

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Web Services REST JAX-RS

Camada de Aplicação da Arquitetura TCP/IP

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

3 Tecnologias Relacionadas

Service Oriented Architectures (SOA)

Manual de Integração Consulta Automática de NFS-e

Vamos fazer um pequeno experimento

Protótipo de Protocolo de Aplicação para Troca de Documentos da Área Extra Judicial. Acadêmico: Fabrício Bento Orientador: Paulo Fernando da Silva

Integração de sistemas utilizando Web Services do tipo REST

Serviços Web: Arquitetura

Web Services. Sistemas Distribuídos Marcos Costa

Manual de Integração WebService

2ª edição. Daniel Adorno Gomes. Novatec

Uso da Internet. Disciplina: Gestão da Tecnologia de Sistemas. Professor: Thiago Silva Prates

2 Versão 1: Funcionalidade Básica e Interface Web

Desenvolvendo um protótipo do UDDI. Luís Fernando Jordan. 1. Introdução. 1.1 Apresentação.

Objetos e Componentes Distribuídos: EJB

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa

O Processo da Descoberta de um Serviço: Discovery

Sistemas Operacionais II

AULA 1 INTRODUÇÃO AO JAVA

Visões Arquiteturais. Visões Arquiteturais

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados

Programação para Web

API SEBRAE MÉTODOS PARA INTEGRAÇÃO COM A PLATAFORMA Versão 1.0 Brasília 2017

SOLUÇÃO DE INTEGRAÇÃO PARA O SISPORTOS

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Service Oriented Architecture SOA

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Pessoa Física NFE (RFB) Versão: 1.0. Autor: Angelo Bestetti Junior

HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Informática Parte 23 Prof. Márcio Hunecke

Roteiro. Por que Web Services? Computação Distribuída - DCOM e CORBA. Visão Geral XML. João Gustavo Gazolla Borges, Maverson Eduardo Schulze Rosa SOAP

Web Services. Integração de aplicações na Web. Sistemas Distribuídos

Kassius Vargas Prestes

Protocolo HTTP. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 22

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

Aula 12: Memória: Barramentos e Registradores

Aula 12 -QS -Engenharia de SW Orientada a Serviço

PROGRAMA DE MBA em Gestão e Engenharia do Produto. O Produto Internet e suas Aplicações

Comunicação. capítulo

Livro texto: Capítulo 1

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Transcrição:

Aula 23: Web Services (I) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) Web Services (I) TEPIS II 1 / 30

Web Services: Introdução Serviços oferecidos via web. Arquitetura cliente-servidor. Cliente requisita serviços. Servidor envia respostas. Utilizam protocolo HTTP para comunicação. Embora outros protocolos, como SMTP, também possam ser usados. Permitem a interação entre sistemas heterogêneos. Em termos de linguagem, plataforma, frameworks. Diego Passos (UFF) Web Services (I) TEPIS II 2 / 30

Web Services: Introdução (II) O uso de protocolos de comunicação simples como o HTTP permite grande portabilidade aos Web Services. Protocolos de fácil implementação. Implementações prontas em várias plataformas. Diversas linguagens. Além do protocolo de comunicação, Web Services empregam também uma linguagem para as requisições e respostas. Idealmente, esta linguagem deve ser portável, universal. Características similares às do protocolo de comunicação. Em geral, opta-se por XML. Mas há alternativas, como o JSON. Diego Passos (UFF) Web Services (I) TEPIS II 3 / 30

Web Services: Introdução (III) Os Web Services são uma forma de computação distribuída. Podem, a princípio, ser usados para distribuir trabalho entre várias unidades computacionais. Uso mais comum, no entanto, é na integração de sistemas já existentes. Sistemas simples fornecem serviços pequenos de domínios específicos. Sistemas mais complexos são construídos com base nestes serviços básicos. Requisitam computações ou informações de forma distribuída. Complementam estas informações com computações próprias. Diego Passos (UFF) Web Services (I) TEPIS II 4 / 30

Web Services: Introdução (IV) Pode-se pensar em um Web Service como uma API. Disponibiliza várias funções/métodos computacionais. Determina o conjunto e tipo dos parâmetros a serem especificados. Determina o tipo de retorno. Cliente segue as especificações para obter respostas. Mas os Web Services agregam mais que uma simples API. Eles oferecem uma infraestrutura computacional para executar a tarefa. Em geral, eles têm acesso a bases de dados necessárias para a computação requisitada. Diego Passos (UFF) Web Services (I) TEPIS II 5 / 30

Web Services: Introdução (V) Exemplo de Web Service: QPX. Web Service para busca de opções de voo. Fornece uma API bastante simples: um único método, para busca. Parâmetros para o método são especificados através de uma linguagem padronizada (JSON). Resposta também é formatada na mesma linguagem. Comunicação entre cliente e servidor é encapsulada no protocolo HTTP. Mais que a API, no entanto, o QPX é também a implementação e a infraestrutura. Computação em si é feita nos servidores da Google. Estes servidores (e não o cliente) têm acesso a bases de dados necessárias à computação. Informações sobre os voos. Diego Passos (UFF) Web Services (I) TEPIS II 6 / 30

Web Services: Arquitetura Protocolo de Comunicação Requisição (Linguagem Padronizada) Cliente Servidor Protocolo de Comunicação Resposta (Linguagem Padronizada) Diego Passos (UFF) Web Services (I) TEPIS II 7 / 30

Web Services: Arquitetura (II) Note que o conceito dos Web Services é muito simples. E sua arquitetura, como consequência, também. A questão, portanto, passa a ser a escolha de: Protocolo de comunicação. Linguagem de representação dos dados. Requisição e resposta. É uma questão importante já que idealmente os Web Services deveriam prover interoperabilidade e portabilidade. Diego Passos (UFF) Web Services (I) TEPIS II 8 / 30

JDBC: Arquitetura (III) Embora haja raras exceções, os Web Services são tipicamente baseados em HTTP. Os detalhes podem variar, no entanto. Qual método (GET, POST,... ) usar. Cabeçalhos específicos. HTTPS vs. HTTP. O maior problema está na especificação da linguagem para representação dos dados. Embora haja um padrão: SOAP. Diego Passos (UFF) Web Services (I) TEPIS II 9 / 30

Web Services: Tipos Atualmente, os Web Services podem ser classificados em dois grandes grupos: Big Web Services (também conhecidos como Arbitrary Web Services). RESTfull Web Services. Os Big Web Services seguem uma especificação padronizada pelo W3C. Especificação complexa que exige a criação e gerência de vários artefatos. Os RESTfull Web Services seguem apenas uma filosofia comum. Não há um padrão formal que os defina. Embora a industria pareça estar convergindo para algumas práticas comuns. De toda forma, são considerados bem mais simples que os Big Web Services. Diego Passos (UFF) Web Services (I) TEPIS II 10 / 30

Web Services: Tipos (II) Ambos os tipos de Web Services são hoje contemplados nas APIs disponíveis no J2EE. JAX-WS e JAX-RS. As APIs permitem que, de forma relativamente fácil, criemos Web Services. Tanto do tipo RESTfull, quanto do tipo Big. No caso dos Big Web Services, a API também dá suporte a clientes. Não ocorre na API do tipo RESTfull. Falta de padronização não permite. Diego Passos (UFF) Web Services (I) TEPIS II 11 / 30

Web Services: Objetivo da Disciplina Nesta disciplina, teremos foco no uso das APIs JAX-WS e JAX-RS para criação e disponibilização de Web Services. Veremos também exemplos de clientes. Discutiremos também o funcionamento interno dos Big Web Services. Protocolo SOAP. Padrão WSDL. Diego Passos (UFF) Web Services (I) TEPIS II 12 / 30

Big Web Services: Visão Geral Os Big Web Services são o padrão oficial para os Web Services. Padrão definido pelo W3C. Segundo o W3C: Web Services são sistemas de software projetados para suportar interação entre máquinas de forma interoperável através de uma rede. Possuem uma interface descrita em um formato que é processável por computadores (WSDL). Outros sistemas interagem da forma descrita através de mensagens SOAP. Tipicamente, mensagens SOAP são encapsuladas no protocolo HTTP. O SOAP formata suas mensagens com base na linguagem XML. Diego Passos (UFF) Web Services (I) TEPIS II 13 / 30

Big Web Services: Visão Geral (II) Note que há muitos componentes envolvidos no funcionamento dos Big Web Services. WSDL, SOAP, XML, HTTP. De forma simplificada, para implementar um Big Web Service, são necessários os seguintes elementos: O software que roda no servidor e realiza o serviço desejado (agnóstico a linguagem ou tecnologia). A interface do serviço (linguagem WSDL). Servidor HTTP capaz de extrair mensagens SOAP e redirecioná-las para o serviço necessário. E realizar a operação inversa para as respostas. Implementação do protocolo SOAP para extrair parâmetros da requisição e chamar o método correspondente. E realizar a operação inversa para as respostas. Diego Passos (UFF) Web Services (I) TEPIS II 14 / 30

Big Web Services: WSDL Acrônimo para Web Services Description Language. Formato baseado em XML para descrição de um Web Service. Descreve um Web Service em termos de: Como o serviço pode ser chamado. Quais parâmetros espera (e em qual formato). Qual o tipo de retorno (e em qual formato). Onde o serviço está localizado. O formato tem o objetivo de ser machine-readable. Pode ser interpretado automaticamente por computadores. Diego Passos (UFF) Web Services (I) TEPIS II 15 / 30

Big Web Services: WSDL (II) De forma abstrata, o WSDL pode ser entendido como o equivalente das assinaturas de métodos em uma linguagem. Exemplo (em C): Arquivo de cabeçalho (.h) inclui conjunto de assinaturas de funções. Nome, tipo de retorno, lista de parâmetros. Em um arquivo fonte (.c), referenciamos o cabeçalho e usamos as funções. A partir das assinaturas, compilador pode checar chamadas. A função chamada existe? O número de parâmetros está correto? Os tipos são compatíveis? Como organizá-los na pilha? O tipo de retorno é compatível? Arquivo WSDL serve ao mesmo propósito, mas as chamadas são feitas para serviços remotos via web. Diego Passos (UFF) Web Services (I) TEPIS II 16 / 30

Big Web Services: Componentes do WSDL Especificação mudou ligeiramente na versão 2.0. Usaremos a versão 2.0 neste curso. Arquivo dividido entre seções abstrata e concreta. Seção abstrata define tipos, interfaces, operações, parâmetros, tipos de retorno,... Seção concreta define bindings, serviços, endpoints,... (Fonte: Wikipedia) Diego Passos (UFF) Web Services (I) TEPIS II 17 / 30

Big Web Services: Componentes do WSDL (II) Os tipos são a declaração mais básica do WSDL. Estabelecem a estrutura dos dados trocados na interação com o Web Service. Tanto na passagem de parâmetros, quanto na recepção de resultados. Utilizam o XML Schema. As interfaces são análogas às interfaces das linguagens de programação. Descrevem as operações disponibilizadas pelo Web Service. Conjunto de uma ou mais operações. As operações são listadas dentro das interfaces e contém: Nome. Parâmetros de entrada (referenciam os tipos definidos anteriormente). Saídas (referenciam os tipos definidos anteriormente). Diego Passos (UFF) Web Services (I) TEPIS II 18 / 30

Big Web Services: Componentes do WSDL (III) Os bindings ligam interfaces a protocolos. Determinam que uma determinada interface está disponível para acesso via um determinado protocolo. Embora o SOAP seja o padrão, WSDL suporta outros. Também determina características específicas do protocolo (e.g., RPC ou Document). Bindings também devem especificar quais operações da interface estão disponíveis. Um binding pode escolher não disponibilizar todas as operações de uma interface. Finalmente, os serviços fazem a ligação entre bindings e endpoints. Os endpoints são os endereços que dizem como o serviço pode ser acessado. Tipicamente URLs. Um serviço é composto por um ou mais endpoints. Cada endpoint em um serviço está associado a um binding. Diego Passos (UFF) Web Services (I) TEPIS II 19 / 30

Big Web Services: Exemplo de Arquivo WSDL <?xml version="1.0" encoding="utf-8"?> <description xmlns="http://www.w3.org/ns/wsdl" xmlns:tns="http://www.tmsws.com/wsdl20sample" xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/" targetnamespace="http://www.tmsws.com/wsdl20sample"> <types> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns="http://www.tmsws.com/wsdl20sample" targetnamespace="http://www.example.com/wsdl20sample"> <xs:element name="request">... </xs:element> <xs:element name="response">... </xs:element> </xs:schema> </types> <interface name="interface1"> <fault name="error1" element="tns:response"/> <operation name="get" pattern="http://www.w3.org/ns/wsdl/in-out"> <input messagelabel="in" element="tns:request"/> <output messagelabel="out" element="tns:response"/> </operation> </interface> <binding name="soapbinding" interface="tns:interface1" type="http://www.w3.org/ns/wsdl/soap" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/http/" wsoap:mepdefault="http://www.w3.org/2003/05/soap/mep/request-response"> <operation ref="tns:get" /> </binding> <service name="service1" interface="tns:interface1"> <endpoint name="soapendpoint" binding="tns:soapbinding" address="http://www.example.com/soap/"/> </service> </description> Diego Passos (UFF) Web Services (I) TEPIS II 20 / 30

Big Web Services: Arquivo WSDL É responsabilidade do Web Service prover o arquivo WSDL. Mas não é necessário criá-lo manualmente. Há ferramentas capazes de fazer isso a partir dos fontes que implementam o serviço. Na JAX-WS, a partir de um WSDL, o cliente pode pedir que a API crie uma camada de software que irá intermediar o Web Service. Tornará a utilização deste quase transparente ao cliente. Depois de algumas configurações iniciais, o cliente poderá acessar o Web Service como um objeto local. A JAX-WS também permite o uso de um Big Web Service sem um WSDL. Neste caso, o cliente precisa, programaticamente, especificar as configurações do serviço. Exemplos: endereço do Web Service, nome do método, tipos dos parâmetros e de retorno, etc. Diego Passos (UFF) Web Services (I) TEPIS II 21 / 30

Big Web Services: Arquivo WSDL (II) Uma vez criado, como o cliente obtém o arquivo WSDL de um Web Service? O padrão especificado pela W3C prevê a existência de um UDDI. Universal Description, Discovery and Integration. Terceira parte conhecida pelo cliente. Armazena um repositório de WSDL descrevendo Web Services. Cliente contacta o UDDI e requisita um determinado tipo de serviço. UDDI responde com o WSDL de um Web Service adequado. Nesta disciplina, no entanto, abstrairemos esta arquitetura. Supomos que o WSDL está disponível de alguma forma para o cliente. Em certos casos, supomos que o cliente não tem o WSDL, mas conhece as especificidades do serviço. Diego Passos (UFF) Web Services (I) TEPIS II 22 / 30

Big Web Services: SOAP Acrônimo para Simple Object Access Protocol. Protocolo para transferência de dados estruturados via rede. Padroniza a representação de estruturas de dados potencialmente complexas. Independente de linguagem de programação ou tecnologia. Utiliza um formato de mensagem baseado em XML. Precisa ser encapsulado em um protocolo de transporte. Aqui, transporte não se refere à camada de transporte na pilha TCP/IP. Mas sim a um protocolo (geralmente na camada de aplicação) como HTTP ou SMTP. Este protocolo é responsável por tarefas como endereçamento e a transmissão em si das mensagens. Base dos Big Web Services. Diego Passos (UFF) Web Services (I) TEPIS II 23 / 30

Big Web Services: SOAP (II) O padrão SOAP é composto por três partes: A definição de um envelope, contendo metadados que especificam como a mensagem é estruturada. Regras de codificação que determinam como representar tipos de dado das aplicações. Convenção para representar chamadas de funções e seus retornos. Idealmente, deseja-se que o SOAP apresente as seguintes características: Extensibilidade. Neutralidade (em relação ao protocolo de transporte). Independência (em relação ao modelo de programação). Diego Passos (UFF) Web Services (I) TEPIS II 24 / 30

Big Web Services: Uma Mensagem SOAP É formatada como um documento XML composto pelos seguintes elementos: Envelope: identifica o documento XML como uma mensagem SOAP. Header: contém cabeçalhos com metadados relevantes (opcional). Body: contém os dados de chamada de métodos ou valores de retorno. Fault: contém informações sobre possíveis erros durante o processamento da mensagem (opcional). A opção por utilizar documentos XML tem vantagens e desvantagens: Evita problemas de interoperabilidade (e.g., problemas com o endianness). Facilita a depuração das mensagens geradas. Tende a ser mais lento que formatos binários especializados. Tende a adicionar muito mais overhead. Diego Passos (UFF) Web Services (I) TEPIS II 25 / 30

Big Web Services: Uma Mensagem SOAP (II) Exemplo: POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: 299 SOAPAction: "http://www.w3.org/2003/05/soap-envelope" <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:header> </soap:header> <soap:body> <m:getstockprice xmlns:m="http://www.example.org/stock"> <m:stockname>ibm</m:stockname> </m:getstockprice> </soap:body> </soap:envelope> Diego Passos (UFF) Web Services (I) TEPIS II 26 / 30

Big Web Services: SOAP e JAX-WS Na prática, como desenvolvedores de clientes de Web Services raramente precisamos nos preocupar com o SOAP. Aplicações cliente raramente constroem diretamente as mensagens SOAP. Há bibliotecas e frameworks que intermediam este processo. Cliente simplesmente utiliza primitivas da linguagem de programação ou da biblioteca. Biblioteca se encarrega de traduzir isso para mensagens SOAP. A JAX-WS é um exemplo deste tipo de biblioteca. A partir de algumas configurações iniciais, ela tornará as mensagens SOAP transparentes. Cliente fará chamadas a métodos em objetos locais. Estes serão traduzidos para mensagens SOAP bem formatadas. Diego Passos (UFF) Web Services (I) TEPIS II 27 / 30

Big Web Services: Por Que? Superficialmente, os Web Services parecem muito complexos. Em especial, os Big Web Services. Muitas tecnologias envolvidas. Muitos artefatos a serem gerados. Além disso, existem outras tecnologias para este tipo de computação distribuída. Em Java, por exemplo: EJB, RMI,... Por que, então, utilizar os Web Services? Algumas potenciais vantagens: Independência de tecnologia/linguagem. Uso de protocolos de transporte comuns (comumente tolerados por firewalls). Diego Passos (UFF) Web Services (I) TEPIS II 28 / 30

Próxima Aula A API JAX-WS. Como escrever Big Web Services. Montagem e disponibilizaçao. Geração dos artefatos. Como escrever um cliente. Mapeamento de tipos de dados. Diego Passos (UFF) Web Services (I) TEPIS II 29 / 30

Referências Conteúdo e exemplos baseados em: Tutorial da Oracle sobre Web Services. http://docs.oracle.com/javaee/6/tutorial/doc/bnayk.html Jim Farley e William Crawford. Java Enterprise in a Nutshell: A Practical Guide. Terceira edição. Capítulo 12. Diego Passos (UFF) Web Services (I) TEPIS II 30 / 30