Web Services Professor: Ricardo Luis dos Santos IFSUL 2015
Rápida revisão da última aula 3
Rápida revisão da última aula 1 Listar o filme com o id 475 2 Listar todos os filmes com o título que inicia com Star Wars: 3 Listar os clientes que possuem o primeiro nome Paulo 4
Rápida revisão da última aula 1 Listar o filme com o id 475 Select filme from Filme as filme where filme.id = 475 2 Listar todos os filmes com o título que inicia com Star Wars: Select filme from Filme as filme where filme.nome like Star Wars:% 3 Listar os clientes que possuem o primeiro nome Paulo Select cliente from Cliente as cliente where cliente.nome like Paulo% 5
Rápida revisão da última aula 4 Listar a quantidade de filmes cadastrados 5 Listar o nome do cliente que está com o filme de id 100 6 Listar a quantidade de clientes que moram no RS 6
Rápida revisão da última aula 4 Listar a quantidade de filmes cadastrados Select COUNT(filme.id) from Filme as filme 5 Listar o nome do cliente que está com o filme de id 100 Select filme.cliente.nome from Filme as filme where filme.id = 100 6 Listar a quantidade de clientes que moram no RS Select COUNT(cliente.id) from Cliente as cliente left join cliente.endereco as endereco where endereco.uf = RS 7
Rápida revisão da última aula 7 Listar todos os clientes que nasceram entre 1994 e 1998 8 Qual a diferença entre os métodos getsingleresult() e getresultlist()? 9 Pra que servem as Named Queries? 8
Rápida revisão da última aula 7 Listar todos os clientes que nasceram entre 1994 e 1998 Select cliente from Cliente as cliente where cliente.nascimento between 1994/01/01 and 1998/12/31 8 Qual a diferença entre os métodos getsingleresult() e getresultlist()? O getsingleresult() retorna apenas um valor que deve ser convertido para o tipo apropriado (int, long, string). O getresultlist() retorna uma lista de valores os quais devem ser armazenados em uma lista do mesmo tipo 9 Pra que servem as Named Queries? Named Queries são utilizadas com o intuito de reutilizar código, pois permitem escrever a instrução uma única vez e reutilizá-las mesmo com parâmetros diferentes. 9
Rápida revisão da última aula Novo projeto com suporte a HIBERNATE (JPA) e JERSEY (JAX-RS) Material de apoio sobre Web Services www.ricardoluis.com 10
Agenda Introdução Arquitetura Orientada a Serviços Web Services Web Services usando SOAP Web Services usando REST SOAP ou REST? Resumo Bibliografia 13
Introdução Em 1990 havia diversas plataformas utilizando diversas linguagens de programação e que não se comunicavam Surgiram pela necessidade de padronizar comunicações entre diferentes plataformas Web services foram padronizados W3C, um consórcio que cria padrões para conteúdo da Web 14
Arquitetura Orientada a Serviços 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 amplamente utilizados 15
Arquitetura Orientada a Serviços 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 16
Arquitetura Orientada a Serviços São definidos três papéis Diretório para registro de serviços Repositório para publicação elocalização de interfaces dos serviços Provedor de Serviços Responsável por publicar interfaces dosserviç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 17
Web Services Mas afinal, o que são web services? São aplicações auto-contidas, cujas interfaces e ligações são definidas, publicadas, localizadas e dinamicamente invocadas Aplicações que interagem com outras através da troca de mensagens Coleção de operações sobre recursos (programas, objetos, banco dedados) que podem ser usadas por clientes através da Internet 18
Web Services Benefícios Interoperabilidade Independência de plataforma de hardware e software Reusabilidade Como resolvem problemas pequenos e bem definidos podem ser utilizados em diversas aplicações por diferentes clientes 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 19
Web Services Benefícios Padronização Invocado através de tecnologias padronizadas (protocolos, mecanismos de publicação e de busca) e amplamente difundidas na Internet Fracamente acoplado Não requer o conhecimento prévio de qualquer estrutura interna presente no lado do cliente ou do serviço Facilidade de acesso Pode transpor firewalls baseados em filtros de pacotes (portas 80 e 443) 20
Web Services 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 21
Web Services Representação Externa de Dados Acordo para representar dados primitivos e estrutura de dados em um formato padrão extensible Markup Language (XML) JavaScript Object Notation (JSON) Empacotamento Colocar uma coleção de dados dentro de um formato adequado para transmissão em uma mensagem Desempacotamento Abrir uma mensagem e gerar a coleção de dados equivalente no destino 22
Web Services XML permite ser estendida Usuários podem criar suas próprias marcações (tags) 23
Web Services JSON Formato bem aceito em aplicações web, principalmente pelo fato de ser simples e leve 24
Web Services Baseados em SOAP Simple Object Access Protocol Possui diversas especificações para segurança, confiabilidade, orquestração, entre outros Camada de transporte genérica (não necessita de HTTP) Baseados em REST REpresentational State Transfer Fundamentado nos conceitos da WWW, que são: métodos HTTP, URI e linguagens de marcação (HTML, XML ou JSON) Simples e leve 25
WEB SERVICES SOAP 26
Web Services usando SOAP Descreve a interface do serviço para essa aplicação utilizando uma linguagem padrão Web Services Description Language (WSDL) Disponibiliza esse documento (de alguma forma) Universal Description, Discovery and Integration (UDDI) Troca mensagens XML SOAP 27
Web Services usando SOAP 28
Web Services usando SOAP Web Services Description Language WSDL Quais são os serviços oferecidos? Em qual formato o serviço deve enviar as informações para o cliente? Quais as informações necessárias para invocar um serviço? Como cliente e servidor sabem como processar as requisições? 29
Web Services usando SOAP Web Services Description Language WSDL Em qual formato o Quais são os serviços serviço deve enviar as oferecidos? WSDL é uma gramática em informações XML para para o especificar interfaces de Web Services cliente? Operações disponíveis Tipos de dados Protocolos utilizados Quais as informações necessárias Localização para do Web Service invocar um serviço? Como cliente e servidor sabem como processar as requisições? 30
Web Services usando SOAP 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 31
Web Services usando SOAP Exemplo de Web Service: Calculadora.java 32
Web Services usando SOAP Documento WSDL Tipos dos dados das mensagens 33
Web Services usando SOAP Documento WSDL Operações abstratas 34
Web Services usando SOAP Documento WSDL Associação dos serviços 35
Web Services usando SOAP 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 (Remote Procedure Call) em si faz parte deste elemento Fault (opcional) 36
Web Services usando SOAP Uma mensagem SOAP consiste de Envelope Elemento raiz no documento XML que representa a mensagem SOAP Header (opcional) Oferece A comunicação mecanismos para pode estender ser síncrona a mensagemou assíncrona. Mensagens SOAP podem Body ser transportadas sobre diferentes protocolos (HTTP, HTTPS, SMTP...) Informações de roteamento, segurança, coordenação... Document - A RPC em si faz parte deste elemento Fault (opcional) IMPORTANTE!!! 37
Web Services usando SOAP Pedido SOAP 38
Web Services usando SOAP Resposta SOAP 39
WEB SERVICES REST 40
Web Services usando REST 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) 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) 41
Web Services usando REST 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) 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) http://www.ricardoluis.com/aulas/webservices Cliente Recurso 42 webservices.html
Web Services usando REST REST funcionamento e definições URIs de serviços e recursos 2 1 5 4 3 7 8 6 43
Web Services usando REST REST funcionamento e definições URIs de serviços e recursos aplicação inicia pela transição para o estado identificado pela URI 6 2 1 5 4 3 8 7 6 6 44
Web Services usando REST REST funcionamento e definições URIs de serviços e recursos 2 1 5 4 3 8 7 6 4 6 3 5 representação do estado contém links para os estados 4, 3 e 5 45
Web Services usando REST REST funcionamento e definições URIs de serviços e recursos 2 1 5 4 3 8 7 6 6 4 3 5 3 aplicação escolhe pela transição para o estado identificado pela URI 3 46
Web Services usando REST REST funcionamento e definições URIs de serviços e recursos 2 1 5 4 3 8 7 6 6 4 3 5 3 1 5 47 representação do estado contém links para os estados 1 e 5
Web Services usando REST REST funcionamento e definições URIs de serviços e recursos 2 1 5 4 3 8 7 6 6 4 3 5 3 1 5 1 aplicação escolhe pela transição para o estado identificado pela URI 1 48
Web Services usando REST REST funcionamento e definições URIs de serviços e recursos 2 1 5 4 3 8 7 6 6 4 3 5 3 1 5 1 estado ativo não contém link para progressão 49
Web Services usando REST REST funcionamento e definições Recursos Na web todos os recursos possuem uma URI Ações http://www.ricardoluis.com/index.html http://www.ifsul.edu.br/sapucaia/bloco/a/laboratorio/webservices A web possui uma interface uniforme e restrita para interagir com os recursos Métodos de requisições HTTP: GET, POST, PUT e DELETE Representações Como os dados são retornados e representados para os clientes Ex: HTML, XML, JSON 50
Web Services usando REST REST funcionamento e definições Recursos Na web todos os recursos possuem uma URI Ações http://www.ricardoluis.com/index.html http://www.ifrs.edu.br/osorio/bloco/a/laboratorio/webservices A web transporte, possui uma interface enquanto uniforme que REST e restrita usa para o interagir com os recursos Métodos de requisições HTTP: GET, POST, PUT e DELETE Representações IMPORTANTE!!! SOAP usa o HTTP como protocolo de HTTP como protocolo de aplicação Como os dados são retornados e representados para os clientes Ex: HTML, XML, JSON 51
Web Services usando REST Recursos Qualquer informação pode ser caracterizada como um recurso Ex: página, imagem, coleção de recursos, entre outros Recursos são identificados por uma URI (Uniform Resource Identifier) 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) 52
Web Services usando REST Formato da URI scheme://host:port/path?querystring#fragment scheme HTTP, HTTPS host nome ou IP port implícito ao esquema (e.g., 80 para http) ou explícito path segmentos de texto delimitados por / querystring lista de parâmetros (nome=valor) delimitados por & fragment ponto particular dentro um documento 53
Web Services usando REST Formato da URI http://www.ifsul.edu.br/campus http://www.ifsul.edu.br/campus/sapucaia http://www.ifsul.edu.br/campus/sapucaia/bloco http://www.ifsul.edu.br/campus/sapucaia/bloco/a http://www.ifsul.edu.br/campus/sapucaia/laboratorio?id=4&bloco=a http://www.ifsul.edu.br/campus/laboratorio?id=4&capus=sapucaia&bloco=a 54
Web Services usando REST Formato da URI http://www.ifsul.edu.br/campus http://www.ifsul.edu.br/campus/sapucaia http://www.ifsul.edu.br/campus/sapucaia/bloco http://www.ifsul.edu.br/campus/sapucaia/bloco/a http://www.ifsul.edu.br/campus/sapucaia/laboratorio?id=4&bloco=a http://www.ifsul.edu.br/campus/laboratorio?id=4&capus=sapucaia&bloco=a IMPORTANTE!!! Ao percorrer o caminho genérico para o específico, você está navegando pelos dados! 55
Web Services usando REST Ações Determinam como as representações dos recursos são trocadas entre cliente e servidor e o que deve ser feito Permitem interagir com um determinado recurso CRUD (Create, Read, Update and Delete) 56
Web Services usando REST GET Obtém informações sobre um recurso Obter a lista com todos os campi: GET http://www.ifrs.edu.br/campus Obter a capacidade do laboratório de webservices GET http://www.ifrs.edu.br/campus/osorio/laboratorio/webservices/capacidade 57
Web Services usando REST POST Cria um determinado recurso Content: {bloco,laboratorios[],equipamentos[],capacidade...} POST http://www.ifrs.edu.br/campus/osorio/ 58
Web Services usando REST PUT Atualiza um determinado recurso se existente, caso não exista um novo recurso é criado Content: {bloco,laboratorio,equipamentos[],capacidade...} PUT http://www.ifrs.edu.br/campus/osorio/ 59
Web Services usando REST DELETE Remove um determinado recurso DELETE http://www.ifrs.edu.br/campus/osorio/laboratorio/webservices 60
Web Services usando REST Pedido e Resposta em REST 61
Web Services usando REST Exemplos de Web Services Busca por CEP http://viacep.com.br/ 62
Web Services usando REST Exemplos de Web Services Busca por CEP http://viacep.com.br/ http://viacep.com.br/ws/90030-041/xml/ 63
Web Services usando REST Exemplos de Web Services Busca por CEP http://viacep.com.br/ http://viacep.com.br/ws/90030-041/json/ 64
Web Services usando REST Exemplos de Web Services Previsão do Tempo http://servicos.cptec.inpe.br/xml/ 65
Web Services usando REST Exemplos de Web Services Previsão do Tempo http://servicos.cptec.inpe.br/xml/listacidades?city=porto%20alegre 66
Web Services usando REST Exemplos de Web Services Previsão do Tempo http://servicos.cptec.inpe.br/xml/cidade/237/previsao.xml 67
Web Services usando REST Exemplo Loja Virtual Anunciar produto Buscar produtos de um fornecedor Cadastrar usuários Realizar uma oferta Retirar uma oferta Buscar ofertas de um produto Buscar melhores ofertas Avaliar produtos Buscar avaliações de um usuário Trocar senha do usuário 68
Web Services usando REST Exemplo Loja Virtual URI /produto/{id} /produto/{id}/ofertas /oferta/{id} /usuario /usuario/{id} /usuario/{id}/avaliacoes /usuario/{id}/produtos /avaliação/de/{id}/para/{id} Métodos GET, PUT GET, POST GET, PUT, DELETE POST GET, PUT GET GET, POST POST 69
Web Services usando REST Passos para desenvolver um Web Service em REST Definir os recursos Definir as URIs Definir os formatos (XML, JSON, TEXTO?) Quais métodos serão aceitos em cada recurso? 70
Web Services usando REST Exemplo Arthur possui uma transportadora e desenvolveu um sistema web de encomendas online. Então, ele gostaria de integrar com diversas lojas virtuais existentes. Arthur precisa criar um Web Service Rest para o cálculo do frete Peso (KG) RS Outros Estados Até 1 R$ 20,00 R$ 40,00 Até 5 R$ 30,00 R$ 50,00 Mais que 5 R$ 50,00 R$ 70,00 71
Web Services usando REST Exemplo 72
SOAP ou REST? # SOAP REST O que é? Especificação padrão para WS Estilo de arquitetura para WS Descrição do Serviço WSDL Não padronizado Descoberta dos Serviços UDDI Não possui Tamanho das mensagens Grandes Pequenas em relação ao SOAP Implementação de chamadas AJAX? Possível, mas de difícil implementação Simples e fácil implementação Desempenho Maior uso de CPU Menor uso de CPU Indicação de uso Aplicações seguras, assíncronas Recursos limitados, otimização 73
Resumo SOA permite organizar aplicações que são acessadas através de interfaces e protocolos padronizados Web services são aplicações auto-contidas A escolha de SOAP ou REST depende mais da aplicação do Web service que será desenvolvida Web services podem integrar e interagir com aplicativos dispostos em diferentes locais, escritos em diferentes linguagens e residentes em diferentes arquiteturas 74
Resumo SOAP e REST podem coexistir 75
Bibliografia CHAPPELL, D.; JEWELL, T. Java Web Services. California: O'Reilly Books, 2002. COULOURIS, G; DOLLIMORE, J; KINDBERG, T; BLAIR, G. Sistemas Distribuídos - 5ed: Conceitos e Projeto. Bookman Editora, 2013. UDDI, Specification, 2001. Disponível em: http://www.uddi.org/specification.html Webber, J.; Parastatidis, S.; Robinson, I.;. REST na Prática Hipermídia e Arquitetura de Sistemas. O'Reilly Media. 2010. WSDL Specification, 2001 W3C. Disponível em: http://www.w3.org/tr/wsdl 76
Perguntas?