STD29006 Sistemas Distribuídos

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

Introdução Serviços Web WSDL SOAP UDDI Ferramentas. Serviços Web. (Web Services) Emerson Ribeiro de Mello

Introdução a Web Services

Desenvolvimento de Aplicações Distribuídas

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

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 REST JAX-RS

Web Services. Sistemas Distribuídos Marcos Costa

Informática Parte 26 Prof. Márcio Hunecke

Webservices LEANDRO MENDES FERREIRA

Sistemas distribuídos. Prof. Emiliano Monteiro

PMR3507 Fábrica digital

EA975 - Laboratório de Engenharia de Software

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

Web Services REST e JSON

Serviços Web: Arquitetura

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

Comunicação entre Processos

Engenharia de Software Orientada a Serviços

REST RESTfulWeb Services JAX-RS

Service Oriented Architecture SOA

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

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

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

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

Principais conceitos de CORBA

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

UNIVERSIDADE. Sistemas Distribuídos

Design Coerente: decisões de tecnologia para APIs

>>> RESTful API >>> Com Node.js e Restify. Name: Anderson Pimentel Date: 19 de Março de

Web Services SOAP. Introdução

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

Sistemas Distribuídos

Ricardo Couto Antunes da Rocha 2005 Ricardo Couto Antunes da Rocha

Desenvolvimento de Aplicações Distribuídas

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

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

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

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

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

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

Web services. Um web service é qualquer software que está disponível através da Internet através de uma interface XML.

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

Uma sintaxe universal para identificar os recursos. No sistema REST, cada recurso é unicamente direcionado através da sua URI.

Sistemas Operacionais II

Sistemas Operacionais II

Aula 23: Web Services (I)

tecnologias web e gestão de identidade

REST. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 35

Prática da Disciplina de Sistemas Distribuídos Web Services REST IFMA DAI Professor Mauro Lopes C. Silva

Arquitetura Orientada a Serviços A Evolução de Estruturas Complexas a partir de Estruturas Simples. Neil Paiva Tizzo GEINFO

INTRODUÇÃO. RPC x RMI

Sistemas Distribuídos

Instrutor: Eder Martins Franco

Objetos e Componentes Distribuídos: EJB

EA975 - Laboratório de Engenharia de Software. Objetivo do curso. Turmas K/L Aula 1

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

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Web Services. (Introdução)

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

Introdução a Web Services

Firewall - Inspeção com estado. (Stateful Inspection)

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

Sistemas Distribuídos

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Aula 12 Modelagem de Processos de Negócio Prof. Filipe Wall Mutz

Processos em Sistemas Distribuídos e Comunicação entre Processos

Programação para Web

Informática Parte 23 Prof. Márcio Hunecke

Engenharia de Software Orientada a Serviços

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

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

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

ESTILO ARQUITETURAL REST PARA CRIAÇÃO DE WEB SERVICES RESTFUL

REST Um Estilo de Arquitetura de Sistemas Distribuídos

Objetos e Componentes Distribuídos: EJB e CORBA

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI)

Sistemas Distribuídos na Web

EA975 - Laboratório de Engenharia de Software

SOA (Service-Oriented Architecture) Conceitos e Aplicação. Daniel Macêdo Batista IME/USP Março

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

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

Desenvolvimento Web. Introdução Geral. Prof. Vicente Paulo de Camargo

DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

UNIVERSIDADE. Sistemas Distribuídos

Kassius Vargas Prestes

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA. Ivan Luiz Salvadori

UFG - Instituto de Informática

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

STD29006 Sistemas Distribuídos

WAP. Determinação de Superfícies. Visíveis. José Almir Freire de Moura Júnior.

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

MADALENA PEREIRA DA SILVA SLA Sociedade Lageana de Educação DCET Departamento de Ciências Exatas e Tecnológica

Chamada Remota de Métodos. Marco Túlio de Oliveira Valente

Capítulo 2. Camada de aplicação

Sistemas Distribuídos. Web Services. Edeyson Andrade Gomes.

SERVIÇO CONTRATO. Especificação das operações de Serviço MANUAL DO USUÁRIO CONSULTAR CONTRATO. Projeto: Plataforma de Integração.

Transcrição:

STD29006 Sistemas Distribuídos Serviços Web Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/std 22 de setembro de 2017 1/31

Arquitetura Orientada a Serviços Service Oriented Architecture SOA Definição Caracterização de sistemas distribuídos que organiza aplicações através de conjunto de interações de serviços que são acessados através de interfaces e protocolos padronizados interfaces são auto-descritivas e baseadas em padrões abertos São definidos três papéis: Diretório para registro de serviços Repositório para publicação e localização de interfaces dos serviços Provedor de Serviços Responsável por publicar interfaces dos serviços que provê, bem como atender requisições dos clientes Cliente Aplicação ou outro serviço que envia requisições a um Serviço 2/31

Arquitetura Orientada a Serviços Service Oriented Architecture SOA Descrição do serviço Registro de serviços Localizar Publicar Cliente Invocar Descrição do serviço Provedor de serviços Serviço 3/31

O que são serviços Neutro à tecnologia Invocado através de tecnologias padrões (protocolos, mecanimos de publicação e de busca) amplamente aceitas Fracamente acoplado Não requer o conhecimento prévio de qualquer estrutura interna presente no lado do cliente ou do serviço Localização transparente Informações sobre a definição e localização são publicadas em um repositório e estão acessíveis a uma variedade de clientes, independente da localizações dos mesmos 4/31

Serviços Web (Web Services) É um tipo específico de serviço identificado por uma URL e que faz uso de padrões abertos e amplamente difundidos (HTTP e XML) Coleção de operações sobre recursos (programas, objetos, banco de dados) que podem ser usadas por clientes através da Internet Facilidade para transpor firewalls baseados em filtros de pacotes (portas 80 e 443) 5/31

Serviços Web (Web Services) É um tipo específico de serviço identificado por uma URL e que faz uso de padrões abertos e amplamente difundidos (HTTP e XML) Coleção de operações sobre recursos (programas, objetos, banco de dados) que podem ser usadas por clientes através da Internet Facilidade para transpor firewalls baseados em filtros de pacotes (portas 80 e 443) Servidor web (web server)!= Serviço Web (Web Service) web server implementa o protocolo HTTP Web Service provê um serviço baseado nas operações que foram definidas em sua interface 5/31

Representação dos dados Revisão das últimas aulas Representação Externa de Dados acordo para representar dados primitivos e estrutura de dados em um formato padrão Representação binária dos dados external Data Represenation (XDR) CORBA IDL Serialização de objetos Java Google Protocol Buffers Representação textual dos dados extensible Markup Language (XML) JavaScript Object Notation (JSON) 6/31

Representação dos dados Revisão das últimas aulas Representação Externa de Dados acordo para representar dados primitivos e estrutura de dados em um formato padrão Representação binária dos dados external Data Represenation (XDR) CORBA IDL Serialização de objetos Java Google Protocol Buffers Representação textual dos dados extensible Markup Language (XML) JavaScript Object Notation (JSON) Empacotamento (marshalling) pegar uma coleção de dados e colocá-la dentro de um formato adequado para transmissão em uma mensagem Desempacotamento (unmarshalling) abrir uma mensagem e gerar a coleção de dados equivalente no destino 6/31

extensible Markup Language (XML) XML permite ser estendida usuários podem criar suas próprias marcações (tags) 1 <pessoa> 2 <nome>alice</nome> 3 <sobrenome>dos Santos</sobrenome> 4 <idade>20</idade> 5 <telefones> 6 <numerotel tipo="residencial">48 3381 2800</numeroTel> 7 <numerotel tipo="celular">48 93381 2800</numeroTel> 8 </telefones> 9 </pessoa> 7/31

JavaScript Object Notation (JSON) 10 { 11 "nome": "Alice", 12 "sobrenome": "dos Santos", 13 "idade": "20", 14 "telefones": [ 15 { 16 "tipo": "residencial", 17 "#valor": "48 3381 2800" 18 }, 19 { 20 "tipo": "celular", 21 "#valor": "48 93381 2800" 22 } 23 ] 24 } Formato bem aceito em aplicações web, principalmente pelo fato dos navegadores possuírem interpretadores JavaScript 8/31

Arquitetura dos Serviços Web Duas abordagens Baseado no protocolo SOAP Possui diversas especificações para segurança, orquestração, etc. Ex: WS-Policy, WS-Security, WS-Trust Baseado no estilo REST Representational State Transfer REST Fundamentado nos conceitos da WWW, que são: métodos HTTP, URI e linguagens de marcação (HTML, XML ou JSON) 9/31

Arquitetura dos Serviços Web Abordagem com SOAP 1 Descrever a interface do serviço para essa aplicação utilizando uma linguagem padrão Web Services Description Language (WSDL) 2 Disponibilizar esse documento (de alguma forma) P.e. Universal Description, Discovery and Integration (UDDI) 3 Troca de mensagens XML SOAP 10/31

Arquitetura dos Serviços Web 2. Consulta 3. Obtém a descrição do serviço WSDL UDDI 1. Publica WSDL Cliente 4. Efetua a invocação Serviço Web 11/31

Web Services Descritpion Language WSDL Descrição dos serviços Quais são os serviços oferecidos? Quais as informações necessárias para invocar um serviço? Como cliente e servidor sabem como processar as requisições? Em qual formato o serviço deve enviar as informações para o cliente? 12/31

Web Services Descritpion Language WSDL Descrição dos serviços Quais são os serviços oferecidos? Quais as informações necessárias para invocar um serviço? Como cliente e servidor sabem como processar as requisições? Em qual formato o serviço deve enviar as informações para o cliente? WDSL Gramática em XML para especificar interfaces de Serviços Web Operações disponíveis Tipos de dados Protocolos utilizados Localização do serviço 12/31

Documento WSDL Um documento WSDL é composto por três elementos principais definição dos tipos de dados (types) especifica a estrutura e o conteúdo das mensagens operações abstratas (messages e operation) descreve as operações que poderão ser executadas associação dos serviços (port) especifica como mapear as operações nos protocolos de rede utilizados para o transporte Documento WSDL Tipos dos dados das mensagens Operações abstratas Associação dos Serviços Transporte 13/31

Exemplo WSDL: Calculadora.java 25 public class Calculadora{ 26 27 public int soma(int i1, int i2){ 28 return i1 + i2; 29 } 30 31 public int subtracao(int i1, int i2){ 32 return i1 - i2; 33 } 34 } 14/31

Documento WSDL 35 <wsdl:definitions targetnamespace="http://localhost/calculadora.jws"> 36 37 <wsdl:message name="subtracaorequest"> 38 <wsdl:part name="i1" type="xsd:int"/> 39 <wsdl:part name="i2" type="xsd:int"/> 40 </wsdl:message> 41 42 <wsdl:message name="somarequest"> 43 <wsdl:part name="i1" type="xsd:int"/> 44 <wsdl:part name="i2" type="xsd:int"/> 45 </wsdl:message> 46 47 <wsdl:message name="subtracaoresponse"> 48 <wsdl:part name="subtracaoreturn" type="xsd:int"/> 49 </wsdl:message> 50 51 <wsdl:message name="somaresponse"> 52 <wsdl:part name="somareturn" type="xsd:int"/> 53 </wsdl:message> 15/31

Documento WSDL 54 <wsdl:porttype name="calculadora"> 55 56 <wsdl:operation name="soma" parameterorder="i1 i2"> 57 <wsdl:input message="impl:somarequest" name="somarequest"/> 58 <wsdl:output message="impl:somaresponse" name="somaresponse"/> 59 </wsdl:operation> 60 61 <wsdl:operation name="subtracao" parameterorder="i1 i2"> 62 <wsdl:input message="impl:subtracaorequest" name="subtracaorequest" /> 63 <wsdl:output message="impl:subtracaoresponse" name=" subtracaoresponse"/> 64 </wsdl:operation> 65 66 </wsdl:porttype> 16/31

Documento WSDL 67 <wsdl:service name="calculadoraservice"> 68 69 <wsdl:port binding="impl:calculadorasoapbinding" name="calculadora" > 70 <wsdlsoap:address location="http://localhost/calculadora.jws"/> 71 </wsdl:port> 72 73 </wsdl:service> 74 75 </wsdl:definitions> 17/31

SOAP - Protocolo para troca de mensagens (RPC) Uma mensagem SOAP consiste de Envelope Elemento raiz no documento XML que representa a mensagem SOAP Header (opcional) Oferece mecanismos para estender a mensagem Informações de roteamento, segurança, coordenação Body Document - A RPC em si faz parte deste elemento Fault (opcional) SOAP Envelope SOAP Header Header Block... Header Block SOAP Body Body Block... Body Block Comunicação pode ser síncrona ou assíncrona. Mensagens SOAP podem ser transportadas sobre HTTP, SMTP, JMS,... 18/31

Pedido SOAP 76 <?xml version="1.0" encoding="utf-8"?> 77 <soapenv:envelope 78 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 79 xmlns:xsd="http://www.w3.org/2001/xmlschema" 80 xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> 81 <soapenv:body> 82 <soma soapenv:encodingstyle="http://schemas.xmlsoap.org/soap/ encoding/"> 83 <op1 xsi:type="xsd:int">10</op1> 84 <op2 xsi:type="xsd:int">8</op2> 85 </soma> 86 </soapenv:body> 87 </soapenv:envelope> 88 19/31

Resposta SOAP 89 <?xml version="1.0" encoding="utf-8"?> 90 <soapenv:envelope 91 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 92 xmlns:xsd="http://www.w3.org/2001/xmlschema" 93 xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> 94 <soapenv:body> 95 <somaresponse soapenv:encodingstyle= 96 "http://schemas.xmlsoap.org/soap/encoding/"> 97 <somareturn xsi:type="xsd:int">18</somareturn> 98 </somaresponse> 99 </soapenv:body> 100 </soapenv:envelope> 101 20/31

REST: Estilo de arquitetura para Serviços Web 21/31

Definição do REST REpresentational State Transfer REST se baseia no comportamento de aplicações web Recursos estão dispostos em uma rede de páginas (uma máquina de estado virtual), de forma que o usuário progride na aplicação através de links (transições de estado), que resulta na próxima página (estado seguinte da aplicação). 21/31

Definição do REST REpresentational State Transfer REST se baseia no comportamento de aplicações web Recursos estão dispostos em uma rede de páginas (uma máquina de estado virtual), de forma que o usuário progride na aplicação através de links (transições de estado), que resulta na próxima página (estado seguinte da aplicação). 21/31

Definição do REST REpresentational State Transfer fonte: REST in Pratice Webber, J., Parastatidis, S., Robinson, I. Figure 1-7. Example of hypermedia as the engine for application state in action This, in simple terms, is what the famous hypermedia as the engine of application state or 21/31 HATEOAS constraint is all about. We see it in action every day on the Web, when we

Fundamentos do REST 1 Recursos Na web todos os recursos possuem uma URI Exemplos: http://docente.ifsc.edu.br/mello/index.html http://localhost/bloco/a/laboratorio/redes2 2 Ações A web possui uma interface uniforme e restrita para interagir com os recursos Métodos de requisições HTTP: GET, POST, PUT e DELETE 3 Representações Como os dados são retornados e representados para os clientes Ex: HTML, XML, JSON 22/31

Fundamentos do REST 1 Recursos Na web todos os recursos possuem uma URI Exemplos: http://docente.ifsc.edu.br/mello/index.html http://localhost/bloco/a/laboratorio/redes2 2 Ações A web possui uma interface uniforme e restrita para interagir com os recursos Métodos de requisições HTTP: GET, POST, PUT e DELETE 3 Representações Como os dados são retornados e representados para os clientes Ex: HTML, XML, JSON SOAP usa o HTTP como protocolo de transporte. REST usa o HTTP como protocolo de aplicação 22/31

Recursos Qualquer informação pode ser caracterizada como um recurso Ex: página, imagem, coleção de recursos, etc Recursos são identificados por uma URI Identificador único e que permite endereçar um recurso na web Uma URI identifica um único recurso, porém um recurso pode possuir mais de uma URI (relação muitos-para-um) 23/31

Recursos Qualquer informação pode ser caracterizada como um recurso Ex: página, imagem, coleção de recursos, etc Recursos são identificados por uma URI Identificador único e que permite endereçar um recurso na web Uma URI identifica um único recurso, porém um recurso pode possuir mais de uma URI (relação muitos-para-um) Formato da URI scheme://host:port/path?querystring#fragment scheme HTTP, HTTPS, FTP host nome ou IP port impĺıcito ao esquema (p.e. 80 para http) ou expĺıcito path segmentos de texto delimitados por / querystring lista de parâmetros (nome=valor) delimitados por & fragment ponto particular dentro um documento 23/31

Identificação de Recursos http://localhost/campus http://localhost/campus/sj http://localhost/campus/sj/bloco/a http://localhost/campus/sj/bloco/a/laboratorio http://localhost/campus/sj/bloco/a/laboratorio/redes2 Ao percorrer o caminho do mais genérico para o mais específico, você estará navegando pelos dados 24/31

Ações Métodos HTTP (verbos) Como as representações dos recursos são trocadas entre clientes e servidor GET obtém informações de um recurso POST Cria um recurso PUT Atualiza um recurso DELETE Remove um recurso 25/31

Ações Métodos HTTP (verbos) Como as representações dos recursos são trocadas entre clientes e servidor GET obtém informações de um recurso Obter lista com todos campi: GET http://localhost/campus Obtém capacidade do laboratório redes2 GET http://localhost/campus/laboratorio/redes2/capacidade POST Cria um recurso PUT Atualiza um recurso DELETE Remove um recurso 25/31

Ações Métodos HTTP (verbos) Como as representações dos recursos são trocadas entre clientes e servidor GET obtém informações de um recurso POST Cria um recurso Content: {bloco,laboratorio,equipamentos[],capacidade,... } POST http://localhost/campus PUT Atualiza um recurso DELETE Remove um recurso 25/31

Ações Métodos HTTP (verbos) Como as representações dos recursos são trocadas entre clientes e servidor GET obtém informações de um recurso POST Cria um recurso PUT Atualiza um recurso Atualiza informações do laboratório redes2 Content: {bloco,laboratorio,equipamentos[],capacidade,... } PUT http://localhost/campus/laboratorio/redes2 DELETE Remove um recurso 25/31

Ações Métodos HTTP (verbos) Como as representações dos recursos são trocadas entre clientes e servidor GET obtém informações de um recurso POST Cria um recurso PUT Atualiza um recurso DELETE Remove um recurso Remove o laboratório redes2 DELETE http://localhost/campus/laboratorio/redes2 25/31

Pedidos: REST vs SOAP Ex: Serviço Web para obter a capacidade de um laboratório SOAP 102 <?xml version="1.0" encoding="utf-8"?> 103 <soapenv:envelope 104 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > 105 <soapenv:body lab="http://localhost/campus/laboratorio"> 106 <lab:getcapacidade> 107 <lab:id>redes2</lab:id> 108 </lab:getcapacidade> 109 </soapenv:body> 110 </soapenv:envelope> REST 111 GET http://localhost/campus/laboratorio/redes2/capacidade 26/31

REST: Pedido e resposta 27/31

REST vs RPC Chamada de Procedimento Remoto (RPC) Foco na diversidade de operações 112 obtercapacidade(int id); 113 definircapacidade(int id, int capacidade); REST Foco na diversidade de recursos 114 GET http://localhost/laboratorio/redes2/capacidade 115 PUT http://localhost/laboratorio 28/31

Resumo: Objetivo dos Serviços Web Permitir a integração e interação de aplicativos dispostos em diferentes locais, escritos em diferentes linguagens e residentes em diferentes arquiteturas. Há espaço para SOAP e REST coexistirem 29/31

Como codificar Serviços Web em Java REST não é um padrão (faz uso de padrões: HTTP, URI, XML, etc.) JSR 311: JAX-RS: The Java API for RESTful Web Services Jersey é a implementação de referência, presente no Java EE 6 SOAP é uma especificação padrão para WS JSR 224: JAX-WS: Java API for XML Web Services Presente desde o Java EE 5 (servidor de aplicação Glassfish) Próxima aula Laboratório para desenvolvimento de Serviços Web (Java e Python) 30/31

Exercícios Não é necessário entregar, mas é necessário fazer antes da próxima aula! 1 O que são Serviços Web RESTful? 2 O que são serviços stateless e stateful? 3 O que é WADL? Seria equivalente a qual especificação apresentada na aula? 4 O que são Anotações Java? (Java Annotations) 5 O que são POJOs em Java? 31/31