Desenvolvimento de Sistemas Distribuídos Web Services

  • Published on
    18-Mar-2016

  • 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 World IBM/MSFT White Paperhttp://msdn.microsoft.com/library/en-us/dnwssecur/html/securitywhitepaper.aspAbril 2002

    WS-Security Specification http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wssSecuritySOAP FoundationHojeWeb Services Security Roadmap*

  • Concluso*

  • Existe muita propaganda sobre Web ServicesPrimeiramente: Eu adoro WS!!!O formato texto aumenta muito o overheadNo existe neutralidade de transporteDiferentes verses de padresExistem muitos padres que interagem, mas no definem nenhuma restrio para interagiremUDDI no atende as necessidadesFerramentas de gerao automtica atrapalhamNo existe interoperabilidade 100%*

  • 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

    *

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

  • Web Services Project @ ApacheAddressing (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)WSIFWSRF (WS-ResourceFramework)WSS4J (WS-Security)XML-RPC*

  • Fontes de consultahttp://java.sun.com/webservicesdevelopers.ibm.com/webservicesJavaWorld: www.javaworld.comwebservices.orgwww.uddi.orgxml.apache.orghttp://www.tusc.com.au/tutorial/html/chap9.html*

    **UDDI (Universal Description, Design, and Integration ) Provides a Directory of Services on the InternetWSDL (Web Services Description Language) Web Services are defined in terms of the formats and ordering of messagesSOAP (Simple Object Access Protocol)Web Services consumers can send and receive messages using XML HTTP(S) and XMLTransport provided by open Internet protocols

    **O Apache Axis abstrai muito a complexidade de construode um Web Service no Java.A construo do Web Service no Axis similar a qualquer outroprojeto em Java.Construa a sua classe contendo os mtodos que deseja disponibilizar atravs de Web Service.

    *A publicao de um Web Service no Apache Axis depende dautilizao de tipos complexos.

    Tipos Primitivos

    Copie o arquivo .java para a pasta webapps do TomCat e trocando sua extenso de .java para .jws

    Tipos Complexos Deve-se prover o servidor da habilidade de desserializar / serializar os objetos complexos.

    **I was a bit apprehensive about putting this slide in this deck; but, I want everyone to know that these additional standards being worked on today represent a great body of work and solve most if not all the problems that occur when organizations try to connect their applications across different trust boundaries.

    These specifications pick up where the basic specifications left off and once complete will allow Web Services to be used for application-to-application integration between organizations with different management, infrastructure, and trust domains.

    Advanced Web Services http://www.msdn.microsoft.com/webservices/understanding/advancedwebservices/default.aspx

    *

Recommended

View more >