Desenvolvimento de Sistemas Distribuídos Web Services

  • View
    29

  • Download
    5

Embed Size (px)

DESCRIPTION

Desenvolvimento de Sistemas Distribudos Web Services. Aula de 09/11/2011. Agenda. Introduo Web Service Arquitetura Solues Passos bsicos Implementando com Apache Axis Novos protocolos Concluso. O cenrio de TI nas corporaes. Novas tendncias batiam porta das corporaes - PowerPoint PPT Presentation

Transcript

  • Desenvolvimento de Sistemas Distribudos

    Web Services

    Aula de 09/11/2011*

  • AgendaIntroduoWeb ServiceArquiteturaSoluesPassos bsicosImplementando com Apache AxisNovos protocolosConcluso

    *

  • O cenrio de TI nas corporaes Novas tendncias batiam porta das corporaesMigraram o foco do gerenciamento de dados para o gerenciamento dos processos e clientesRedesenho dos processos e implantao dos grandes sistemas de gesto empresarial (ERP)Sucesso da InternetDisponibilizar parte das informaes corporativas a usurios ou sistemas que extrapolam as fronteiras corporativasE-commerce

    *

  • Enterprise Application Integration A diversidade de sistemas coexistindo nas empresas enormeGrandes pacotes comerciais a aplicaes desenvolvidas sob-medida Diferentes software housesDiferentes tecnologias (host-centric, cliente-servidor, n-tier, etc), Diferentes plataformas (mainframes, Unix, Windows, etc). *

  • Service Oriented Architecture (SOA)SOA uma arquitetura que representa funcionalidades do software como servios J existiam tecnologias para SOAEx.: CORBA, RMI, etc...Interoperabilidade muito importantePadronizaoFraco acoplamento

    *

  • Exemplo: Aplicao 3 camadasData LayerPresentation LayerBusinessLayerAplicao Central Comprasboa arquitectura DNAInterface da aplicao d acesso aos dados aplicacionais*

  • Service Oriented ArchitectureData LayerPresentation LayerServio Central ComprasUIboa arquitectura 3-tier servicetroca de mensagensDados e Lgica Negcio encapsulados por uma Web Service Faade Interface desacoplado da lgica de processamento dos dadosWeb Service Standards permitem ligaes cross-platform *

  • Automao de Processos de NegcioUI Processo ComprasBusiness ProcessAutomation Mltiplos servios combinados num nico processo de negciointegrao com diferentes plataformas*

  • Web Services*

  • Viso TecnolgicaWeb Services uma tecnologia de chamada remota de objetosPermite a infra-estrutura para criao de aplicaes distribudas (web ou no)Permitem a criao de pequenos mdulos de cdigo reutilizveis e disponibilizados para construo de aplicaes LEGOUtiliza protocolos Web como meio de transporte e comunicaoAlto grau de abstrao em relao a linguagens de programao e plataformas de hardware / software*

  • MessageDescriptionDiscoveryTransport HTTP(S)SOAP / XMLWSDLUDDIArquitetura Web Service*

  • Invocao de Web ServicesWeb Server (e.g. Apache Tomcat)Web Service Toolkit(e.g. Apache Axis)Client(e.g. CalcClient.java)

    SOAP Binding

    SOAP RequestWeb ServiceCode(e.g. Calculator.java)

    Java to SOAPJavaJavaSOAP to Java

  • Vantagens Padro adotado pelo W3C e pela indstria. Atravessa firewalls, roteadores e servidores de proxy. Abordagem simples e fcil de distribuio e de interoperabilidade.Consrcio WS-I- www.ws-i.orgGarantir a interoperabilidade Padres abertos Independente de plataforma*

  • 170+ fabricantes software envolvidosInteroperabilidade entre plataformas, aplicaes e linguagensMaior evidncia de que a indstria est alinhada com os web serviceswww.ws-i.org *

  • *

  • Solues*

  • Fatores decisivos para a escolhaMaturidade da soluoIntegrao com IDEsReutilizao da segurana Escalabilidade (implementao server-side e stateless)Documentao

    *

  • Tecnologias mais conhecidasFramework .NET Java Apache Axis JaxRPCIBM SOAP ToolkitQualquer plataforma que tenha rotinas de comunicao HTTP e saiba manipular dados em XML pode implementar Web Services.

    *

  • Passo 1: Definio do servioSOA Service Oriented ArchitectureUm servio uma funo bem definida, auto-contida e que no depende do estado ou contexto de outros servios;*

  • Passo 2: ImplementaoImplementao do servio:O servio a ser fornecido via web service deve ser identificado e isolado em uma API tipicamente stateless;Normalmente este servio j est implementado no legado, bastando definir e implementar uma API para seu acesso na plataforma original.*

  • Passo 3: Value ObjectsParmetros de entrada e sada:A API de um servio dever conter apenas tipos compatveis com web services (tipos bsicos, strings, arrays tipados ou estruturas VOs destes tipos.*

  • Passo 4: Criao do WSDefinies de interesse pblico:Definio da API (e value objects);Gerao da definio formal do web service (WSDL);Se VOs forem compatveis, o WSDL conter uma descrio completa das estruturas de dados (mesmo as complexas);O WS , na prtica, implementado por uma aplicao web comum (HTTP/HTTPS), sem o uso de qualquer extenso proprietria.*

  • Passo 5: Publicao do WSA publicao do web service , fisicamente, como a publicao de uma aplicao web comumA definio pblica do web service (WSDL) estar disponvel para download pela prpria aplicao web que o implementaAPI de web services ser estvel modificaes e atualizaes sero divulgadas com antecedncia*

  • Passo 6: Consumo do WSGerao do cliente:Acesso definio do web service (WSDL) tudo que basta;IDEs tm a capacidade de gerar stub cliente a partir do WSDL;*

  • Apache AxisA SOAP Processing EngineJAX-RPC Client SystemJAX-RPC Server System ( Servlet based )SAAJArquitetura extensvel e flexvel Tools, Exemplos, Documentao, Uma boa para comear com Web Services.Open-source, Apache Software Foundation

    *

  • Executando Apache AXISInstalaoApache Tomcat (version 5.5.x) http://jakarta.apache.org/tomcat/Java http://java.sun.com/Apache Axis http://ws.apache.org/axis/*

  • Teste Happy Axishttp://localhost:8080/axis *

  • 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; }}Exemplo simples*

  • Publicando WS com AxisDepende da utilizao de tipos complexos. Tipos PrimitivosCopie o arquivo .java para a pasta webapps do TomCat e trocando sua extenso de .java para .jws Tipos ComplexosDeve-se prover o servidor da habilidade de desserializar / serializar os objetos complexos.

    *

  • Deployment DescriptorsJWS bastante simples, mas possui limitaes:Cdigo-fonteNo pode especificar handlers, mapeamentos, dispatchers O WSDD ( Web Services Deployment Descriptors ) um mecanismo que facilita a instalao e configurao de um WS permitindo:Tipo de MapeamentoDiferentes tipos de transporte HTTP/S e CP/IPAnexos BinriosEtc. *

  • Publicando um WS usando WSDDEscrevemos um WSDD com os dados de configuraes 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

    *

  • Publicao de Web Services com Apache Axis*

  • Consumindo o Web Service (Cliente)Dynamic Invocation Interface ( DII)Gerao Stubs a partir do Service WSDL descriptionPacotes- axis.jar - jaxrpc.jar - commons-logging.jar - commons-discovery.jar - saaj.jar - wsdl4j.jar*

  • Consumindo um WS usando DIIimport 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); } }}*

  • Consumindo um WS usando StubsImport 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); } }}Generate the stubs:java org.apache.axis.wsdl.WSDL2Java \ http://localhost:8080/axis/Calculadora.jws?wsdl*

  • Generating Stubs, Compiling and Running the Stub Client*

  • Clique com o boto direito do mouse sobre o arquivo, selecione a opo WSDL2Java e depois clique em Generate. As classes sero criadas num pacote padro. Consumindo WS usando WSDL2Java*

  • Himalayan X Alpine style*

  • Alpine: a proposed alternativeAbrae XML & XPathUse as ferramentas XML mais recentesEsquea rpc/encoded SOAPQueued/Asynchronous API WSDL-first*

  • Novos Protocolos*

  • Limitaes actuais:Segurana?Garantias de Entrega?Transaes?Outros Transportes?Mensagens Assncronas (One-Way)?Encaminhamento (Routing/Addressing)?Outros padres (Ex: Pub/Sub)?*

  • Connected ApplicationsManagementBusiness ProcessSecurityReliabilityTransactionsMessagingXMLMetadataHTTPTCPSMTPMessaging Specifications SOAP WS-Addressing MTOM (Attachments) WS-Eventing

    Security Specifications WS-Security WS-SecureConversation WS-Trust WS-Federation WS-Federation Active Requestor Profile WS-Federation Passive Requestor Profile Web Services Security Kerberos Binding Reliable Messaging Specifications WS-ReliableMessaging Transaction Specifications WS-Coordination WS-AtomicTransaction WS-BusinessActivity Metadata Specifications WSDL UDDI WS-Policy WS-PolicyAssertions WS-PolicyAttachment WS-SecurityPolicy XML Specifications XML Namespaces in XML XML Information Set XInclude Web Services Protocols (WS-*)*

  • Security in a Web Services Wor