A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Sistemas Distribuídos Web Services Aula de 09/11/2011 1."— Transcrição da apresentação:

1 Desenvolvimento de Sistemas Distribuídos Web Services Aula de 09/11/2011 1

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

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 ogerenciamento 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 3

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). 4

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 5

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

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

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

9 Web Services 9

10 Visão Tecnológica Web Services é uma tecnologia de chamada remota de objetos Permite a infra-estrutura para 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 10

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

12 Invocação de Web Services Web Server (e.g. Apache Tomcat) Web Service Toolkit (e.g. Apache Axis) Client (e.g. CalcClient.java) SOAP Binding SOAP Request Web Service Code (e.g. Calculator.java) Java to SOAP Java SOAP to 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- Garantir a interoperabilidade Padrões abertos Independente de plataforma 13

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 14

15 15

16 Soluções 16

17 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

18 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

19 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

20 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

21 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

22 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

23 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 download pela própria aplicação web que o implementa API de web services será estável – modificações e atualizações serão divulgadas com antecedência 23

24 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

25 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

26 Executando Apache AXIS Instalação Apache Tomcat (version 5.5.x) Java Apache Axis 26

27 Teste – Happy Axis 27

28 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 28

29 Publicando WS com Axis Depende da utilização de tipos complexos. Tipos Primitivos Copie o arquivo.java para a pasta webapps do 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

30 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

31 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

32 Publicação de Web Services com Apache Axis 32

33 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

34 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

35 Consumindo um WS usando Stubs 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); } Generate the stubs: java org.apache.axis.wsdl.WSDL2Java \ 35

36 Generating Stubs, Compiling and Running the Stub Client 36

37 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. Consumindo WS usando WSDL2Java 37

38 Himalayan X Alpine style 38

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

40 Novos Protocolos 40

41 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

42 Connected Applications Management Business Process … Security Reliability Transactions Messaging XML Metadata HTTP TCPSMTP … Messaging 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-*) 42

43 Security in a Web Services World – IBM/MSFT White Paper Abril 2002 WS-Security Specification PrivacyTrustPolicy AuthorizationFederationSecureConversation SOAP Foundation Hoje Web Services Security Roadmap 43

44 Conclusão 44

45 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

46 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

47 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

48 Web Services 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

49 Fontes de consulta developers.ibm.com/webservices JavaWorld: webservices.org xml.apache.org 49


Carregar ppt "Desenvolvimento de Sistemas Distribuídos Web Services Aula de 09/11/2011 1."

Apresentações semelhantes


Anúncios Google