Desenvolvimento de Sistemas Distribuídos Web Services
description
Transcript of Desenvolvimento de Sistemas Distribuídos Web Services
![Page 1: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/1.jpg)
Desenvolvimento de Sistemas Distribuídos
Web Services
Aula de 09/11/2011
1
![Page 2: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/2.jpg)
Agenda
IntroduçãoWeb Service
ArquiteturaSoluções
Passos básicosImplementando com Apache Axis
Novos protocolosConclusão
2
![Page 3: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/3.jpg)
O cenário de TI nas corporações
Novas tendências batiam à porta das corporaçõesMigraram 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
3
![Page 4: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/4.jpg)
Enterprise Application Integration
A diversidade de sistemas coexistindo nas empresas é enormeGrandes 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
![Page 5: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/5.jpg)
Service Oriented Architecture (SOA)
SOA é uma arquitetura que representa funcionalidades do software como serviços
Já existiam tecnologias para SOAEx.: CORBA, RMI, etc...
Interoperabilidade é muito importantePadronizaçãoFraco acoplamento
5
![Page 6: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/6.jpg)
Exemplo: Aplicação 3 camadas
Data Layer Presentation Layer
BusinessLayer
Aplicação Central Compras
boa arquitecturaDNA
Interface da aplicação dá acesso aos dados aplicacionais
6
![Page 7: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/7.jpg)
Service Oriented Architecture
Data Layer Presentation Layer
BusinessLayer
Serviço Central Compras
ServiceFaç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çõescross-platform
7
![Page 8: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/8.jpg)
Automação de Processos de Negócio
Serviço Central Compras UI Processo Compras
Serviço RH
Serviços Contabilidade
BusinessProcess
Automation
Múltiplos serviços combinados num único processo de negócio
integração com diferentes plataformas
8
![Page 9: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/9.jpg)
Web Services
9
![Page 10: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/10.jpg)
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
![Page 11: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/11.jpg)
ImplementationImplementation
DataBusinessLogic
MessageMessage
DescriptionDescription
DiscoveryDiscovery
Transport HTTP(S)Transport HTTP(S)
.NET/J2EE.NET/J2EE
DataBusinessLogic
SOAP / XMLSOAP / XML
WSDLWSDL
UDDIUDDI
Arquitetura Web Service
11
![Page 12: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/12.jpg)
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 ServiceCode(e.g. Calculator.java)
Java to SOAP
Java
JavaSOAP to Java
<soap:Envelope <soap:Body> <add> <i1>10</i1> <i2>5</i2> </add> </soap:Body></soap:Envelope>
calculator.add(10, 5)
add(10, 5)
12
![Page 13: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/13.jpg)
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
13
![Page 14: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/14.jpg)
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
14
![Page 15: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/15.jpg)
15
![Page 16: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/16.jpg)
Soluções
16
![Page 17: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/17.jpg)
Fatores decisivos para a escolha
Maturidade da soluçãoIntegração com IDEsReutilização da segurança Escalabilidade (implementação server-
side e stateless)Documentação
17
![Page 18: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/18.jpg)
Tecnologias mais conhecidas
Framework .NET Java
Apache Axis JaxRPCIBM SOAP Toolkit
Qualquer plataforma que tenha rotinas de comunicação HTTP e saiba manipular dados em XML pode implementar Web Services.
18
![Page 19: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/19.jpg)
Passo 1: Definição do serviço
SOA – Service Oriented ArchitectureUm serviço é uma função bem definida, auto-
contida e que não depende do estado ou contexto de outros serviços;
19
![Page 20: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/20.jpg)
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
![Page 21: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/21.jpg)
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
![Page 22: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/22.jpg)
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
![Page 23: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/23.jpg)
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
![Page 24: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/24.jpg)
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
![Page 25: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/25.jpg)
Apache Axis
A SOAP Processing EngineJAX-RPC Client SystemJAX-RPC Server System ( Servlet based )SAAJArquitetura extensível e flexível Tools, Exemplos, Documentação, …Uma boa para começar com Web Services.
Open-source, Apache Software Foundation
25
![Page 26: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/26.jpg)
Executando Apache AXIS
InstalaçãoApache Tomcat (version 5.5.x)
http://jakarta.apache.org/tomcat/Java
http://java.sun.com/Apache Axis
http://ws.apache.org/axis/
26
![Page 28: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/28.jpg)
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
![Page 29: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/29.jpg)
Publicando WS com Axis
Depende da utilização de tipos complexos.
Tipos PrimitivosCopie o arquivo “.java” para a pasta webapps
do TomCat e trocando sua extensão de “.java” para “.jws”
Tipos ComplexosDeve-se prover o servidor da habilidade de
desserializar / serializar os objetos complexos.29
![Page 30: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/30.jpg)
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
![Page 31: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/31.jpg)
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
![Page 32: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/32.jpg)
Publicação de Web Services com Apache Axis
32
![Page 33: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/33.jpg)
Consumindo o Web Service (Cliente)
Dynamic Invocation Interface ( DII)Geração Stubs a partir do Service WSDL
descriptionPacotes
- axis.jar- jaxrpc.jar- commons-logging.jar- commons-discovery.jar- saaj.jar- wsdl4j.jar
33
![Page 34: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/34.jpg)
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); } }}
34
![Page 35: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/35.jpg)
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 \ http://localhost:8080/axis/Calculadora.jws?wsdl
35
![Page 36: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/36.jpg)
Generating Stubs, Compiling and Running the Stub Client
36
![Page 37: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/37.jpg)
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
![Page 38: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/38.jpg)
Himalayan X Alpine style
38
![Page 39: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/39.jpg)
Alpine: a proposed alternative
Abraçe XML & XPathUse as ferramentas
XML mais recentesEsqueça rpc/encoded
SOAPQueued/Asynchronous
API WSDL-first
39
![Page 40: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/40.jpg)
Novos Protocolos
40
![Page 41: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/41.jpg)
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
![Page 42: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/42.jpg)
ConnectedConnected Applications Applications ManagementManagement BusinessBusiness
ProcessProcess ……
SecuritySecurity ReliabilityReliability TransactionsTransactions
MessagingMessaging
XMLXMLM
etad
ata
Met
adat
a
HTTPHTTP TCPTCP SMTPSMTP ……
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 Specifications
WS-Coordination WS-AtomicTransaction WS-BusinessActivity
Metadata Specifications
WSDLUDDI WS-Policy WS-PolicyAssertions WS-PolicyAttachment WS-SecurityPolicy
XML Specifications
XML Namespaces in XMLXML Information Set XInclude
Web Services Protocols (WS-*)
42
![Page 43: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/43.jpg)
Security in a Web Services World – IBM/MSFT White Paperhttp://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
SecuritySecurity
PrivacyPrivacyTrustTrustPolicyPolicy
AuthorizationAuthorizationFederationFederationSecureConversationSecureConversation
SOAP FoundationSOAP Foundation
HojeHoje
Web Services Security RoadmapWeb Services Security Roadmap
43
![Page 44: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/44.jpg)
Conclusão
44
![Page 45: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/45.jpg)
Existe muita propaganda sobre Web ServicesPrimeiramente: Eu adoro WS!!!O formato texto aumenta muito o overheadNão existe “neutralidade” de transporteDiferentes versões de padrõesExistem muitos padrões que “interagem”, mas
não definem nenhuma restrição para interagiremUDDI não atende as necessidadesFerramentas de geração automática atrapalhamNão existe interoperabilidade 100%
45
![Page 46: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/46.jpg)
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
![Page 47: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/47.jpg)
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
47
![Page 48: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/48.jpg)
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
![Page 49: Desenvolvimento de Sistemas Distribuídos Web Services](https://reader034.fdocuments.net/reader034/viewer/2022042617/568147eb550346895db522e7/html5/thumbnails/49.jpg)
Fontes de consulta
http://java.sun.com/webservicesdevelopers.ibm.com/webservicesJavaWorld: www.javaworld.comwebservices.orgwww.uddi.orgxml.apache.orghttp://www.tusc.com.au/tutorial/html/
chap9.html
49