© copyright 2005 rodrigo rebouças de almeida () estudo de caso: café expresso ltda. a estória de...
TRANSCRIPT
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Estudo de caso:
Café Expresso Ltda.
A estória de João...
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
• Características:•Sistema de controle de vendas de café:
•Implementado em Delphi•Interface Windows p/ Desktop•Possui um SGBD
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
Um dia o chefe de João traz novos requisitos...
Preciso vender café através da Internet!!
Estou perdendo dinheiro! Quero isso
PARA ONTEM!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
Como vou integrar o sistema existente com
um novo módulo de acesso à Internet?
Terei que reescrever o
sistema em Java? ASP?
João pensa...
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
Enquanto isso, o chefe traz mais requisitos...
Meus concorrentes estão vendendo mais variedades de café do que eu! Preciso integrar nosso
sistema de venda pela internet com os sistemas de meus fornecedores, e de novos
fornecedores, para aumentar meus lucros!!!
PARA ONTEM!!!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
João desesperado...
Já estou reescrevendo o
sistema em Java...
Pelo menos o sistema dos
fornecedores é escrito em
Java??
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
O chefe esclarece...
Um dos fornecedores tem o sistema em Delphi...
... o outro em C++ ...
... o outro em Visual Basic ...
Preciso disso PRA ONTEM!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Café Expresso Ltda.
Precisamos ajudar João...
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Arquiteturas - Histórico MainFrames
[ Dados + Lógica + Interface ]Mainframe
TerminalTerminal
Terminal
Terminal
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Arquiteturas - Histórico Arquitetura Cliente-Servidor
Servidor c/ SGBD
[ Lógica + Interface ]
[ Dados ]PC
Cliente
PC
Cliente
PC
Cliente
PC
Cliente
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Arquiteturas - Histórico Arquitetura em n-camadas
Browser Web
Browser Web
Internet
Servidor Web Servidor deAplicação
SGBD
[ Interface ] [ Dados ][ Lógica ]
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
O Problema de João...
PC
Cliente
PC
ClientePC
Cliente
PC
Cliente Servidor de Aplicação
Internet
Fornecedor A
Fornecedor B
Fornecedor C
Cliente
1. Integrar o sistema legado com um novo sistema
2. Integrar o sistema da empresa com os sistemas dos fornecedores A, B, C
12
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Vamos tentar resolver o problema de João usando Web Services.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
O que é um Web Service? Um Web Service é um ponto de acesso a
funcionalidade que pode ser: Localizado dinamicamente Ter sua interface descoberta automaticamente,
porque o serviço sabe se descrever Ser chamado na Web
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Web services Se fundamenta basicamente em três tecnologias:
Web Services Description Language (WSDL) Define a interface de acesso ao serviço
Simple Object Access Protocol (SOAP) Um protocolo baseado em XML. Permite que os clientes
se comuniquem com os provedores de serviço. Universal Description, Discovery and Integration (UDDI)
Permite Web services registrarem suas características, permitindo que outras aplicações as encontrem.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Usar XML para toda a comunicação Extended Markup Language (XML) Oferece um formato ASCII para trocar qualquer tipo de
informação estruturada Usa o “estilo” HTML de markup com tags
<pessoa nome=”João”> <frutasFavoritas> <fruta>Manga</fruta> <fruta>Maçã</fruta> <fruta>Uva</fruta> </frutasFavoritas></pessoa>
Os tags podem ser definidos para criar uma “Aplicação XML” ou “Linguagem XML”
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Usar SOAP fazer RPC SOAP é uma forma de fazer Remote Procedure Call (RPC)
usando documentos XML
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Descrever o serviço remoto usando WSDL
WSDL = Web Services Description Language Pronunciado “wisdle” É uma linguagem XML que contém
informação sobre a interface, a semântica, e outros detalhes de chamadas a um Web Service
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Definir ontologias Precisamos saber o que as coisas significam Exemplo: como mandar uma ordem de serviço se
não sei o que cada campo deve conter? Várias organizações definem e padronizam
ontologias ebXML RosettaNet (...)
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Usar UDDI para localizar serviços UDDI = Universal Description, Discovery, and
Integration Permite cadastrar serviços e localizá-los Não é necessário usar UDDI se o cliente já tiver o
documento WSDL
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Web services, Arquitetura
Serviçode diretório
Serviço cliente Provedorde serviço
1 - Registra-se2 - Buscaserviço
3 - Provê serviço
<< SOAP >>
<< SOAP >><< SOAP >>
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP Simple Object Access Protocol
Define uma forma de transferir documentos XML através da Internet;
Aplicações cliente se comunicam com Web services usando SOAP como protocolo;
SOAP define um envelope para transmissão de mensagens, oferece regras para representar “remote procedure calls” (RPCs);
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP É o padrão para troca de mensagens usando XML; Desenvolvido sob a supervisão da W3C; Permite a transferência de mensagens através de
protocolos de alto nível, como HTTP e SMTP; É mais usado sobre HTTP, pois consegue
atravessar firewalls!
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
SOAP Estrutura de uma mensagem SOAP:<SOAP:Envelope xmlns:SOAP= http://schemas.xmlsoap.org/soap/envelope/>
<SOAP:Header><!conteudo do cabecalho >
</SOAP:Header><SOAP:Body>
<!conteudo do corpo></SOAP:Body>
</SOAP:Envelope>
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
João agora não precisa reimplementar o sistema de controle de vendas de
café para este ser acessível via Internet...
Basta fazer o sistema existente e o módulo de
acesso a Internet conversarem usando SOAP e descrever os
dados em XML
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
PC
Cliente
PC
ClientePC
Cliente
PC
Cliente
Servidor de Aplicação
Internet
Parser XML
XML
SOAP
XML
HTML
Integração entre aplicações dentro de um domínio administrativo
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Resolvemos o 1o problema, publicamos o sistema existente na
Internet, agora precisamos ligar nosso sistema aos sistemas dos
nossos fornecedores!
Podemos usar SOAP como protocolo de comunicação! Mas,
como saber a interface do sistema do meu fornecedor?
Como posso fazer meu sistema iteragir com um sistema escrito em outra linguagem, em outra
plataforma?
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
WSDL Web Service Description Language
É uma linguagem XML para descrever Web services;
Segue um conceito parecido da “Interface Definition Language” (IDL) usado em CORBA;
Descreve detalhes como definição de tipos de dados, operações suportadas pelo Web service, formato das mensagens, endereço de rede do Web service, etc.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Fornecedor A
Fornecedor B
Fornecedor C
WSDL
WSDL
WSDL
WSDL
InternetCafé Expresso Ltda.
<< SOAP >>
<< SOAP >>
<< SOAP >>
Resolvido o problema, agora João tem seuSistema integrado com os fornecedores.
Último detalhe... Como descobrirnovos fornecedores??
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
UDDI Universal Description, Discovery and
Integration Provê um mecanismo para registro e
localização de Web services; É um diretório que contém vários Web
services registrados, onde associamos um nome a um serviço, como um Web service.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
UDDI Permite que empresas registrem seus
serviços e possam interagir com outras empresas interessadas.
UDDI é um Webservice baseado em XML e SOAP;
A interação com um serviço UDDI é baseado em interfaces SOAP pré-definidas.
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
UDDI Um registro UDDI é organizado em duas entidades
fundamentais: businessEntity : provê informações a sobre a empresa que
está publicando o serviço. Contém um ou mais elementos businessService;
businessService: representa um serviço provido pela businessEntity;
Cada entidade é identificada por uma chave única, permitindo que haja referências a serviços, definições WSDL;
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Fornecedor A
Fornecedor B
Fornecedor C
WSDL
WSDL
WSDL
WSDLInternetCafé Expresso Ltda.
<< SOAP >>
<< SOAP >>
<< SOAP >>
João agora pode encontrar outrosFornecedores através de um serviço UDDI.
UDDI ServiceFornecedores XYZ
Registram-se
Busca novos fornecedores
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Fornecedor A
Fornecedor B
Fornecedor C
WSDL
WSDL
WSDL
WSDLInternetCafé Expresso Ltda.
<< SOAP >>
<< SOAP >>
<< SOAP >>
João agora pode encontrar outrosFornecedores através de um serviço UDDI.
UDDI ServiceFornecedores XYZ
Registram-se
Comunica-se com novos fornecedores<<SOAP>>
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Ferramentas - Como desenvolver Web Services? Ferramentas da Sun
JWSDP com muitas APIs: JAXP, JAXB, JAX-RPC, SAAJ, JAXR, JWSDL
Ferramentas da IBM Ferramentas da Microsoft (.NET) Ferramentas da Apache
Axis do projeto Apache WSDL2Java converte WSDL para Java
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Exemplo com Axis Usando JWS
Criando um serviço de soma e subtração de números
Recursos: Axis Apache Tomcat 5.x Eclipse 3.1 Plugin do Eclipse: Lavadora
http://lavadora.sourceforge.net/
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Passo a passo (1) Passo 1: Download Axis
http://ws.apache.org/axis/ Passo 2: Crie contexto Axis no Tomcat
Copie (...)/axis/webapps/axis para o diretório webapps do Tomcat
Passo 3: Inicie o Tomcat e teste a instalação do Axis Acesse: http://localhost:8080/axis/happyaxis.jsp Corrija as dependências
Passo 4: Crie o WebService Crie uma classe Java, altere a extensão de .java para .jws Copie o jws para o contexto do Axis, no tomcat
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Passo a passo (2) Passo 5: Acesse o WSDL do webservice gerado
http://localhost:8080/axis/Calculator.jws?wsdl Passo 6: Instale o plugin do Eclipse
Download: http://lavadora.sourceforge.net Descompacte no diretório onde seu Eclipse está instalado
Passo 7: Crie o cliente para acessar o serviço No Eclipse: File -> New -> WebServices-> Web Service
Client Digite o caminho do wsdl do seu serviço:
http://localhost:8080/axis/Calculator.jws?wsdl Passo 8: Execute o cliente e acesse o webservice
Veja código no próximo slide
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Passo a passo (3) Código do cliente
public static void main(String[] args) {try {CalculatorServiceLocator locator = new CalculatorServiceLocator();Calculator calc = locator.getCalculator();System.out.println(calc.add(10,5));} catch (ServiceException e) {} catch (RemoteException e) { }
}
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Conclusões João não foi despedido
João com seu salário
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Conclusões O chefe de João conseguiu barrar a
concorrência..
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Fontes de consulta Axis User’s Guide
http://ws.apache.org/axis/java/user-guide.html http://java.sun.com/webservices developers.ibm.com/webservices JavaWorld: www.javaworld.com webservices.org www.uddi.org xml.apache.org
© Copyright 2005 Rodrigo Rebouças de Almeida (http://rodrigor.com)
Obrigado!!
Rodrigo Rebouças de [email protected]
http://rodrigor.com