49
Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury [email protected]

Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury [email protected]

Embed Size (px)

Citation preview

Page 1: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Desenvolvimento de Aplicações Corporativas Avançadas

Web Services

Marcelo Iury

[email protected]

Page 2: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Agenda

IntroduçãoWeb Service

Arquitetura

Soluções Passos básicos Implementando com Apache Axis

Novos protocolosConclusão

Page 3: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 4: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 5: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 6: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 7: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 8: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 9: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Web Services

Page 10: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 11: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

ImplementationImplementationImplementationImplementation

DataDataBusiness

LogicBusiness

Logic

MessageMessageMessageMessage

DescriptionDescriptionDescriptionDescription

DiscoveryDiscoveryDiscoveryDiscovery

TransportTransportTransportTransport

.NET/J2EE.NET/J2EE.NET/J2EE.NET/J2EE

DataDataBusiness

LogicBusiness

Logic

SOAP / XMLSOAP / XMLSOAP / XMLSOAP / XML

WSDLWSDLWSDLWSDL

UDDIUDDIUDDIUDDI

HTTP(S)HTTP(S)HTTP(S)HTTP(S)

Arquitetura Web Service

Page 12: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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)

Page 13: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 14: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 15: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br
Page 16: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Soluções

Page 17: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 18: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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.

Page 19: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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;

Page 20: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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.

Page 21: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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.

Page 22: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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.

Page 23: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 24: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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;

Page 25: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 26: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Executando Apache AXIS

Instalação Apache Tomcat (version 4.1.x)

http://jakarta.apache.org/tomcat/

Java http://java.sun.com/

Apache Axis http://ws.apache.org/axis/

Page 27: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Teste – Happy Axis

http://localhost:8080/axis

Page 28: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 29: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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.

Page 30: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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.

Page 31: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 32: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Publicação de Web Services com Apache Axis

Page 33: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 34: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

}

}

}

Page 35: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 36: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Generating Stubs, Compiling and Running the Stub Client

Page 37: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 38: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Himalayan X Alpine style

Page 39: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Alpine: a proposed alternative

Abraçe XML & XPath Use as ferramentas

XML mais recentes Esqueça rpc/encoded

SOAP Queued/Asynchronous

API WSDL-first

Page 40: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Novos Protocolos

Page 41: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 42: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 43: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

SecuritySecuritySecuritySecurity

PrivacyPrivacyPrivacyPrivacyTrustTrustTrustTrustPolicyPolicyPolicyPolicy

AuthorizationAuthorizationAuthorizationAuthorizationFederationFederationFederationFederationSecureConversationSecureConversationSecureConversationSecureConversation

SOAP FoundationSOAP FoundationSOAP FoundationSOAP Foundation

HojeHoje

Web Services Security RoadmapWeb Services Security Roadmap

Page 44: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

Conclusão

Page 45: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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%

Page 46: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 47: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 48: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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

Page 49: Desenvolvimento de Aplicações Corporativas Avançadas Web Services Marcelo Iury iury@dsc.ufcg.edu.br

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