Desenvolvimento de Sistemas Distribuídos Web Services

Slides:



Advertisements
Apresentações semelhantes
Web Services aplicado à Computação em Grade
Advertisements

Novas Arquitecturas baseadas em Web Services
Sistemas Distribuídos Baseados na Web
Mudar para Service-Orientation ? Vitor Santos.NET Group Microsoft Corporation.
ARQUITETURA EM CAMADAS
UNIPAC – ARAGUARI CAMPUS – IX PROF. EVERTON HIPÓLITO DE FREITAS
Web Services Um Web Service é um bloco de software que pode ser acedido pela Internet e usado remotamente por outras aplicações Infra-estrutura para a.
Infra-Estrutura de TI: Hardware e Software
Prof. Wamberg Oliveira.
PLATAFORMA J2EE Luís Filipe Almeida Santos
Sistemas Distribuídos Web Services
Sistemas Distribuídos
RMI-IIOP.
Introdução aos Serviços Web
Web Services Erika Hmeljevski Estefania Borm Leonardo Malagoli
SOA e Web Services Aluno: Thiago Caproni Tavares
Gilberto Miyake Gerente de Produtos.
Área de Desenvolvimento de Sistemas
DAS Sistemas Distribuídos para Automação Industrial
Sistema ERP.
Aplicações para Web.
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Mestrado em Sistemas e Computação Arquitetura Cross-Plataforma para Segurança de Aplicações Comerciais utilizando SOA Cleverson Sacramento
Ricardo Spinoza Visão Geral sobre jCompany Ricardo Spinoza
SOA - Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a serviços
Tópicos de Sistemas de Informação A
Aplicativos Web Com Orientação a Objetos
Tecnologia de Informática
FACULDADE SETE DE SETEMBRO
Minicurso PHP – Parte 2 João Paulo Ribeiro jpribeiro.com
Tópicos de Sistemas de Informação A
Tópicos de Sistemas de Informação A
Web Services Uninorte Semana de Tecnologia da Informação
A autoria - II.
Web Services Desmistificando o pré-conceito.
Desenvolvimento de Aplicações Web nas plataformas J2EE e IDE Eclipse
Marcela Bezerra da Silva Cin - UFPE
Tópicos Avançados em Sistemas Distribuídos
Arquitetura SOA e Oracle SOA SUITE
Projeto de Arquitetura de Software Visão Geral
GeneXus 9.0: SOA e Mobilidade
Da Introdução à Prática
Representação Arquitetural
RPC and Web Service André Pereira.
FACULDADE DE TECNOLOGIA SENAC-RS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Uma Ferramenta para Geração de Casos de Testes para.
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
Infra-estrutura da tecnologia de informação
SOA Elucidado: Princípios da Arquitetura Orientada a Serviços
Padrões de Interação com o Usuário
Padrões de Interação com o Usuário
Web Services Equipe: Cláudia Brito Lyra Nunes da Silva
WSIT: Extensão de uma ferramenta de busca federada para Web Services Emanuel Müller Ramos Orientador: Cláudio Fernando Resin Geyer.
Triwatcher Architecture Design 21/07/2009. Agenda  Restrições Arquiteturais  Representação Arquitetural  Visão Lógica  Visão de Execução  Visão de.
Integrando sistemas através de HTTP + XML. * Muitos processos manuais começam a ser realizados online. * Ferramentas desenvolvidas precisavam ser interoperáveis.
Web Services: Conceitos e Transações
Universidade Federal de Alagoas Instituto de Computação - IC Redes de Computadores 2 Serviços Web Felipe Santos José Oswaldo.
WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI.
© Copyright 2005 Rodrigo Rebouças de Almeida ( Estudo de caso: Café Expresso Ltda. A estória de João...
Abstrações de um Sistema Utiliza um conjunto selecionado de conceitos e regras de forma a focar em aspectos específicos de interesse num sistema. Visão.
1 Web Services Uma Introdução Jacques P. Sauvé DSC/UFCG 2003.
Análise de estratégias para implantação de segurança em arquiteturas orientadas a serviços Dezembro/2010 Itabaiana/SE Universidade Federal de Sergipe –
Pesquisa sobre o uso de Web Service Alunos:Felipe Silveira Israel Andreis Programação Distribuída e Paralela Prof. Dr. Cláudio F. R. Geyer.
TECNOLOGIA DA INFORMAÇÃO
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
ESCRITURAÇÃO DIGITAL.
SOA SOA – Arquitetura Orientada a Serviços Conceitos e Aplicações
YOUR LOGO Tópicos Avançados em Internet Prof. Lincoln Ferreira Dantas Sistemas de Informação UNIESP – Presidente Epitácio.
Web Services / SOA. 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.
Web Services Conceitos e Tecnologias Amanda Modesto Suzanna Sandes.
Transcrição da apresentação:

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

Agenda Introdução Web Service Soluções Novos protocolos Conclusão 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 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

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

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

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

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 Business Layer Service Façade Data Layer Presentation Layer Web Service Standards permitem ligações cross-platform Dados e Lógica Negócio encapsulados por uma Web Service Façade

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

Web Services

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

Arquitetura Web Service SOAP / XML Message Transport HTTP(S) Discovery UDDI WSDL Description UDDI (Universal Description, Design, and Integration ) Provides a Directory of Services on the Internet WSDL (Web Services Description Language) Web Services are defined in terms of the formats and ordering of messages SOAP (Simple Object Access Protocol) Web Services consumers can send and receive messages using XML HTTP(S) and XML Transport provided by open Internet protocols .NET/J2EE Data Business Logic Implementation Data Business Logic

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

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

170+ fabricantes software envolvidos www.ws-i.org 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

Soluções

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

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.

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;

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.

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.

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.

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

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;

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 O Apache Axis abstrai muito a complexidade de construção de um Web Service no Java. A construção do Web Service no Axis é similar a qualquer outro projeto em Java. Construa a sua classe contendo os métodos que deseja disponibilizar através de Web Service.

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/

Teste – Happy Axis http://localhost:8080/axis

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; } }

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. A publicação de um Web Service no Apache 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.

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.

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

Publicação de Web Services com Apache Axis

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

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); }

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); }

Generating Stubs, Compiling and Running the Stub Client

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.

Himalayan X Alpine style

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

Novos Protocolos

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)?

Web Services Protocols (WS-*) 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    Connected Applications Business Process Management … Security Reliability Transactions Metadata 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 Messaging XML HTTP TCP SMTP …

Web Services Security Roadmap Authorization Federation SecureConversation Privacy Trust Policy Hoje Security 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 Specification http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss

Conclusão

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%

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.0 Fast Infoset Service Registry XML JAXB JAXP JAXR JAX-RPC SAAJ JAXM XML Web Services Security Sun Java Streaming XML Parser JSTL

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

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