Web Services. Conceitos, SOAP, WSDL, UDDI, Exemplos. Programação com Objetos Distribuídos (C. Geyer) Web Services 1

Tamanho: px
Começar a partir da página:

Download "Web Services. Conceitos, SOAP, WSDL, UDDI, Exemplos. Programação com Objetos Distribuídos (C. Geyer) Web Services 1"

Transcrição

1 Web Services Conceitos, SOAP, WSDL, UDDI, Exemplos Programação com Objetos Distribuídos (C. Geyer) Web Services 1

2 ! Autores " Sérgio Mergen " Cláudio Geyer " Emanuel Müller Ramos Autoria! Local " Instituto de Informática UFRGS " Versão " V25 " Maio 2012 " cursos: " Sistemas Operacionais II " Programação com Objetos Distribuídos Programação com Objetos Distribuídos (C. Geyer) Web Services 2

3 Súmula! Súmula " conceitos gerais sobre Web Services " conceitos de SOAP " Introdução à biblioteca Axis " WS no J2EE " conceitos de WSDL " conceitos de UDDI! Observações " Ênfase em WS para Java Programação com Objetos Distribuídos (C. Geyer) Web Services 3

4 Bibliografia! Bibliografia " Coulouris, G. Et al. Sistemas Distribuídos Conceitos e Projeto. Bookman, " Cap. 19 " CERAMI Ethan. Web Services Essentials - Distributed Applications with XML-RPC, SOAP, UDDI & WSDL. O'Reilly, " NEWCOMER Eric. Understanding Web Services: XML, WSDL, SOAP, and UDDI. David Chappell Series Editor " Wutka, M. Special Edition Using Java 2 Enterprise Edition. QUE, # capítulo 25 " Tutoriais da Oracle para JEE e do NetBeans # Capítulos sobre WS: JAX-WS, SOAP,... Programação com Objetos Distribuídos (C. Geyer) Web Services 4

5 Links! Links " Atividades do W3 em Web Services # " XML Protocol Working Group # " Projetos WS do grupo Apache # # Implementações de Java SOAP # Axis 2 # # Axis 1 # Programação com Objetos Distribuídos (C. Geyer) Web Services 5

6 Links! Links " Links SOAP do W3 # SOAP Message Transmission Optimization Mechanism # # SOAP Resource Representation Header # # SOAP Version 1.2 Part 0: Primer # # SOAP Version 1.2 Part 1: Messaging Framework # Programação com Objetos Distribuídos (C. Geyer) Web Services 6

7 Links! Links " Links SOAP do W3 # SOAP Version 1.2 Part 2: Adjuncts # # SOAP Version 1.2 Specification Assertions and Test Collection # Programação com Objetos Distribuídos (C. Geyer) Web Services 7

8 Links! Links " Links WSDL do W3 # Semantic Annotations for WSDL and XML Schema # # Web Services Description Language (WSDL) Version 2.0 Part 0: Primer # # Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language # # Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts as Recommendation. # Programação com Objetos Distribuídos (C. Geyer) Web Services 8

9 ! Links " Links WSDL do W3 # Semantic Annotations for WSDL and XML Schema # Links # Web Services Description Language (WSDL) Version 2.0 Part 0: Primer # # Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language # # Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts as Recommendation. # Programação com Objetos Distribuídos (C. Geyer) Web Services 9

10 Súmula! Súmula " Conceitos gerais sobre Web Services # motivação para o uso de Web Services # definição # arquitetura # componentes # pilha de protocolos Programação com Objetos Distribuídos (C. Geyer) Web Services 10

11 Súmula! Súmula " Conceitos de SOAP # Introdução ao SOAP # Vantagens do SOAP # Desvantagens do SOAP # Estrutura de uma mensagem SOAP # Exemplo de WS/SOAP com Apache Axis # Comparação entre RMI e Apache SOAP Programação com Objetos Distribuídos (C. Geyer) Web Services 11

12 Súmula! Súmula " WS no J2EE " Características " Tipos " JAX-WS " RESTFul " WSDL " UDDI Programação com Objetos Distribuídos (C. Geyer) Web Services 12

13 ! A Internet Tradicional " Ótima forma para troca de informações " Independência de plataforma Motivação # Abstração do hardware, software e sistema operacional utilizados " Problemas: # WWW era centrada no ser humano # pessoas acessam, modificam, inserem e removem documentos remotos # Aplicações que desejavam trocar informações pela Web necessitavam utilizar soluções ad-hoc " Necessidade de estender a Web para suportar esse novo tipo de interação # Web Services: web para sistemas coorportaivos Programação com Objetos Distribuídos (C. Geyer) Web Services 13

14 ! A Internet Tradicional " Ótima forma para troca de informações " Independência de plataforma Motivação # Abstração do hardware, software e sistema operacional utilizados " Problemas: # WWW era centrada no ser humano # pessoas acessam, modificam, inserem e removem documentos remotos # Aplicações que desejavam trocar informações pela Web necessitavam utilizar soluções ad-hoc " Necessidade de estender a Web para suportar esse novo tipo de interação # Web Services: web para sistemas coorportaivos Programação com Objetos Distribuídos (C. Geyer) Web Services 14

15 ! Web Services Objetivos Definição " Permitir uma comunicação fácil entre diferentes aplicações utilizando a estrutura já existente da Web " Determinam um conjunto de mecanismos (padrões, especificões, etc.) # que permitam estender a Internet # para aceitar a troca de informações entre aplicações " Adicionalmente: permitir que aplicações descubram automaticamente qual serviço elas desejam utilizar # Chamada automática de serviços # Sem nenhuma intervenção do ser humano # Ainda não é totalmente realidade # Obs: CORBA tinha alguns objetivos similares Programação com Objetos Distribuídos (C. Geyer) Web Services 15

16 ! Web Services Objetivos Definição " Permitir uma comunicação fácil entre diferentes aplicações utilizando a estrutura já existente da Web " Determinam um conjunto de mecanismos (padrões, especificões, etc.) # que permitam estender a Internet # para aceitar a troca de informações entre aplicações " Adicionalmente: permitir que aplicações descubram automaticamente qual serviço elas desejam utilizar # Chamada automática de serviços # Sem nenhuma intervenção do ser humano # Ainda não é totalmente realidade # Obs: CORBA tinha alguns objetivos similares Programação com Objetos Distribuídos (C. Geyer) Web Services 16

17 Definição! Web Services Conceito " Um Web Service é uma aplicação que: # Está disponível através da Internet # Utiliza padrões baseados em XML para descrever as mensagens enviadas e recebidas, bem como seus dados # É independente de hardware, sistema operacional e linguagem de programação # Pode ser descrita utilizando XML (WSDL) # Pode ser encontrada facilmente (usando UDDI por exemplo) # OBS.: # Web Services baseados na arquitetura REST (REST WS) não seguem exatamente esses conceitos # REST WS são mais simples Programação com Objetos Distribuídos (C. Geyer) Web Services 17

18 Definição! Web Services: conceito " Web services are application components " Web services communicate using open protocols " Web services are self-contained and self-describing " Web services can be discovered using UDDI " Web services can be used by other applications " XML is the basis for Web services " Definição da W3schools # Programação com Objetos Distribuídos (C. Geyer) Web Services 18

19 WS x Usos! WS x usos " Dois tipos principais de uso # Reuso de componentes de aplicações # Pequenos módulos # Auto-contidos # Usáveis em diferentes aplicações # Exemplos # Conversão de moedas # Previsão do tempo Programação com Objetos Distribuídos (C. Geyer) Web Services 19

20 WS x Usos! WS x usos " Dois tipos principais de uso # Conectividade entre aplicações existentes # 2 ou mais aplicações podem trocar informação # Sobre diferentes plataformas # Usando diferentes linguagens Programação com Objetos Distribuídos (C. Geyer) Web Services 20

21 Definição! Exemplo Básico - Linguagens Java e C - SOs Windows e Linux - Mensagem XML - requisição e resposta Programação com Objetos Distribuídos (C. Geyer) Web Services 21

22 Arquitetura! Arquitetura " Pode ser descrita de duas formas # Pelos componentes que a compõem # Pela pilha de protocolos utilizada Programação com Objetos Distribuídos (C. Geyer) Web Services 22

23 Arquitetura! Componentes Programação com Objetos Distribuídos (C. Geyer) Web Services 23

24 ! Pilha de Protocolos Arquitetura Conjunto mais utilizado: HTTP + SOAP + WSDL + UDDI Programação com Objetos Distribuídos (C. Geyer) Web Services 24

25 ! Nível de transporte Pilha de protocolos " Responsável por transmitir os dados entre as aplicações " Pode utilizar protocolos já disponíveis pela internet (HTTP, SMTP, FTP, etc.)! Nível de mensagem " Define o formato das mensagens enviadas entre as aplicações " Obs.: " Formato XML puro não garante interoperabilidade entre aplicações " Por exemplo, tags com strings distintas " parm x arg Programação com Objetos Distribuídos (C. Geyer) Web Services 25

26 Pilha de protocolos! Nível de descrição " Representa a interface de um Web Service aos clientes # Nome das operações disponíveis # Parâmetros # Protocolos do nível de transporte utilizados # Etc! Nível de descoberta " Registros onde é possível publicar um Web Service Programação com Objetos Distribuídos (C. Geyer) Web Services 26

27 SOAP Súmula! Súmula da parte SOAP " Conceitos de SOAP # Introdução ao SOAP # Vantagens do SOAP # Desvantagens do SOAP # Estrutura de uma mensagem SOAP # Exemplo de WS/SOAP com Apache # Comparação entre RMI e Apache SOAP Programação com Objetos Distribuídos (C. Geyer) Web Services 27

28 O que é SOAP?! O que é SOAP? " Protocolo para troca de mensagens distribuídas # Pode ser usado como o nível de mensagem da arquitetura WS " Concorrente de IIOP (Corba), JRMP (Java RMI), XML-RPC, REST- WS e outros " Proposto a IETF e ao W3 # W3: World Wide Web Consortium # IETF: organização que publica padrões para Internet como TCP, FTP, HTTP, " Especificação inicial desenvolvida por # Microsoft, IBM/Lotus, Don Box (guru COM), Dave Winer (criador de um XML-RPC) Programação com Objetos Distribuídos (C. Geyer) Web Services 28

29 ! Características do SOAP Características do SOAP " Baseado em tecnologias já existentes # HTTP, SMTP como nível de transporte # XML " Utiliza mensagens no formato XML " Unidirecional " Sem estado " Não define um modelo de objetos " Como Corba, Java RMI, MS C# Remoting, Java EE/EJB, " Não define um modelo para troca de mensagens " Define uma (1) mensagem " Não está necessariamente ligado a Web Services Programação com Objetos Distribuídos (C. Geyer) Web Services 29

30 Características do SOAP! Características do SOAP " Quando usado em chamada de WS # Aplica-se modelo requisição resposta (cliente/servidor) com 2 mensagens SOAP # Chamada pode ser: # Síncrona (normal em RPC) # Assíncrona # Assíncrona com resposta no futuro Programação com Objetos Distribuídos (C. Geyer) Web Services 30

31 Vantagens SOAP! Vantagens do SOAP " Firewall Friendly # uso de protocolos Web como HTTP " Infraestrutura já conhecida " Amplo suporte a XML " Suportado por grandes organizações " Variedade de bibliotecas (livres e pagas) para sua utilzação Programação com Objetos Distribuídos (C. Geyer) Web Services 31

32 Vantagens SOAP! Vantagens SOAP " Independe de linguagem (se utilizado seguindo corretamente os padrões) # RMI: só Java # observação: RMI-IIOP permite Java x linguagens com IIOP # IIOP: exige biblioteca IIOP para a linguagem # SOAP: # somente um parser XML # mais biblioteca para envio de requisições HTTP " Independe de plataforma # permitiria ponte entre mundos Linux e Microsoft # obs: RMI e CORBA oferecem essa ponte, mas não com o mesmo nível de abstração Programação com Objetos Distribuídos (C. Geyer) Web Services 32

33 ! Desvantagens SOAP " Brechas na segurança # WS-Security tenta resolver esses problemas Desvantagens SOAP # wg_abbrev=wss " Problemas de performance # menos rápido que atuais competidores tipo RPC como RMI (Java), IIOP (CORBA), DCOM e Remote (Microsoft) # mais lento mesmo comparado a competidores que são baseados em XML (XML-RPC, REST-WS) # Muito complexo: overhead # aplicações geralmente não necessitam de tantas funcionalidades para realizar seus objetivos # REST-WS é mais simples -> mais eficiente (?) Programação com Objetos Distribuídos (C. Geyer) Web Services 33

34 Desvantagens SOAP! Desvantagens SOAP " Não oferece serviços avançados # A revisar conforme novos padrões Web Services # Como CORBA, JEE, # CORBA possuía mais de 20 serviços como persistência, transações, real-time, aluguel de objetos,... " Não possui noção de objeto com estado como em RMI " Não suporta passagem por referência " Obs.: possível simular esses comportamentos de OO Programação com Objetos Distribuídos (C. Geyer) Web Services 34

35 ! SOAP resumo " SOAP stands for Simple Object Access Protocol " SOAP is a communication protocol " SOAP is a format for sending messages " SOAP is designed to communicate via Internet " SOAP is platform independent " SOAP is language independent " SOAP is based on XML " SOAP is simple and extensible " SOAP allows you to get around firewalls " SOAP is a W3C standard SOAP Resumo " Fonte: w3schools Programação com Objetos Distribuídos (C. Geyer) Web Services 35

36 Versões! Versões " SOAP 1.2 # " SOAP 1.1 # Programação com Objetos Distribuídos (C. Geyer) Web Services 36

37 Versões! Versões " SOAP 1.2 # " SOAP 1.1 # Programação com Objetos Distribuídos (C. Geyer) Web Services 37

38 ! Especificação (estrutura geral dos documentos) " Parte 1: Especificação # define o envelope, um framework geral para definir o conteúdo de uma mensagem # Também define os protocolos de ligação e o mapeamento para um protocolo inferior " Parte 2: # Define um modelo de dados para o SOAP " Representação de recurso # Especifica um bloco de cabeçalho, no qual há a representação de um recurso Web " Outros documentos Programação com Objetos Distribuídos (C. Geyer) Web Services 38

39 Mensagem SOAP! Envelope: define o arquivo XML como mensagem SOAP! Header: possui informações específicas da aplicação " Dados de autenticação " Número de transação " Etc. " opcional! Body: contém a mensagem propriamente dita " Contém dados que devem ser transmitidos de forma estruturada " Possiveis excessões durante o tratamento da mensagem Programação com Objetos Distribuídos (C. Geyer) Web Services 39

40 SOAP Request Mensagem SOAP com HTTP: requisição POST /Temperature HTTP/1.1X Host: Content-Type: text/xml Content-Length: <whatever> SOAPMethodName: <some-uri>#currenttemp Http Header Soap Extensions <SOAP:Envelope xmlns:soap="urn:schemas-xmlsoaporg:soap.v1"> <SOAP:Body> <m:currenttemp xmlns:m="some-uri"> <zip_code>37919</zip_code> <m:currenttemp> </SOAP:BODY> <SOAP:Envelope> Sem header Xml Payload argumento Programação com Objetos Distribuídos (C. Geyer) Web Services 40

41 SOAP response Mensagem SOAP com HTTP: resposta HTTP/ OK Content-Type: text/xml Content-Length: <whatever> Http Header Com header <SOAP:Envelope xmlns:soap="urn:schemas-xmlsoap-org:soap.v1"> <SOAP:Header> <t:transaction xmlns:t="some-uri"> 5 </t:transaction> </SOAP:Header> <SOAP:Body> Xml Payload <m:currenttempresponse xmlns:m="some-uri"> <return>42</return> </m:currenttempresponse> </SOAP:Body> </SOAP:Envelope> resposta Programação com Objetos Distribuídos (C. Geyer) Web Services 41

42 Estrutura XML SOAP! Estrutura XML das mensagens SOAP " inicialmente complexa como exemplos anteriores " eliminando as informações de namespace como # <SOAP:Envelope xmlns:soap="urn:schemas-xmlsoaporg:soap.v1"> # o resto é simples e legível (?) # Concorrentes como Java RMI, Corba/IIOP, # Formato interno seria mais complexo # Mas o formato externo (em nível de programa, aplicação) é simples, funcional Programação com Objetos Distribuídos (C. Geyer) Web Services 42

43 Implementação Apache! Implementação Apache Axis " para Java " baseada em implementação anterior Apache SOAP " conjunto de # bibliotecas clientes # bibliotecas para o servidor # servlet para processamento das chamadas # Classe servidora # ferramentas auxiliares para utilização de Web Services Programação com Objetos Distribuídos (C. Geyer) Web Services 43

44 Implementação Apache! Implementação Apache " programa cliente usa as suas bibliotecas para empacotar a chamada (request) # Diferentes níveis de abstração dependendo da abordagem utilizada " servidor # decodifica a chamada # chama o método do objeto servidor # e empacota o resultado para o cliente # obs: tudo isto de forma transparente para o programador Programação com Objetos Distribuídos (C. Geyer) Web Services 44

45 Exemplo Hello! Exemplo Hello " especificação # cliente # realiza uma chamada SOAP a uma operação de um servidor Hello # servidor # Interface: 2 (duas) operações # responde à chamada de saudação # recebe nova saudação Programação com Objetos Distribuídos (C. Geyer) Web Services 45

46 ! Exemplo Hello " codificação do cliente " duas aproximações # criar chamada manualmente # parte mais complexa # uso de vários métodos do pacote SOAP # criação da chamada Exemplo Hello # inclusão de cada argumento da chamada # utilizar o arquivo WSDL (se disponível) # WSDL: descrição (opcional) de um WS em xml # aproximação estática (geração de Stubs) ou dinâmica # chamada similar à de um método local Programação com Objetos Distribuídos (C. Geyer) Web Services 46

47 Exemplo Hello! Exemplo Hello " código do cliente codificação manual " trabalhosa # import java.io.*; import java.net.*; import java.util.*; import org.w3c.dom.*; import org.apache.soap.*; import org.apache.soap.encoding.*; import org.apache.soap.encoding.soapenc.*; import org.apache.soap.rpc.*; import org.apache.soap.util.xml.*; Programação com Objetos Distribuídos (C. Geyer) Web Services 47

48 Exemplo Hello! Exemplo Hello " código do cliente codificação manual " trabalhosa # import java.io.*; import java.net.*; import java.util.*; import org.w3c.dom.*; import org.apache.soap.*; import org.apache.soap.encoding.*; import org.apache.soap.encoding.soapenc.*; import org.apache.soap.rpc.*; import org.apache.soap.util.xml.*; Programação com Objetos Distribuídos (C. Geyer) Web Services 48

49 Exemplo Hello # public class GetHello { public static void main(string[] args) throws Exception { // The URL for the SOAP servlet (endereço servidor WS) URL url = new URL(" soap/servlet/rpcrouter"); // Create a new call Call call = new Call(); // Tell SOAP which object you want (qual serviço, app) call.settargetobjecturi ("urn:helloapp"); // Tell SOAP which method to invoke call.setmethodname("gethello"); Programação com Objetos Distribuídos (C. Geyer) Web Services 49

50 Exemplo Hello # // Tell SOAP to use the regular SOAP encoding style call.setencodingstyleuri (Constants.NS_URI_SOAP_ENC); // Create a vector (tipo Java) to hold the method parameters Vector params = new Vector(); // Add a string parameter called extra1 with a value of "Hello info // Specify null for the encoding style params.addelement(new Parameter("extra1", String.class, "Hello info", null)); Programação com Objetos Distribuídos (C. Geyer) Web Services 50

51 Exemplo Hello # // Add an int parameter called extra2 with a value of 123 // Specify null for the encoding style params.addelement(new Parameter ("extra2", Integer.class, new Integer(123), null)); // Store the parameters in the request call.setparams(params); // Prepara uma variável para a resposta Response resp = null; Programação com Objetos Distribuídos (C. Geyer) Web Services 51

52 Exemplo Hello # // Invoke the call method try { resp = call.invoke(url, ""); } catch (SOAPException e) { e.printstacktrace(); System.exit(0); } Programação com Objetos Distribuídos (C. Geyer) Web Services 52

53 Exemplo Hello # // See if the response contains an error if (!resp.generatedfault()) { // If not, get the return value Parameter ret = resp.getreturnvalue(); // Expect it to be a string String value = (String) ret.getvalue(); } System.out.println(value); Programação com Objetos Distribuídos (C. Geyer) Web Services 53

54 Exemplo Hello # else // casos de erros { Fault fault = resp.getfault(); System.err.println("Generated fault: "); System.out.println (" Fault Code = " + fault.getfaultcode()); System.out.println (" Fault String = " + fault.getfaultstring()); } } } Programação com Objetos Distribuídos (C. Geyer) Web Services 54

55 ! Código do cliente geração de Stubs " Outra alternativa para codificação Exemplo Hello " Axis gera automaticamente classes para acessar o Web Service baseados em SOAP/WSDL " A partir dessas classes, o desenvolvedor necessita apenas instanciá-las para executar a operação desejada Hello WSDL Hello Service.java Hello Port.java Arquivo WSDL Axis WSDL2Java Hello Service Locator.java Hello BindingStub.java Stubs Gerados Programação com Objetos Distribuídos (C. Geyer) Web Services 55

56 ! Código do cliente geração de Stubs Exemplo Hello import HelloServiceLocator; import HelloService; import HelloPort; import HelloBindingStub; public class GetHello { public static void main(string[] args) throws Exception { // localize the service; uso de métodos das classes geradas // obs.: não há indicação de endereço (nome ou IP) HelloService locator = new HelloServiceLocator(); HelloPort port = locator.gethelloport(); Programação com Objetos Distribuídos (C. Geyer) Web Services 56

57 ! Código do cliente geração de Stubs Exemplo Hello //execute the remote method String result = port.gethello( Hello Info, new Integer(123)); System.out.println(result); } } Programação com Objetos Distribuídos (C. Geyer) Web Services 57

58 Exemplo Hello! Exemplo Hello " código do servidor // standard Java public class SoapHello { protected String hellostring; public SoapHello() { hellostring = "Hello!"; } Programação com Objetos Distribuídos (C. Geyer) Web Services 58

59 Exemplo Hello # public String gethello(string extra1, int extra2) { return hellostring+" "+extra1+" "+extra2; } } public void sethello(string newhello) { hellostring = newhello; } Programação com Objetos Distribuídos (C. Geyer) Web Services 59

60 ! Publicando o servidor utilizando Apache Axis " Duas formas principais Exemplo Hello # Salvar código do servidor na pasta raiz do Axis com a extensão.jws instalação instantânea # Extremamente simples; # Necessita do código fonte (e não o binário); # Web service é gerado no instante em que o cliente o acessa: baixo desempenho; # Utilizar um arquivo de configuração WSDD (Web Service Deployment Descriptor) # Mais complicado; # Resolve os problemas da alternativa anterior; Programação com Objetos Distribuídos (C. Geyer) Web Services 60

61 Comparação RMI - SOAP!"# $%&'()*+,$-./'&012&34/ 56&78%&6)79) 56&78%&6)79)!)%/819:61/!"#!);1896< =)%0/<>)79*=)8'61%9/6-6/9/'/0/?!"-*@A17B61/C +,$-*@9)D9/C***.17;E&;)>?$F$?$F$ -0&9&G/6>& #7H)%)7H) #7H)%)7H) +, #7H)%)7H) #7H)%)7H) $-# -&H6/712&H& I4/*%&H6/712&H& J(&>&H&* +K7'6/7& +K7'6/7&*/E*&88K7'6/7& Programação com Objetos Distribuídos (C. Geyer) Web Services 61

62 Comparação XML-RPC - SOAP Protocolo de transporte SOAP qualquer um (preferência para HTTP) XML-RPC somente HTTP Tipos extensível utilizando XML Schema restritos a um conjunto básico Ordem de parâmetros indiferente importante Complexidade complicado simples SOAP tem várias vantagens; mas é mais complexo Programação com Objetos Distribuídos (C. Geyer) Web Services 62

63 ! Pacote da Sun para Web Services Pacote Sun Web Services! Obs.: em 2006 " nome: JWSDP - Java Web Services Developer Pack 1.2 " link # # agora: webservicespack.jsp # em transição para projeto GlassFish: # # 2010: -> Programação com Objetos Distribuídos (C. Geyer) Web Services 63

64 ! Pacote da Sun para Web Services " conteúdo (obs. Versão 1.2): # JavaServer Faces (JSF) v1.0 EA4 Pacote Sun Web Services # XML and Web Services Security (xws-security) v1.0 EA # Java Architecture for XML Binding (JAXB) v1.0.1 # Java API for XML Processing (JAXP) v1.2.3 # Java API for XML Registries (JAXR) v1.0.4 # Java API for XML-based RPC (JAX-RPC) v1.1 EA # SOAP with Attachments API for Java (SAAJ) v1.2 EA # JavaServer Pages Standard Tag Library (JSTL) v1.1 EA # Java WSDP Registry Server v1.0_05 # Ant Build Tool # Apache Tomcat v5 development container Programação com Objetos Distribuídos (C. Geyer) Web Services 64

65 Pacote Sun Web Services! Pacote Sun Web Services " pacote testado com # plataformas # Sun Solaris Operating Environment 8 and 9 # Windows 2000 Professional Edition # Windows XP Professional Edition # RedHat Linux 8.0 # ambiente Java # Java 2 SDK, Standard Edition version 1.4.1_02 " plataforma de desenvolvimento e execução # Sun recomenda # Sun ONE Studio 4 and Sun ONE Application Server 7. Programação com Objetos Distribuídos (C. Geyer) Web Services 65

66 WS no JEE Programação com Objetos Distribuídos (C. Geyer) Web Services 66

67 WS no J2EE! WS no J2EE " Tecnologias incluídas # JAX-WS # Java API para XML Web Services # JAX-RS " Conceito WS # Java API para RESTFul Web Services # São aplicações cliente / servidor # Comunicando sobre o protocolo HTTP Programação com Objetos Distribuídos (C. Geyer) Web Services 67

68 ! WS no J2EE " Características " Tipos # Interoperabilidade via padrões # Portabilidade sobre diversas plataformas e frameworks # Extensíveis # Descrições processáveis graças a XML # Combináveis de forma leve para obter operações complexas # Big WS # RESTFul WS WS no J2EE Programação com Objetos Distribuídos (C. Geyer) Web Services 68

69 WS no J2EE! WS no J2EE " Big WS # Uso de XML e SOAP # Descrição dos serviços em WSDL (linguagem em XML) # opcional # Adotado por diversas ferramentas como # NetBeans IDE Programação com Objetos Distribuídos (C. Geyer) Web Services 69

70 ! WS no J2EE " Big WS # Elementos principais # Contrato formal # Arquitetura # Descreve a interface WS no J2EE # Mensagens, operações, localização do WS, ligações # Tratar diversos requisitos complexos não funcionais # Transações, segurança, endereçamento, confiança, coordenação,... # Processamento e chamada assíncronos Programação com Objetos Distribuídos (C. Geyer) Web Services 70

71 ! WS no J2EE " RESTFul # Representational State Transfer # Apropriado para cenários básicos e ad doc # Melhor integração com HTTP que serviços SOAP # Não exigem mensagens XML nem WSDL # Uso do projeto Jersey # Segue padrão: JSR 311 JAX-RS # Permite anotações # Mais funcionalidades extra JSR 311 # Mais leves # Exigem poucas ferramentas # Também integrado no NetBeans IDE WS no J2EE Programação com Objetos Distribuídos (C. Geyer) Web Services 71

72 WS no J2EE! WS no J2EE " RESTFul # Usos reais # Muitos sites de blogs # Download de arquivos XML em formato RSS com listas de links # Twitter # Amazon Simple Storage Service (S3) Programação com Objetos Distribuídos (C. Geyer) Web Services 72

73 ! WS no J2EE " RESTFul # Apropriado em/se # WS sem estado # Teste: # interação sobrevive a queda / colocar-no-ar do servidor (restart) # Infra-estrutura de cache pode ser mais simples # Quando dados de retorno são estáticos WS no J2EE # Técnicas de cache do servidor web mais simples # Cuidado: em geral limitado a método GET do HTTP Programação com Objetos Distribuídos (C. Geyer) Web Services 73

74 ! WS no J2EE " RESTFul # Apropriado em/se # Contrato cliente (consumidor) e serviço (produtor) em formato ad hoc # Sobre contexto e conteúdo # Muitos serviços distribuem toolkits com # Descrição de interfaces em linguagens populares # Quando banda é limitada # Por exemplo para PDAs e smartphones # SOAP é pesado WS no J2EE Programação com Objetos Distribuídos (C. Geyer) Web Services 74

75 ! WS no J2EE " RESTFul # Apropriado em/se # Agregação de serviços é simples # Via uso de tecnologias como # JAX-RS # AJAX: Asynchronous JavaScript com XML # Toolkits como DWR (Direct Web Remoting) # Serviços já existentes podem ser expostos via páginas HTML sem muito esforço # Desenvolvimento mais produtivo # Não é uma nova tecnologia WS no J2EE Programação com Objetos Distribuídos (C. Geyer) Web Services 75

76 WS no J2EE! WS no J2EE " Big WS x RESTFul # Usar JAX-WS quando # Aplicação necessita de vários requisitos de QoS # Usualmente em aplicações coorporativas # Mais fácil o uso de padrões de segurança e confiabilidade # Melhor interoperabilidade com outros WS Programação com Objetos Distribuídos (C. Geyer) Web Services 76

77 ! WS no J2EE " Big WS x RESTFul # Usar RESTFul quando # Artigo # Desenvolvimento mais simples # Acoplamento reduzido # Mais fácil o consumo (clientes) WS no J2EE # Facilita manutenção (extensão da app) e escalabilidade # Cliente pode consumir parte do serviço e combiná-lo como outros serviços (mash-up) # Pautasso, C. et al. RESTFul Web Services vs. Big Web Services: Making the Right Architectural Decision. WWW 08, pp Programação com Objetos Distribuídos (C. Geyer) Web Services 77

78 ! WS no J2EE " Desenvolvendo com JAX-WS # Características # Complexidade do SOAP escondida via APIs do JAX-WS # Lado servidor # Operações definidas por métodos em interface Java # Implementação via classe(s) que implementam os métodos da interface # Lado cliente # Cria um proxy # Objeto local que representa o serviço # Chama métodos do proxy WS no J2EE # Não é necessário gerar ou examinar mensagens SOAP Programação com Objetos Distribuídos (C. Geyer) Web Services 78

79 WS no J2EE! WS no J2EE " Desenvolvendo com JAX-WS # Características # Portabilidade de Java # Independência de plataforma # Interoperabilidade entre plataformas # Cliente JAX-WS pode acessar WS não Java # Cliente não Java pode acessar serviço JAX-WS # Óbvio... (?) # Devido JAX-WS seguir padrões do W3C para WS Programação com Objetos Distribuídos (C. Geyer) Web Services 79

80 WS no J2EE! WS no J2EE " Desenvolvendo com JAX-WS # Porta do servidor # Diversos arquivos referenciam a porta do servidor # Padrão é 8080 # Pode ser alterada Programação com Objetos Distribuídos (C. Geyer) Web Services 80

81 WS no J2EE! WS no J2EE " Desenvolvendo com JAX-WS # Exemplo Hello # Serviço # Classe Java anotada # Classe passa a ser um SEI # SEI # Service Endpoint Interface ou Service Endpoint Implementation # A interface não é obrigatória # Se interface # Indicada por argumento endpointinterface na Programação com Objetos Distribuídos (C. Geyer) Web Services 81

82 ! WS no J2EE " Desenvolvendo com JAX-WS # Exemplo Hello # Serviço # Ferramenta (wsgen) gera todos os artefatos # Em uso # Via o Enterprise Server (container) # Passos # Codificação da classe # Compilação da classe # Criação dos artefatos (wsgen) # Empacotamento em arquivo WAR WS no J2EE # Instalação (deploy) do WAR no servidor Programação com Objetos Distribuídos (C. Geyer) Web Services 82

83 ! WS no J2EE " Desenvolvendo com JAX-WS # Exemplo Hello # Servidor # Requisitos # Anotar classe ou interface (se houver) # Métodos da classe devem ser # Públicos # Não static nem final # Métodos do WS # Anotados WS no J2EE Programação com Objetos Distribuídos (C. Geyer) Web Services 83

84 ! WS no J2EE " Desenvolvendo com JAX-WS # Exemplo Hello # Servidor # Código package helloservice.endpoint; import javax.jws.webservice; WS no public class Hello { private String message = new String("Hello, "); public void Hello() {} public String sayhello(string name) { return message + name + "."; } Programação com Objetos Distribuídos (C. Geyer) Web Services 84

85 WS no J2EE! WS no J2EE " Desenvolvendo com JAX-WS # Exemplo Hello # Servidor # Teste sem cliente # Após WS instalado (no container do J2EE) # Entrar com URL (local) do serviço mais função de teste?tester # Na página de teste (resposta) entrar com argumentos (se for o caso) e clicar no método # Será mostrada a resposta do método Programação com Objetos Distribuídos (C. Geyer) Web Services 85

86 ! WS no J2EE " Desenvolvendo com JAX-WS # Exemplo Hello / Cliente # Instanciar a classe gerada helloservice.endpoint.helloservice WS no J2EE # Ela representa o serviço na URI indicada no arquivo WSDL instalado # HelloService service = new HelloService(); # Recuperar um proxy ao serviço # Também conhecido como port # Chamando o método gethelloport do serviço # Hello port = service.gethelloport(); # Chamar o método de negócio via proxy # String response = port.sayhello(name); Programação com Objetos Distribuídos (C. Geyer) Web Services 86

87 WS no J2EE! WS no J2EE " Desenvolvendo com JAX-WS # Exemplo Hello / Cliente # Código completo # O exemplo completo é um pouco mais complexo # Mas o adicional não é exigido pelo JAX-WS # Puro Java Programação com Objetos Distribuídos (C. Geyer) Web Services 87

88 J2EE / RESTFul conceitos Programação com Objetos Distribuídos (C. Geyer) Web Services 88

89 ! RESTful WS " Serviços desenvolvidos para funcionar melhor na web " Melhor? # Escalabilidade " REST # Desempenho # Capacidade de modificação # REpresentational State Transfer " Identificação por URI # Endereço global " Protocolo de comunicação sem estado # Por exemplo, HTTP " Uso de interface uniforme RESTFul Programação com Objetos Distribuídos (C. Geyer) Web Services 89

90 J2EE / RESTful! RESTful " Interface (uniforme) # 4 operações # PUT: cria um novo recurso # DELETE: recurso (criado) é excluído # GET: recupera o estado de um recurso # POST: atualiza o estado de um recurso Programação com Objetos Distribuídos (C. Geyer) Web Services 90

91 ! RESTful " Mensagens auto-descritas J2EE / RESTful # Recursos são independentes da sua representação # Recursos podem ser acessados de diferentes formas como # HTML, XML, texto, PDF, JPEG, JSON e outras # Metadados sobre o recurso usados para # Controlar cache # Detectar erros de transmissão # Negociar forma de representação # Realizar autenticação # Controlar acesso Programação com Objetos Distribuídos (C. Geyer) Web Services 91

92 J2EE / RESTful! RESTful " Interações com estado # Cada interação com um recurso é sem estado # Mensagens são auto-contidas # Interações com estado via conceito de transferência explícita de estado # Via técnicas como # Reescrita de URI # Cookies # Campos escondidos de form Programação com Objetos Distribuídos (C. Geyer) Web Services 92

93 J2EE / RESTful! RESTful " Jersey implementação # Segue padrão JSR 311: JAX-RS # Suporte a anotações # Documentação em: # # A documentação teria que ser instalada (?) no Enterprise server v3 Programação com Objetos Distribuídos (C. Geyer) Web Services 93

94 J2EE/RESTful! RESTful " Classes de recurso raiz # Anotadas # Ou ao menos um método anotado # # ou com designador de método de @POST " Métodos de recursos # Métodos com o designador de requisição Programação com Objetos Distribuídos (C. Geyer) Web Services 94

95 J2EE/RESTful! RESTFul " JAX-RS API # Java API para facilitar o desenvolvimento de aplicações com RSET # Uso de anotações, específicas para HTTP # Anotações são resolvidas durante execução (runtime) # Uso de reflexão para gerar classes auxiliares e outros artefatos para o recurso # Classes e artefatos agrupados em arquivo WAR (web) # WAR deve ser instalado em container J2EE ou web Programação com Objetos Distribuídos (C. Geyer) Web Services 95

96 J2EE/RESTful! RESTful " Principais anotações # Indica onde a classe Java será instalada # Pode ser adicionada com variáveis para definir modelos (templates) # Exemplos # /helloworld # Com controle de usuário/senha # /helloworld{username} Programação com Objetos Distribuídos (C. Geyer) Web Services 96

97 ! RESTful " Principais anotações J2EE/RESTful # devem processar requisições HTTP GET # devem processar requisições HTTP POST # # # Programação com Objetos Distribuídos (C. Geyer) Web Services 97

98 ! RESTful " Principais anotações J2EE/RESTful # Tipo de parâmetro que pode ser extraído para uso na classe # Extraído da URI requisitada # Nomes de caminho (path) definidos na anotação # Tipo de parâmetro que pode ser extraído para uso na classe # Extraído da URI requisitada Programação com Objetos Distribuídos (C. Geyer) Web Services 98

99 J2EE/RESTful! RESTful " Principais anotações # Para especificar tipos MIME a serem consumidos pelo recurso quando enviados pelo cliente # Para especificar tipos MIME a serem produzidos pelo recurso e enviados ao cliente # Exemplo: text/plain Programação com Objetos Distribuídos (C. Geyer) Web Services 99

100 ! RESTful " Principais anotações J2EE/RESTful # Para especificar qualquer objeto (anything) de interesse do ambiente de execução do JAX-RS # Exemplos # MessageBodyReader # Usado para mapear itens da requisição HTTP em parâmetros de métodos da classe recurso # MessageBodyWriter # Usado para mapear retornos de método (classe recurso) em itens da resposta HTTP # ResponseBuilder # Usado para criar resposta com outros metadados Programação com Objetos Distribuídos (C. Geyer) Web Services 100

101 J2EE/RESTful! RESTful " Exemplo básico: Aplicação HelloWorld # Código recurso # package com.sun.jersey.samples.helloworld.resources; import javax.ws.rs.get; import javax.ws.rs.produces; import javax.ws.rs.path; // The Java class will be hosted at the URI // path public class HelloWorldResource { Programação com Objetos Distribuídos (C. Geyer) Web Services 101

102 ! RESTful " Exemplo básico: Aplicação HelloWorld # Código recurso J2EE/RESTful # // The Java method process HTTP GET // The Java method produces content identified // by the MIME Media type public String getclichedmessage() { // Return some cliched textual content return "Hello World"; } // The Java method process POST // method saves the new hello public void postclichedmessage(string message { // Store the message } } Programação com Objetos Distribuídos (C. Geyer) Web Services 102

103 J2EE/RESTful! RESTful " mais detalhes # É um caminho parcial (como no exemplo HelloWorld) # URI path templates # URI com variáveis resolvidas em tempo de execução # Variáveis são anotadas com {} # Exemplo /users/{username} } # username é a variável # A URI de chamada do WS poderia ser (user Galileu): # Programação com Objetos Distribuídos (C. Geyer) Web Services 103

104 J2EE/RESTful! RESTful " mais detalhes anotação # Usada para obter o valor de uma variável em um método # Exemplo public class UserResource public String getuser(@pathparam("username String username) {... } Programação com Objetos Distribuídos (C. Geyer) Web Services 104

105 ! RESTful " mais detalhes # Restrições nos valores de uma variável # Com uso de expressões regulares # Exemplo J2EE/RESTful [a-za-z][a-za-z_0-9]}") # Exige iniciar com letra seguida de zero ou mais alfas ou underscore # A barra inicial (/) não é obrigatória # Idem barra final Programação com Objetos Distribuídos (C. Geyer) Web Services 105

106 J2EE/RESTful! RESTful " variáveis # Anotadas com {} # Exemplo # Recurso /{name1}/{name2}/ ) public class SomeResource {...} # Recurso deve responder a URI: # {name1}/{name2}/ # Instalar WAR em servidor Java EE que responde a: # Programação com Objetos Distribuídos (C. Geyer) Web Services 106

107 J2EE/RESTful! RESTful " variáveis # Uma variável pode ser usada várias vezes # Em conflito de caracteres: usar % +caracter # Exemplo # Valor de variável: Rua%20da%20Praia # Programação com Objetos Distribuídos (C. Geyer) Web Services 107

108 ! RESTful " Respondendo a chamadas HTTP # Comportamento de um recurso é determinado pelos métodos HTTP (GET, POST, PUT e DELETE) # Anotações de métodos # Request Method Designator annotation é # Anotação dinâmica # Definida em JAX-RS # Corresponde a um método HTTP # JAX-RS define anotações para métodos # Usuário pode criar designadores customizados Programação com Objetos Distribuídos (C. Geyer) Web Services 108

109 ! RESTful " Respondendo a chamadas # Anotações de método HTTP # Métodos HTTP mapeados para método Java # Comportamento do método depende da anotação # Retornos possíveis # Void # Objeto Javax.ws.rs.core.Response J2EE/RESTful # Múltiplos parâmetros podem ser recuperados com anotações # Conversão entre tipos Java # Responsabilidade do provedor # Via MessageBodyReader ou MessageBodyWriter Programação com Objetos Distribuídos (C. Geyer) Web Services 109

110 J2EE/RESTful! RESTful " Respondendo a chamadas Programação com Objetos Distribuídos (C. Geyer) Web Services 110

111 Súmula WSDL! Súmula parte WSDL " Conceitos de WSDL # Introdução ao WSDL # Estrutura de um arquivo WSDL # Exemplo # Vantagens/Desvantagens do WSDL Programação com Objetos Distribuídos (C. Geyer) Web Services 111

112 Introdução WSDL! WSDL " Web Service Description Language " padrão para descrição de informações de serviços " pode ser usado como camada de descrição da arquitetura WS " baseado em XML " arquivos WSDL são criados pelos desenvolvedores dos serviços Web " cliente acessa as informações para usar os serviços # ferramentas para o acesso de um WS a partir de seu WSDL Programação com Objetos Distribuídos (C. Geyer) Web Services 112

113 Introdução WSDL! WSDL " motivação # Aplicações necessitam de uma série de informações para poderem acessar um Web Service # Quais os serviços disponíveis; # Interface dos serviços; # Estrutura das mensagens utilizadas; # Protocolos de transporte; # Localização; # Etc. Programação com Objetos Distribuídos (C. Geyer) Web Services 113

114 Introdução WSDL! WSDL " conceitos gerais # documento WSDL # contém conjuntos de definições que descrevem os Web Services # especifica as capacidades do serviço, sua localização na Web e instruções a respeito de como acessá-los # define a estrutura da mensagem que um WS envia e recebe # os dados que uma aplicação precisa fornecer a um WS Programação com Objetos Distribuídos (C. Geyer) Web Services 114

115 Introdução WSDL! WSDL " conceitos gerais # seleção # usando esta informação, as aplicações que estão procurando por um WS para preencher uma necessidade específica podem analisar os arquivos WSDL de inúmeros serviços e fazer a escolha # além disso, os arquivos WSDL fornecem informações técnicas específicas # possibilitam às aplicações se conectarem e comunicarem com os Web Services # usando o HTTP ou outro protocolo de comunicação Programação com Objetos Distribuídos (C. Geyer) Web Services 115

116 Estrutura de um arquivo WSDL! WSDL descreve as informações de um WS partindo de dados mais genéricos (alto nível) até as informações mais específicas (baixo nível) Programação com Objetos Distribuídos (C. Geyer) Web Services 116

117 Estrutura de um arquivo WSDL! Definition " Elemento mais externo; " Namespaces utilizados;! Message " Dados enviados e recebidos pelas operações de um serviço; " Suporte a tipos simples (inteiros, strings, booleanos); " Suporte a tipos complexos (estruturados, listas ) # Possibilidade de utilizar XML Schema; Programação com Objetos Distribuídos (C. Geyer) Web Services 117

118 Estrutura de um arquivo WSDL! PortType " Descreve de forma abstrata as operações disponíveis em um WS # Seu nome; # Um elemento do tipo Message para seus parâmetros de entrada; # Um elemento do tipo Message para seus resultados; " Um elemento do tipo Message pode ser utilizado para descrever os argumentos de diversas operações; Programação com Objetos Distribuídos (C. Geyer) Web Services 118

119 Estrutura de um arquivo WSDL! Binding " Define informações de mais baixo nível para as operações definidas nos elementos PortType # Protocolo de Transporte (HTTP, FTP, ); # Protocolo de Mensagem (SOAP, XML-RPC, ); # Codificação da mensagem (rpc/encoded, document/literal, ) # Recomendado: document/literal; # Comparação entre os diferentes estilos: www-128.ibm.com/developerworks/webservices/ library/ws-whichwsdl/ " Um mesmo PortType pode ser associado a múltiplos elementos Binding; Programação com Objetos Distribuídos (C. Geyer) Web Services 119

120 Estrutura de um arquivo WSDL! Service " Associa cada elemento do tipo Binding a um endereço (endpoint) utilizado para acessá-lo; " Um mesmo Binding pode estar associado a múltiplos elementos do tipo Service; Programação com Objetos Distribuídos (C. Geyer) Web Services 120

121 Exemplo! Web Service do Google " Disponível em: # " Três operações # dogetcachedpage # Retorna uma página armazenada na cache do Google dada sua URL; # dospellingsuggestion # Verificação ortográfica de uma frase fornecida; # dogooglesearch # Realiza uma pesquisa no Google (similar ao que é possível fazer através de sua página Web); Programação com Objetos Distribuídos (C. Geyer) Web Services 121

122 Exemplo! Web Service do Google " Por simplificação, apenas os elementos relacionados à operação dospellingsuggestion serão apresentados; Programação com Objetos Distribuídos (C. Geyer) Web Services 122

123 Exemplo! Elementos do tipo Message <message name="dospellingsuggestion"> senha do Google <part name="key" <part name="phrase" type="xsd:string"/> type="xsd:string"/> </message> frase a ser verificada <message name="dospellingsuggestionresponse"> <part name="return" type="xsd:string"/> </message> resultado da verificação Programação com Objetos Distribuídos (C. Geyer) Web Services 123

124 Exemplo! Elemento PortType <!-- Port for Google Web APIs, "GoogleSearch" --> <porttype name="googlesearchport"> nome da operação <operation name="dospellingsuggestion"> parâmetros <input message="typens:dospellingsuggestion"/> <output message="typens:dospellingsuggestionresponse"/> </operation> </porttype> resultados Programação com Objetos Distribuídos (C. Geyer) Web Services 124

125 ! Elemento Binding <!-- Binding for Google Web APIs - RPC, SOAP over HTTP --> <binding name="googlesearchbinding" type="typens:googlesearchport"> Exemplo <soap:binding style="document" transport=" <operation name="dospellingsuggestion"> <soap:operation soapaction="urn:googlesearchaction"/> <input> <soap:body use="literal" </input> <output> namespace="urn:googlesearch" encodingstyle=" <soap:body use="literal" </output> </operation> </binding> namespace="urn:googlesearch" encodingstyle=" SOAP sobre HTTP Estilo: document/literal Programação com Objetos Distribuídos (C. Geyer) Web Services 125

126 Exemplo! Elemento Service <!-- Endpoint for Google Web APIs --> <service name="googlesearchservice"> <port name="googlesearchport" binding="typens:googlesearchbinding"> <soap:address location=" </port> </service> endpoint Programação com Objetos Distribuídos (C. Geyer) Web Services 126

127 WSDL Vantagens/Desvantagens! Vantagens " Automatização no processo de chamada de um WS; " Interoperabilidade # diferentes aplicações em uma organização podem ser integradas através de uma única interface; " Diversas ferramentas disponíveis; Programação com Objetos Distribuídos (C. Geyer) Web Services 127

128 ! Desvantagens " Redundância WSDL Vantagens/Desvantagens # Ex: nomes de operações e mensagens são repetidos várias vezes nos diversos elementos de um arquivo WSDL; " Falta de informação semântica # WSDL apresenta apenas informação sintática dos serviços; # Obstáculo para uma total automatização da interação entre aplicações; # Semantic Annotations for WSDL Working Group: projeto para criação de uma versão do WSDL com informações semânticas; # Programação com Objetos Distribuídos (C. Geyer) Web Services 128

129 Súmula UDDI! Súmula parte UDDI " conceitos de UDDI Programação com Objetos Distribuídos (C. Geyer) Web Services 129

130 UDDI! UDDI " Universal Description, Discovery, and Integration " protocolo para publicação e procura dos serviços " organizado em páginas amarelas, brancas e verdes " representa o nível de descoberta da pilha de protocolos de Web Services Programação com Objetos Distribuídos (C. Geyer) Web Services 130

131 UDDI! UDDI " conceitos gerais: passos # 1) tipos de anúncio do serviço Web # separa-se as funções que estão realmente sendo executadas pelo desenvolvedor # separação é baseada na divisão de um serviço web em # tipo do serviço Web # e uma ocorrência do serviço Web # como se poderia separar um objeto entre uma classe e uma instância da classe. Programação com Objetos Distribuídos (C. Geyer) Web Services 131

132 UDDI! UDDI " conceitos gerais: passos # o tipo de serviço deve transpor mais de uma companhia para fomentar o seu reuso # explicitamente, quando dois serviços Web compartilham a mesma definição de interface WSDL # o consumidor pode facilmente trocar de um para outro # é um exemplo prático dos benefícos ganhos de se dividir um documento WSDL em dois. Programação com Objetos Distribuídos (C. Geyer) Web Services 132

133 ! UDDI " conceitos gerais: passos # 2) anúncio do serviço Web # responsabilidade dos negócios e dos desenvolvedores de software # anunciar os serviços Web de acordo com as especificações anunciadas acima # os tipos de anúncios de serviços Web e suas implementações são feitos usando o SOAP # segurança # integridade dos dados em trânsito estão protegidos via uma conta UDDI e o uso do HTTPS. UDDI Programação com Objetos Distribuídos (C. Geyer) Web Services 133

134 UDDI! UDDI " conceitos gerais: passos # 3) registrador de negócios e identificadores de serviço # o negócio e os serviços são registrados separadamente. # relacionamento muitos-para-um permite # que um negócio registre todos os serviços Web que ele suporta debaixo da mesma entidade de negócio Programação com Objetos Distribuídos (C. Geyer) Web Services 134

135 UDDI! UDDI " conceitos gerais: passos # 4) pesquisa/pegunta a um Registro UDDI (Discovery) # os negócios são registrados separadamente dos serviços que eles fornecem # o processo de pesquisa/pergunta (queryng) também pode ser feito por negócios ou serviços # a API para pesquisa/pergunta ao registro UDDI # usa pacotes SOAP como um mecanismo subjacente (sustentação) de transporte Programação com Objetos Distribuídos (C. Geyer) Web Services 135

136 ! UDDI " conceitos gerais: passos # 5) recuperação da descrição de um Serviço Web Programação com Objetos Distribuídos (C. Geyer) Web Services 136 UDDI # a informação vinda de um registro é somente uma parte # devido ao fato de que o UDDI é baseado num modelo de diretório # conceito de diretório tem sido usado pela industria de software # padrões para o compartilhamento de informações sem que sejam repositórios de todas as informações # X.500 # bem conhecido LDAP (Lighwight directory Access Protocol)

137 UDDI! UDDI " conceitos gerais: passos # tipicamente, coisas como nome, uma pequena descrição e o contato do negócio podem ser recuperados diretamente do UDDI # porém um documento WSDL descrevendo uma interface com os serviços Web e um ponto final será recuperado em outros passos Programação com Objetos Distribuídos (C. Geyer) Web Services 137

138 UDDI! UDDI " conceitos gerais: passos # 6) WSDL query # a URL de um documento WSDL descrevendo os serviços Web é retornada no passo anterior # normalmente, isto será a URL de um serviço Web seguido por?wsdl como no exemplo: meuservidor/services/qtdeemestoque?wsdl Programação com Objetos Distribuídos (C. Geyer) Web Services 138

139 UDDI! UDDI " conceitos gerais: passos # 7) recuperação WSDL # a WSDL requisitada no passo 6 é retornada usando um protocolo de transporte como o HTTP # pode-se notar que os passos de 1 a 3 constituem o processo de anúncio # o anúncio é modelado pela API de publicação (publishing API) # os passos de 4 a 7 correspondem ao processo de pesquisa/pergunta # modelado pela API de investigação (inquiry API) Programação com Objetos Distribuídos (C. Geyer) Web Services 139

140 Web Services Conceitos, SOAP, WSDL, UDDI, Exemplos Programação com Objetos Distribuídos (C. Geyer) Web Services 140

141 ! WSDL " solução WSDL # um cliente pode consultar um serviço de lookup # também chamado registro de serviço WSDL # é um repositório que armazena as URLs dos documentos WSDLs # registros armazenam arquivos que fornecem informações técnicas específicas # usando esses dados, as aplicações podem acessar e comunicar-se com os serviços Web # a aplicação cliente usa o WSDL, uma linguagem baseada no XML, para obter tais informações Programação com Objetos Distribuídos (C. Geyer) Web Services 141

142 Outros Protocolos Web Services! Outros protocolos Web Services " UDDI # Universal Description, Discovery, and Integration # protocolo para publicação e procura dos serviços # listas amarelas de serviços Programação com Objetos Distribuídos (C. Geyer) Web Services 142

143 Revisão! Revisão " O que são WS? " Quais os objetivos e vantagens? " Características básicas? Programação com Objetos Distribuídos (C. Geyer) Web Services 143

Desenvolvimento de Aplicações Distribuídas

Desenvolvimento de Aplicações Distribuídas SOA e Web Services Pontifícia Universidade Católica de Minas Gerais Instituto de Ciências Exatas e Informática DAD (2019/01) Tópicos Apresentação da disciplina Introdução Desafios e características Arquitetura

Leia mais

Introdução a Web Services

Introdução a Web Services Introdução a Web Services Mário Meireles Teixeira DEINF/UFMA O que é um Web Service? Web Service / Serviço Web É uma aplicação, identificada por um URI, cujas interfaces podem ser definidas, descritas

Leia mais

Web Services no JEE 7. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Web Services no JEE 7. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Web Services no JEE 7 Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) O que são Web Services? Web services are client and server applications that communicate over the World Wide Web's (WWW) HyperText

Leia mais

Conceitos, SOAP, WSDL, UDDI, Exemplos. Programação com Objetos Distribuídos (C. Geyer) Web Services 1

Conceitos, SOAP, WSDL, UDDI, Exemplos. Programação com Objetos Distribuídos (C. Geyer) Web Services 1 Conceitos, SOAP, WSDL, UDDI, Exemplos Programação com Objetos Distribuídos (C. Geyer) Web Services 1 Autores Local Sérgio Mergen Cláudio Geyer Emanuel Müller Ramos Instituto de Informática UFRGS Versão

Leia mais

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

Web Services. Tópicos. Introdução (1/3) CONTEXTO HISTÓRICO WEB SERVICES Conclusões Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Programa de Pós-Graduação em Ciência da Computação Web Services Conceitual Juliano Moraes, Marcus Breda, Paulo Gil, Rafael

Leia mais

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

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

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

Web Services. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul 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

Leia mais

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.

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 Web Service é um componente de software identificado por uma URI que independe de implementação ou de plataforma e pode ser descrito, publicado e invocado sobre uma rede por meio de mensagens

Leia mais

Aula 25: Web Services (III)

Aula 25: Web Services (III) Aula 25: Web Services (III) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) Web Services (III) TEPIS II 1 / 39 Última Aula A API JAX-WS.

Leia mais

Web Services REST JAX-RS

Web Services REST JAX-RS Web Services REST JAX-RS Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Principais tecnologias envolvidas Testando os serviços desenvolvidos JAX-RS Principais anotações JAX-RS Principais anotações

Leia mais

REST RESTfulWeb Services JAX-RS

REST RESTfulWeb Services JAX-RS Web Services REST Web Service Serviço oferecido por um sistema que pode ser acessado diretamente por outro sistema desenvolvido em qualquer tecnologia através de uma rede como a internet. Cada plataforma

Leia mais

Sistemas distribuídos. Prof. Emiliano Monteiro

Sistemas distribuídos. Prof. Emiliano Monteiro Sistemas distribuídos Prof. Emiliano Monteiro Serviços web (web services) Nos serviços web um cliente específico de uma determinada aplicação interage pela Internet com um serviço que possui uma interface

Leia mais

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

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Autor Autor Local Cláudio Geyer Instituto de Informática disciplinas: POD e PDP Versão v4 2010-1 Programação com Objetos Distribuídos

Leia mais

STD29006 Sistemas Distribuídos

STD29006 Sistemas Distribuídos 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

Leia mais

Webservices LEANDRO MENDES FERREIRA

Webservices LEANDRO MENDES FERREIRA Webservices LEANDRO MENDES FERREIRA Webservices - Agenda CONCEITOS RPC HTTP SOAP RESTFUL CONCEITOS Conceitos Básicos XML (extensible Markup Language) Liguagem de marcação para descrição de documentos de

Leia mais

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

Desenvolvimento de Aplicações Corporativas Avançadas. Web Services Desenvolvimento de Aplicações Corporativas Avançadas Web Services Agenda Introdução Web Service Arquitetura Soluções Passos básicos Implementando com Apache Axis Novos protocolos Conclusão O cenário de

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com

Leia mais

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

O que se espera para o futuro dos Web Services? As tecnologias são respectivamente JSON e REST. Web Services Por que os Web Services são atrativos para a integração de sistemas? Pois os Web services são componentes que possibilitam que as aplicações se comuniquem utilizando protocolos padrão da internet

Leia mais

Aula 23: Web Services (I)

Aula 23: Web Services (I) 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

Leia mais

Web Services REST e JSON

Web Services REST e JSON Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

Service Oriented Architecture SOA

Service Oriented Architecture SOA Service Oriented Architecture SOA Arquitetura orientada aos serviços Definição: Arquitetura de sistemas distribuídos em que a funcionalidade é disponibilizada sob a forma de serviços (bem definidos e independentes)

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II Web services (Serviços web) Aula 15 Necessidade de comunicação entre sistemas heterogêneos Ex: corba, DCOM, Java RMI, Sun RPC, etc!

Leia mais

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

SERVIÇOS WEB. Frankley Gustavo F. Mesquita, Tamiris Souza Fonseca. 27 de junho de 2016 Frankley Gustavo F. Mesquita Tamiris Souza Fonseca 27 de junho de 2016 Sumário 1 2 3 4 5 6 7 8 O padrão Web foi desenvolvido pelo Laboratório Europeu de Física de Partículas (CERN - European Particle Physics

Leia mais

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

Web Services - Definição. Web Services - Introdução. Universidade Federal de Santa Catarina. DSOOII Web Services Universidade Federal de Santa Catarina DSOOII Web Services Web Services - Introdução Havia inconsistência de plataformas, sistemas operacionais e/ou linguagens de programação; Acadêmicos: Ariane Talita

Leia mais

Web Services. Sistemas Distribuídos Marcos Costa

Web Services. Sistemas Distribuídos Marcos Costa Web Services Sistemas Distribuídos Marcos Costa masc@cin.ufpe.br Definição! WebServices.org! Web Services are encapsulated, loosely coupled contracted functions offered via standard protocols 2 Definição

Leia mais

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

Invocação Remota. Prof. Leonardo Barreto Campos.   1/29 Invocação Remota Prof. Leonardo Barreto Campos 1/29 Sumário Introdução Chamada de Procedimento Remoto Invocação a Método Remoto Leitura Complementar Bibliografia 2/29 Introdução Essa aula trata como os

Leia mais

Principais conceitos de CORBA

Principais conceitos de CORBA Principais conceitos de CORBA Tecgraf PUC-Rio fevereiro de 2011 Common Object Request Broker Architecture Uma arquitetura aberta para o desenvolvimento de aplicações distribuídas em um ambiente multilinguagem

Leia mais

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

INFORMÁTICA. Instruções: Para responder às questões de números 71 e 72, considere o texto a seguir: INFORMÁTICA Prova de Agente Fiscal de Rendas do ICMS-SP/2013 - FCC. Por Ana Lucia Castilho* Instruções: Para responder às questões de números 71 e 72, considere o texto a seguir: A equipe de TI da empresa

Leia mais

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP Prof. Me. Sérgio Carlos Portari Júnior Conteúdo Programático Contextualizando: Aula anterior Camada Middleware Programar para SD

Leia mais

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

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES Camada de aplicação Um protocolo da camada de aplicação define como processos de uma aplicação, que funcionam em sistemas finais diferentes,

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

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

Universidade Federal Fluminense Mestrado em Sistemas de Telecomunicações. Disciplina: Fundamentos de Sistemas Multimídia. Universidade Federal Fluminense Mestrado em Sistemas de Telecomunicações Disciplina: Fundamentos de Sistemas Multimídia Web Services Aluno: Leonardo Severo Alves de Melo leonardo.severo@ig.com.br Introdução

Leia mais

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

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte Escola Maria Eduarda Ramos de Barros Curso técnico em redes de computadores Carpina - PE Roteiro Aplicações de Rede Transporte

Leia mais

Java para WEB com Struts 2 e Hibernate

Java para WEB com Struts 2 e Hibernate Java para WEB com Struts 2 e Hibernate Aula 01 http://fernandoanselmo.orgfree.com fernando.anselmo74@gmail.com Apresentação Fernando Anselmo fernando.anselmo74@gmail.com 25 anos na área de Desenvolvimento

Leia mais

Introdução ao Desenvolvimento de

Introdução ao Desenvolvimento de Introdução ao Desenvolvimento de Aplicações Web com JSF e PrimeFaces Marcelo Vinícius Cysneiros Aragão ICC Inatel Competence Center marcelovca90@inatel.br Santa Rita do Sapucaí, 15 de março de 2016 Conteúdo

Leia mais

Objetos e Componentes Distribuídos: EJB e CORBA

Objetos e Componentes Distribuídos: EJB e CORBA : EJB e CORBA Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos

Leia mais

Arquitetura da World Wide Web. WWW: Histórico. WWW: Usos. WWW: Histórico. WWW Tecnologias Fundamentais. Comércio Eletrônico na WWW

Arquitetura da World Wide Web. WWW: Histórico. WWW: Usos. WWW: Histórico. WWW Tecnologias Fundamentais. Comércio Eletrônico na WWW Arquitetura da World Wide Web World Wide Web Sistema de informação em escala global acessível em tempo real através de redes de computadores como a Internet. Comércio Eletrônico na WWW Wagner Meira Jr.,

Leia mais

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

Uma sintaxe universal para identificar os recursos. No sistema REST, cada recurso é unicamente direcionado através da sua URI. REST (REpresentational State Transfer) é um estilo de arquitetura para sistemas de hipermídia distribuídos, como a World Wide Web. O conceito dos recursos identificados por identificadores de recursos

Leia mais

INTRODUÇÃO. RPC x RMI

INTRODUÇÃO. RPC x RMI 1 INTRODUÇÃO RPC x RMI 2 INTRODUÇÃO RPC Remote procedure call Este termo é utilizado para aplicativos clientes que fazem normalmente chamadas a procedimentos remotos que estão em outro processo e hosts.

Leia mais

TUTORIAL DE UTILIZAÇÃO DO OWL-S COMPOSER W. Trabalho de Conclusão de Curso Aluno: Adriano Novais Queiroz Orientadora: Prof.ª Daniela Barreiro Claro

TUTORIAL DE UTILIZAÇÃO DO OWL-S COMPOSER W. Trabalho de Conclusão de Curso Aluno: Adriano Novais Queiroz Orientadora: Prof.ª Daniela Barreiro Claro TUTORIAL DE UTILIZAÇÃO DO OWL-S COMPOSER W Trabalho de Conclusão de Curso Aluno: Adriano Novais Queiroz Orientadora: Prof.ª Daniela Barreiro Claro INTRODUÇÃO E OBJETIVO A funcionalidade de um determinado

Leia mais

APIs Java para Web Services

APIs Java para Web Services APIs Java para Web Services Ivan Neto Roteiro S Revisão S Web services em Java S Como implementar um web service S Como acessar um web service S Implementando um cliente J2EE S Java EE 5 2 1 O que é um

Leia mais

CAPÍTULO 36 Como utilizar os serviços da Web

CAPÍTULO 36 Como utilizar os serviços da Web CAPÍTULO 36 Como utilizar os serviços da Web Os serviços da Web são uma tecnologia emergente que possibilitam à páginas da Web acessar aplicativos distribuídos. Ao oferecer tanto acesso a informações e

Leia mais

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

GERENCIAMENTO BASEADO NA WEB. Baseado em slides gentilmente cedidos pelo Prof. João Henrique Kleinschmidt da UFABC. GERENCIAMENTO BASEADO NA WEB Baseado em slides gentilmente cedidos pelo Prof. João Henrique Kleinschmidt da UFABC. Gerenciamento baseado na Web 2 Web browser Acesso ubíquo Interface Web vs Gerenciamento

Leia mais

Web Services SOAP. Introdução

Web Services SOAP. Introdução Web Services SOAP Introdução 1 Cenários Problemáticos Soluções para aplicações corporativas avançadas Cenário 1: Portal de Turismo Cenário 2: Compra Automática Cenário 3: Supply Chain Management Cenário

Leia mais

Web Services. (Introdução)

Web Services. (Introdução) Web Services (Introdução) Agenda Introdução SOA (Service Oriented Architecture) Web Services Arquitetura XML SOAP WSDL UDDI Conclusão Introdução Comunicação distribuída Estratégias que permitem a comunicação

Leia mais

Sistemas Distribuídos na Web

Sistemas Distribuídos na Web Sistemas Distribuídos na Web Alysson Neves Bessani Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Arquitectura da Web Criada por Tim Berners-Lee no CERN de Geneva Propósito:

Leia mais

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

>>> RESTful API >>> Com Node.js e Restify. Name: Anderson Pimentel Date: 19 de Março de >>> RESTful API >>> Com Node.js e Restify Name: Anderson Pimentel Date: 19 de Março de 2018 apds.anderson@icomp.ufam.edu.br [~]$ _ [1/31] >>> Agenda 1. Introdução 2. Boas Práticas 3. Hands-on Ambiente

Leia mais

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado Aplicações distribuídas: interação entre partes Processamento Paralelo Middleware Orientado a Objetos Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) Rede A Rede B Rede C 2015/01 - INF02799 Sistema

Leia mais

Modelo de Componentes CORBA

Modelo de Componentes CORBA Modelo de Componentes CORBA Cláudia Brito L. N. da Silva cblns@cin.ufpe.br Roteiro 1. Visão geral 2.! Definindo componentes! Implementando componentes! Empacotando componentes! Instalando componentes!

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II Modelo orientado a objetos: uma pequena revisão Instituto de Informátic ca - UFRGS Sistemas Operacionais II Modelos para programação distribuída (Remote Method Invocation) Aula 14 Programa é visto como

Leia mais

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

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 Roteiro Introdução Introdução à Web Services João Gustavo Gazolla Borges, Maverson Eduardo Schulze Rosa DINF / UFPR 10 de novembro de 2006 Motivação Visão Geral XML SOAP WSDL UDDI Segurança Conclusão Definição

Leia mais

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software Reuso de Software Aula 02 Agenda da Aula Introdução a Reuso de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Introdução a Reuso de Software Abordagens de Reuso

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos RPC Remote Procedure Call 1 Fonte: Alcides Calsavara e Thais V. Batista Chamada de Procedimentos Remotos (RPC) Motivação: comunicação baseada em operações de entrada/saída Ideal:

Leia mais

Criando Web Services. Palestrante: Daniel Destro do Carmo

Criando Web Services. Palestrante: Daniel Destro do Carmo Criando Web Services com Apache Axis Palestrante: Daniel Destro do Carmo Tópicos do Tutorial Introdução O que são Web Services? Padrões Web Services SOAP WSDL Web Services com Java O que é Apache Axis?

Leia mais

Sistemas Distribuídos Aula 10

Sistemas Distribuídos Aula 10 Sistemas Distribuídos Aula 10 Aula passada Arquitetura P2P Bittorrent Distributed Hash Table (DHT) Aula de hoje Modelo computação distribuída RPC Marshalling e stubs Semântica operacional RMI Computação

Leia mais

Introdução a Web Services

Introdução a Web Services Introdução a Web Services Mário Meireles Teixeira DEINF/UFMA O que é um Web Service? Web Service / Serviço Web É uma aplicação, identificada por um URI, cujas interfaces podem ser definidas, descritas

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Camada de Aplicação HTTP FTP SMTP Slide 1 Mensagem de Requisição HTTP linha de pedido (comandos GET, POST,HEAD ) linhas de cabeçalho Carriage return, line feed indica fim da mensagem

Leia mais

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

Web Services. Integração de aplicações na Web. Sistemas Distribuídos Web Services Integração de aplicações na Web Integração de Aplicações na Web Interoperação entre ambientes heterogêneos desafios diversidade de componentes: EJB, CORBA, DCOM... diversidade de linguagens:

Leia mais

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21 Sistemas de Objetos Distribuídos Primeira Aplicação Java ORB Francisco José da Silva e Silva Departamento de Informática da Universidade Federal do Maranhão Sistemas de Objetos DistribuídosPrimeira Aplicação

Leia mais

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

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Simplificada (Juridica) Versão: 1.0. Autor: Angelo Bestetti Junior Manual de Integração Tecnologia: WebServices SOAP XML Área: CDC Produto: CDC Simplificada (Juridica) Versão: 1.0 Autor: Angelo Bestetti Junior Conteúdo Introdução... 3 Considerações Iniciais... 4 Privacidade...

Leia mais

1.2- Ambientes de Middleware

1.2- Ambientes de Middleware 1.2- Ambientes de Middleware Applications RMI, RPC and events Request reply protocol Middleware layers External data representation Operating System Fonte: [Coulouris] 1 1.2- Ambientes de Middleware Aplicação

Leia mais

EA975 - Laboratório de Engenharia de Software

EA975 - Laboratório de Engenharia de Software EA975 - Laboratório de Engenharia de Software Turmas K/L - 2017 Aula 1 O que vamos desenvolver? Vamos desenvolver uma aplicação distribuída, empregando a arquitetura 3-Tier segundo o estilo REST/HTTP (Respresentational

Leia mais

Sérgio Koch Van-Dall

Sérgio Koch Van-Dall PROTÓTIPO PARA ATUALIZAÇÃO ASSÍNCRONA DE DADOS UTILIZANDO WEB SERVICES Sérgio Koch Van-Dall sergiod@inf.furb.br Orientador: Prof. Paulo Fernando da Silva UNIVERSIDADE REGIONAL DE BLUMENAU CURSO DE CIÊNCIAS

Leia mais

Grupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação?

Grupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação? Número: Nome: Página 1 de 7 LEIC/LETI 2013/14, 1º Teste de Sistemas Distribuídos, 29 de Março de 2014 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo

Leia mais

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

Desenvolvendo um protótipo do UDDI. Luís Fernando Jordan. 1. Introdução. 1.1 Apresentação. Desenvolvendo um protótipo do UDDI. Luís Fernando Jordan. 1. Introdução. 1.1 Apresentação. Este Trabalho é um resumo do trabalho de conclusão do curso de ciência da computação, apresentado pelo aluno Luís

Leia mais

Service Oriented Architecture SOA

Service Oriented Architecture SOA Service Oriented Architecture SOA Arquitetura orientada aos serviços Definição: Arquitetura de sistemas distribuídos em que a funcionalidade é disponibilizada sob a forma de serviços (bem definidos e independentes)

Leia mais

PMR3507 Fábrica digital

PMR3507 Fábrica digital LSA Laboratório de Sistemas de Automação www.pmrlsa.poli.usp.br PMR3507 Fábrica digital Do EDI ao SOA Escola Politécnica da Universidade de São Paulo Departamento de Engenharia Mecatrônica e de Sistemas

Leia mais

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

Integração de sistemas utilizando Web Services do tipo REST Integração de sistemas utilizando Web Services do tipo REST Jhonatan Wilson Aparecido Garbo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil jhowgarbo@gmail.com jaime@unipar.br

Leia mais

Informática Parte 23 Prof. Márcio Hunecke

Informática Parte 23 Prof. Márcio Hunecke Escriturário Informática Parte 23 Prof. Márcio Hunecke Informática Json (ECMA-404) JSON (JavaScript Object Notation), é um formato compacto, de padrão aberto independente, de troca de dados simples e

Leia mais

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio Camada de Aplicação Redes Industriais Prof. Rone Ilídio Itens do Livro Redes de Computadores e a Internet, Kurose 5ª edição 2 Camada de Aplicação 2.1 Princípios de aplicações de rede 2.1.1 Arquiteturas

Leia mais

XML. Prof. Júlio Machado

XML. Prof. Júlio Machado XML Prof. Júlio Machado julio.machado@pucrs.br INTRODUÇÃO O que é XML? É a sigla de Extensible Markup Language Linguagem de especificação para descrever dados Padrão aberto e largamente usado Definido

Leia mais

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

Prática da Disciplina de Sistemas Distribuídos Web Services REST IFMA DAI Professor Mauro Lopes C. Silva 1. O que é REST e RESTful? Prática da Disciplina de Sistemas Distribuídos Web Services REST IFMA DAI Professor Mauro Lopes C. Silva Nos últimos tempos, uma forte tendência vem mudando a forma de pensar

Leia mais

Aplicações Distribuídas

Aplicações Distribuídas J500 Aplicações Distribuídas com J2EE TM e JBoss TM Revisão 1.5 (Junho 2003) Helder da Rocha www.argonavis.com.br 1 Objetivos Este curso tem como objetivo oferecer uma introdução prática às tecnologias

Leia mais

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools Desenvolvido por: Manuele Ferreira e Daniela Claro Requisitos do ambiente Seguem abaixo os requisitos do ambiente.

Leia mais

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Desenvolvimento de Sistemas Web A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 24 Objetivos Dando continuidade aos estudos sobre JSP,

Leia mais

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS 1. Explique a(s) diferença(s) entre design pattern e framework. 2. Analisar o arquivo de configurações (web.xml) abaixo identificando quais suas

Leia mais

Service Oriented Architectures (SOA)

Service Oriented Architectures (SOA) Service Oriented Architectures (SOA) Marcelo Faro (mfal@cin.ufpe.br); Carlos Ferraz (cagf@cin.ufpe.br) CIn/UFPE 22 de janeiro de 2004 O que é uma Arquitetura Orientada a Serviços (SOA) Uma Arquitetura

Leia mais

Serviços Web: Arquitetura

Serviços Web: Arquitetura Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

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

SERVIÇO CONTRATO Especificação das operações de Serviço SERVIÇO Especificação das operações de Serviço 1.0 01/07/2014 1 de 8 Histórico de Revisões Data Versão Descrição Elaboração Inicial da especificação da operação de serviço 17/06/2014 0.1 ImportarArquivoContratoCCEAL.

Leia mais

XM X L M L WE W B E B Se S r e vices e 0

XM X L M L WE W B E B Se S r e vices e 0 XML WEB Services 0 Web Services A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable

Leia mais

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

Comentários: Desenvolvimento de Sistemas Rogério Araújo Comentários: Desenvolvimento de Sistemas Rogério Araújo rgildoaraujo@gmail.com 1 Técnico de informática no Ministério Público Federal Professor da Equipe Itnerante Desenvolvimento de Sistemas Certificações

Leia mais

Web Presentation Patterns - Controllers

Web Presentation Patterns - Controllers Instituto Superior Técnico 29 de Novembro de 2004 1 2 3 Page Controller Front Controller 4 5 Porquê Usar Web Applications Não necessita instalar software no cliente. Acesso universal fácil. Interface comum

Leia mais

Engenharia de Software Orientada a Serviços

Engenharia de Software Orientada a Serviços Engenharia de Software Orientada a Serviços Paulo Cesar Masiero Engenharia de Software Roteiro Contexto Arquiteturas Orientadas a Serviços Serviços como componentes reusáveis Engenharia de Serviços Desenvolvimento

Leia mais

3 Serviços na Web (Web services)

3 Serviços na Web (Web services) 3 Serviços na Web (Web services) 3.1. Visão Geral Com base na definição do Word Wide Web Consortium (W3C), web services são aplicações autocontidas, que possuem interface baseadas em XML e que descrevem

Leia mais

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Linguagem de Programação para Web Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 28 Objetivos Dando continuidade aos estudos sobre JSP, apresentaremos os

Leia mais

Informática Parte 26 Prof. Márcio Hunecke

Informática Parte 26 Prof. Márcio Hunecke Escriturário Informática Parte 26 Prof. Márcio Hunecke Informática REST A Representational State Transfer (REST), em português Transferência de Estado Representacional, é um estilo de arquitetura que

Leia mais

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER 3.0 utilizando o Eclipse Galileo Modelling Tools

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER 3.0 utilizando o Eclipse Galileo Modelling Tools TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER 3.0 utilizando o Eclipse Galileo Modelling Tools Desenvolvido por: Manuele Ferreira, Fabrício Alves e Daniela Claro Requisitos do ambiente Seguem abaixo os

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 1 de agosto de 2009 Orientação a Objetos Encapsulamento: Parte interna (privada) dos objetos Implementação: métodos Estado: atributos, variáveis,

Leia mais

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

Arquitetura Orientada a Serviços A Evolução de Estruturas Complexas a partir de Estruturas Simples. Neil Paiva Tizzo GEINFO Arquitetura Orientada a Serviços A Evolução de Estruturas Complexas a partir de Estruturas Simples Neil Paiva Tizzo GEINFO - 2010 Objetivos Apresentar a Arquitetura Orientada a Serviços (SOA) como uma

Leia mais

Redes de Computadores I. Sockets e Arquitetura HTTP

Redes de Computadores I. Sockets e Arquitetura HTTP v.2016 Redes de Computadores I Sockets e Arquitetura HTTP Prof. Ricardo Couto A. da Rocha rcarocha@ufg.br UFG Regional Catalão HTTP - O Servidor Web Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de

Leia mais

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

Protocolo HTTP. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 22 Protocolo HTTP Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 22 Sumário 1 Denições 2 Implementação HTTP 3 Protocolo HTTP/1.1 2 / 22 Denições

Leia mais

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1 Conceito Básicos de Programação com Objetos Distribuídos Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1 Autoria Autor C. Geyer Local Instituto de Informática UFRGS disciplina : Programação

Leia mais