1 / 49

Desenvolvimento de Sistemas Distribuídos Web Services

Desenvolvimento de Sistemas Distribuídos Web Services. Aula de 09/11/2011. Agenda. Introdução Web Service Arquitetura Soluções Passos básicos Implementando com Apache Axis Novos protocolos Conclusão. O cenário de TI nas corporações. Novas tendências batiam à porta das corporações

lela
Download Presentation

Desenvolvimento de Sistemas Distribuídos Web Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desenvolvimento de Sistemas DistribuídosWeb Services Aula de 09/11/2011

  2. Agenda • Introdução • Web Service • Arquitetura • Soluções • Passos básicos • Implementando com Apache Axis • Novos protocolos • Conclusão

  3. O cenário de TI nas corporações • Novas tendências batiam à porta das corporações • Migraram o foco do “gerenciamento de dados” para o “gerenciamento dos processos e clientes” • Redesenho dos processos e implantação dos grandes sistemas de gestão empresarial (ERP) • Sucesso da Internet • Disponibilizar parte das informações corporativas a usuários ou sistemas que extrapolam as fronteiras corporativas • E-commerce

  4. Enterprise Application Integration • A diversidade de sistemas coexistindo nas empresas é enorme • Grandes pacotes comerciais a aplicações desenvolvidas sob-medida • Diferentes “software houses” • Diferentes tecnologias (host-centric, cliente-servidor, n-tier, etc), • Diferentes plataformas (mainframes, Unix, Windows, etc).

  5. Service Oriented Architecture (SOA) • SOA é uma arquitetura que representa funcionalidades do software como serviços • Já existiam tecnologias para SOA • Ex.: CORBA, RMI, etc... • Interoperabilidade é muito importante • Padronização • Fraco acoplamento

  6. Exemplo: Aplicação 3 camadas boa arquitecturaDNA Aplicação Central Compras Presentation Layer Business Layer Data Layer Interface da aplicação dá acesso aos dados aplicacionais

  7. Service Façade Business Layer Service Oriented Architecture Interface desacoplado da lógica de processamento dos dados troca de mensagens boa arquitectura 3-tier service Serviço Central Compras UI Presentation Layer Data Layer Web Service Standards permitem ligaçõescross-platform Dados e Lógica Negócio encapsulados por uma Web Service Façade

  8. Serviço Central Compras Serviços Contabilidade Serviço RH Automação de Processos de Negócio integração com diferentes plataformas UI Processo Compras BusinessProcess Automation Múltiplos serviços combinados num único processo de negócio

  9. Web Services

  10. Visão Tecnológica • Web Services é uma tecnologia de chamada remota de objetos • Permite a infra-estruturapara criação de aplicações distribuídas (web ou não) • Permitem a criação de pequenos módulos de código reutilizáveis e disponibilizados para construção de aplicações “LEGO” • Utiliza protocolos Web como meio de transporte e comunicação • Alto grau de abstração em relação a linguagens de programação e plataformas de hardware / software

  11. Implementation .NET/J2EE Data Data Business Logic Business Logic Arquitetura Web Service Message SOAP / XML Transport HTTP(S) Discovery UDDI Description WSDL

  12. Invocação de Web Services <soap:Envelope <soap:Body> <add> <i1>10</i1> <i2>5</i2> </add> </soap:Body> </soap:Envelope> Client (e.g. CalcClient.java) Web Server (e.g. Apache Tomcat) calculator.add(10, 5) Java Web Service Toolkit (e.g. Apache Axis) SOAP Binding Java to SOAP Web Service Code (e.g. Calculator.java) add(10, 5) SOAP Request SOAP to Java Java

  13. Vantagens • Padrão adotado pelo W3C e pela indústria. • Atravessa firewalls, roteadores e servidores de proxy. • Abordagem simples e fácil de distribuição e de interoperabilidade. • Consórcio WS-I- www.ws-i.org • Garantir a interoperabilidade • Padrões abertos • Independente de plataforma

  14. 170+ fabricantes software envolvidos • Interoperabilidade entre plataformas, aplicações e linguagens • Maior evidência de que a indústria está alinhada com os web services www.ws-i.org

  15. Soluções

  16. Fatores decisivos para a escolha • Maturidade da solução • Integração com IDEs • Reutilização da segurança • Escalabilidade (implementação server-side e stateless) • Documentação

  17. Tecnologias mais conhecidas • Framework .NET • Java • Apache Axis • JaxRPC • IBM SOAP Toolkit • Qualquer plataforma que tenha rotinas de comunicação HTTP e saiba manipular dados em XML pode implementar Web Services.

  18. Passo 1: Definição do serviço • SOA – Service Oriented Architecture • Um serviço é uma função bem definida, auto-contida e que não depende do estado ou contexto de outros serviços;

  19. Passo 2: Implementação • Implementação do serviço: • O serviço a ser fornecido via web service deve ser identificado e “isolado” em uma API tipicamente stateless; • Normalmente este serviço já está implementado no “legado”, bastando definir e implementar uma API para seu acesso na plataforma original.

  20. Passo 3: Value Objects • Parâmetros de entrada e saída: • A API de um serviço deverá conter apenas tipos “compatíveis” com web services (tipos básicos, strings, arrays tipados ou estruturas – VOs – destes tipos.

  21. Passo 4: Criação do WS • Definições de interesse público: • Definição da API (e value objects); • Geração da definição formal do web service (WSDL); • Se VOs forem compatíveis, o WSDL conterá uma descrição completa das estruturas de dados (mesmo as complexas); • O WS é, na prática, implementado por uma aplicação web comum (HTTP/HTTPS), sem o uso de qualquer extensão proprietária.

  22. Passo 5: Publicação do WS • A publicação do web service é, fisicamente, como a publicação de uma aplicação web comum • A definição pública do web service (WSDL) estará disponível para downloadpela própria aplicação web que o implementa • API de web servicesserá estável – modificações e atualizações serão divulgadas com antecedência

  23. Passo 6: Consumo do WS • Geração do cliente: • Acesso à definição do web service (WSDL) é tudo que basta; • IDEs têm a capacidade de gerar stub cliente a partir do WSDL;

  24. Apache Axis • A SOAP Processing Engine • JAX-RPC Client System • JAX-RPC Server System ( Servlet based ) • SAAJ • Arquitetura extensível e flexível • Tools, Exemplos, Documentação, … • Uma boa para começar com Web Services. • Open-source, Apache Software Foundation

  25. Executando Apache AXIS • Instalação • Apache Tomcat (version 5.5.x) • http://jakarta.apache.org/tomcat/ • Java • http://java.sun.com/ • Apache Axis • http://ws.apache.org/axis/

  26. Teste – Happy Axis • http://localhost:8080/axis

  27. Exemplo simples public class Calculator{ public int somar(int numA, int numB){ return numA + numB; } public int subtrair(int numA, int numB){ return numA - numB; } public int multiplicar(int numA, int numB){ return numA * numB; } }

  28. Publicando WS com Axis • Depende da utilização de tipos complexos. • Tipos Primitivos • Copie o arquivo “.java” para a pasta webappsdo TomCat e trocando sua extensão de “.java” para “.jws” • Tipos Complexos • Deve-se prover o servidor da habilidade de desserializar / serializar os objetos complexos.

  29. Deployment Descriptors • JWS é bastante simples, mas possui limitações: • Código-fonte • Não pode especificar handlers, mapeamentos, dispatchers • O WSDD ( Web Services Deployment Descriptors ) é um mecanismo que facilita a instalação e configuração de um WS permitindo: • Tipo de Mapeamento • Diferentes tipos de transporte – HTTP/S e CP/IP • Anexos Binários • Etc.

  30. Publicando um WS usando WSDD • Escrevemos um WSDD com os dados de configurações que desejamos para o nosso Web Service. • Copiamos os arquivos “.class” que utilizamos no Web Service para a pasta /WEB-INF/classes do Axis. • Realizamos um deploy do WSDD utilizando a ferramenta AdminClient do Axis com o seguinte comando: Java org.apache.axis.client AdminClient deploy.wsdd

  31. Publicação de Web Services com Apache Axis

  32. Consumindo o Web Service (Cliente) • Dynamic Invocation Interface ( DII) • Geração Stubs a partir do Service WSDL description • Pacotes - axis.jar- jaxrpc.jar- commons-logging.jar- commons-discovery.jar- saaj.jar- wsdl4j.jar

  33. Consumindo um WS usando DII import javax.xml.rpc.Call; import javax.xml.rpc.Service; import javax.xml.namespace.QName; public class CalculadoraClient { public static void main(String [] args) { try { String endpoint = "http://localhost:8080/axis/calculadora.jws"; Service service = new Service(); Call call = (Call) service.createCall(); call.setOperationName(new QName(endpoint, “somar")); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); Integer ret = (Integer)call.invoke(new Object[]{new Integer(5), new Integer(6)}); System.out.println(“somar(5, 6) = " + ret); } catch (Exception e) { System.err.println("Execution failed. Exception: " + e); } } }

  34. Consumindo um WS usando Stubs Generate the stubs: java org.apache.axis.wsdl.WSDL2Java \ http://localhost:8080/axis/Calculadora.jws?wsdl Import localhost.*; public class CalculadoraClient{ public static void main(String [] args) { try { CalculadoraService calcSF = new CalculadoraServiceLocator(); Calculadora calc = calcSF.getCalculadora(); System.out.println(“somar(5, 3) = " + calc.somar(5, 3)); } catch (Exception e) { System.err.println("Execution failed. Exception: " + e); } } }

  35. Generating Stubs, Compiling and Running the Stub Client

  36. Consumindo WS usando WSDL2Java Clique com o botão direito do mouse sobre o arquivo, selecione a opção WSDL2Java e depois clique em Generate. As classes serão criadas num pacote padrão.

  37. Himalayan X Alpine style

  38. Abraçe XML & XPath Use as ferramentas XML mais recentes Esqueça rpc/encoded SOAP Queued/Asynchronous API WSDL-first Alpine: a proposed alternative

  39. Novos Protocolos

  40. Limitações actuais: • Segurança? • Garantias de Entrega? • Transações? • Outros Transportes? • Mensagens Assíncronas (One-Way)? • Encaminhamento (Routing/Addressing)? • Outros padrões (Ex: Pub/Sub)?

  41. Web Services Protocols (WS-*) • Messaging SpecificationsSOAP WS-Addressing MTOM (Attachments) WS-Eventing    • Security SpecificationsWS-Security WS-SecureConversation WS-Trust WS-Federation WS-Federation Active Requestor ProfileWS-Federation Passive Requestor ProfileWeb Services Security Kerberos Binding • Reliable Messaging SpecificationsWS-ReliableMessaging • Transaction SpecificationsWS-Coordination WS-AtomicTransaction WS-BusinessActivity • Metadata SpecificationsWSDLUDDI WS-Policy WS-PolicyAssertions WS-PolicyAttachment WS-SecurityPolicy • XML SpecificationsXML Namespaces in XMLXML Information Set XInclude    Connected Applications BusinessProcess Management … Security Reliability Transactions Metadata Messaging XML … HTTP TCP SMTP

  42. SecureConversation Federation Authorization Policy Trust Privacy Web Services Security Roadmap Security Hoje SOAP Foundation Security in a Web Services World – IBM/MSFT White Paper http://msdn.microsoft.com/library/en-us/dnwssecur/html/securitywhitepaper.asp Abril 2002 WS-Security Specificationhttp://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss

  43. Conclusão

  44. Existe muita propaganda sobre Web Services • Primeiramente: Eu adoro WS!!! • O formato texto aumenta muito o overhead • Não existe “neutralidade” de transporte • Diferentes versões de padrões • Existem muitos padrões que “interagem”, mas não definem nenhuma restrição para interagirem • UDDI não atende as necessidades • Ferramentas de geração automática atrapalham • Não existe interoperabilidade 100%

  45. WS-* • ASAP (Asynchronous Service Access Protocol), BPEL4WS (Business Process Execution Language), ebSOA TC (Electronic Business Service Oriented Architecture), ebXML (Electronic Business XML), International Health Continuum TC, oBIX TC , SAML (Security Assertion Markup Language), SOAP (Simple Object Access Protocol), SOAP MTOM (SOAP Message Transmission Optimization Mechanism), ranslation WS TC , UBL (Universal Business Language), UDDI (Universal Description, Discovery, and Integration), WS-Addressing, WS-AtomicTransaction, WSBPEL (Business Process Execution Language), WS-CAF (WS Composite Application Framework ), WS-CF (WS Coordination Framework), WS-Choreography , WS-CDL (Web Services Choreography Description Language), WS-Coordination, WS-CTX, WS Context, WS-Discovery (Web Services Dynamic Discovery), WSDL (WS Description Language), WSDM (WS Distributed Management), WS-Enumeration, WS-Eventing, WS-Federation (Web Services Federation Language), WSIL (WS Inspection Language), WS-Manageability, WS-MetadataExchange (Web Services Metadata Exchange), WS-MessageDelivery, WS-Notification, WS-Policy, WS-Provisioning, WS-Reliability, WS Reliable Messaging, WS-RF (WS-Resource Framework), WS-Reliablemessaging , WSRP (WS Remote Portals), WS-Security, WS-SecureConversation, WS-SecurityPolicy, WS Security Services TC, WS-TM (WS Transaction Management), WS-Transfer, WS-Trust, XML-Encryption, XML-Signature

  46. Java Web Services Developer Pack 2.0 • Fast Infoset • Service Registry • XML • JAXB • JAXP • JAXR • JAX-RPC • SAAJ • JAXM • XML Web Services Security • Service Registry • Sun Java Streaming XML Parser • JSTL

  47. Web Services Project @ Apache • Addressing (WS-Addressing) • Axis (SOAP) • EWS (J2EE 1.4) • JaxMe (JAXB) • jUDDI (UDDI) • Kandula (WS-Coordination, WS-AtomicTransaction, WS-BusinessActivity) • Mirae (J2ME) • Muse (WSDM MUWS) • Pubscribe (WS-Notification) • Sandesha (WS-ReliableMessaging) • Scout (JAXR) • Woden (WSDL 2.0) • WSIF • WSRF (WS-ResourceFramework) • WSS4J (WS-Security) • XML-RPC

  48. Fontes de consulta • http://java.sun.com/webservices • developers.ibm.com/webservices • JavaWorld: www.javaworld.com • webservices.org • www.uddi.org • xml.apache.org • http://www.tusc.com.au/tutorial/html/chap9.html

More Related