integrações de aplicações empresariais prof. paulo fernando da silva unc – universidade do...
TRANSCRIPT
Integrações de Aplicações Empresariais
Prof. Paulo Fernando da Silva
UNC – Universidade do ContestadoPós-Graduação em Sistemas de Informação Aplicados
a Web
Organização
• Módulo 1:– Integração de Aplicações;– Troca de Mensagens (Client-Server);
• Módulo 2:– RPC – RMI;
• Módulo 3:– Corba – DCOM;
Organização
• Módulo 4:– Enterprise Java Beans;– Servidores de Aplicação;
• Módulo 5:– Message Brokers;– Agentes de Software;
• Módulo 6:– Web Services / XML;– Avaliação;
Módulo 3 - Sumário
• CORBA – Common Object Request Broker Arquitecture– Introdução;– Arquitetura CORBA;– Estudo de Caso;– Atividade;
• DCOM – Distributed Component Object Model– Arquitetura DCOM;– Ferramentas DCOM;– Estudo de Caso;– Atividade;
CORBAIntrodução
• CORBA começou a ser desenvolvido em 1989, quando um grupo de empresas reuniu-se em uma organização, denominada OMG;
• É um padrão para interoperabilidade entre objetos distribuídos:– permitem que objetos escritos em diferentes linguagens
e, compilados por diferentes compiladores comuniquem-se;
– comunicação através de protocolos padronizados de forma transparente;
CORBAIntrodução
• Padrão CORBA é uma especificação aberta, independente de linguagem e fabricante;
• Assegura a possibilidade de se desenvolver sistemas baseados em interação, que incorporam componentes de múltiplas origens;
CORBAArquitetura
• OMA:Object Manegement Architecture;
• A OMA agrupa um conjunto de objetos CORBA em serviços e facilidades;
• Object Request Broker (ORB) habilita clientes e objetos a se comunicarem em um ambiente distribuído;
CORBAArquitetura
• Há quatro categorias de interfaces:– Objetos de Serviços (Object Services) são interfaces
para serviços gerais;
– Facilidades Comuns (Common Facilities) são interfaces para facilidades horizontais orientadas para usuário;
– Interfaces de Domínio (Domain Interfaces) são interfaces de aplicações de um domínio específico;
– Interfaces de Aplicação (Application Interfaces) são interfaces não padronizadas para aplicações específicas.
CORBAArquitetura
CORBAArquitetura
client server
proxy
or dynamic invocation
implementation repository object
adapter
ORBORB
skeleton
or dynamic skeleton
client program
interface repository
Request
Replycorecore for A
Servant A
CORBAArquitetura - ORB
• É um mecanismo pelo qual objetos fazem ou recebem requisições de outros objetos;
• O cliente não precisa estar ciente:– do mecanismo usado para comunicar ou ativar
um objeto;– de como o objeto é implementado;– onde o objeto está localizado;
• Permite interoperabilidade;
CORBAArquitetura - ORB
CORBAArquitetura – ORB Parte Cliente
• Client IDL Stubs:– Prove interfaces estáticas para o acesso aos
objetos remotos;– Agem como um proxy para o objeto remoto do
servidor– Gerados a partir de uma IDL;– Fazem marshalling;
CORBAArquitetura – ORB Parte Cliente
• Dynamic Invocation Interface (DII):– Permite descobrir métodos de servidores
remotos em tempo de execução;– CORBA define APIs para a localização de
meta-dados que definem as interfaces dos servidores:
• para a geração dos parâmetros,
• para invocação remota, e • para o retorno dos dados;
CORBAArquitetura – ORB Parte Cliente
• Interface Repository APIs (IR): – Permitem obter a descrição de todas as
interfaces dos componentes registrados, os métodos que eles suportam, e os parâmetros que eles utilizam;
– É uma base de dados distribuída que contém as definições das interfaces no formato da IDL;
CORBAArquitetura – ORB Parte Servidor
• Server IDL Stubs: – fornecem interfaces estáticas para cada serviço
exportado pelo servidor;– Também são criados pelo compilador IDL;– Fazem unMarshalling;
CORBAArquitetura – ORB Parte Servidor
• Dynamic Skeleton Interface (DSI): – fornece mecanismos de ligação (binding) em
tempo de execução;– para servidores que necessitam manipular
requisições de objetos que não possuem stubs nem skeletons compilados;
– O DSI do servidor é equivalente ao DII do cliente;
CORBAArquitetura – ORB Parte Servidor
• Object Adapter:– localiza-se no topo dos serviços de
comunicação do ORB;– recebe as requisições dos serviços antes dos
objetos do servidor;
• Provê um ambiente de execução:– para a instanciação dos objetos dos servidores;– para a passagem das requisições;
CORBAArquitetura – ORB Parte Servidor
• Implementation Repository (IR): – fornece um repositório de informações sobre as
classes que um objeto suporta e os objetos que estão instanciados;
– Utilizado para armazenar informações adicionais associadas com as implementações de cada ORB, entre elas segurança e dados administrativos;
CORBAServiços CORBA (CORBAservices)
• Serviço de Nomeação (Naming Service):– Provê capacidade para ligar um nome a um
objeto;– Resolver um nome é determinar o objeto
associado a um determinado nome;
CORBAServiços CORBA (CORBAservices)
• Serviço de Evento (Event Service):– Suporta eventos assíncronos (desacoplamento
do produtor e consumidor);– Através de implementações apropriadas de
canais de eventos oferece uma entrega confiável dos eventos;
CORBAServiços CORBA (CORBAservices)
• Serviço de Persistência;
• Serviço de Controle de Concorrência;
• Serviço de Consulta;
• Serviço de Segurança;
• Serviço de Tempo;
• ...
CORBAIDL e Mapeamento
• linguagem independente;
• OMG IDL é derivada do C++;
• suporta tipos como:– inteiro com ou sem sinal;– tipos enumerados, estruturas, uniões,
seqüências;– exceções;
CORBAIDL e Mapeamento
interface Printer {void print ( );
};
interface ColorPrinter: Printer {enum ColorMode {BackAndWhite,
FullColor};void set-color (in ColorMode mode);long numero( );
};
CORBAIDL e Mapeamento
• Mapeamento especifica como a IDL pode ser traduzida para outra linguagem;– Em C++ as interfaces IDL são mapeadas para
classes e as operações são mapeadas para funções dessas classes;
• Mapeamentos OMG IDL padronizados:– C, C++, Smalltalk, Cobol, Ada e Java;
CORBAEstudo de Caso
• Boas Vindas ao CORBA;
• Código da interface:– BoasVindas.idl;
• Implementação objeto remoto:– Msg_Boas_VindasImpl.java;
• Servidor: servidor.java;
• Cliente: cliente.java;
CORBAEstudo de Caso
• Gerar stubs: idlj –fall BoasVindas.idl;– _Msg_Boas_VindasStub.java;– Msg_Boas_Vindas.java;– Msg_Boas_VindasOperations.java;– Msg_Boas_VindasHelper.java;– Msg_Boas_VindasHolder.java;– Msg_Boas_VindasPOA.java;
CORBAEstudo de Caso
• Compilar Servidor:– javac BoasVindas\servidor.java;
• Compilar Cliente:– javac cliente.java;
CORBAEstudo de Caso
• Executar ORB:– orbd –ORBInitialPort 2000;
• Executar Servidor:– java BoasVindas.servidor –ORBInitialPort
2000;
• Executar Cliente:– java cliente –ORBInitialPort 2000 –
ORBInitialHost localhost;
CORBAAtividade
• Testar estudo de caso em diferentes computadores;
• Passar e retornar parâmetro na mensagem;
• Desenvolver aplicação remota:– Soma;– Subtração;– Nome do servidor;
DCOMIntrodução
• Distributed Component Object Model;
• Extensão do Component Object Model
protocol (COM);
• Microsoft 1996;
• Aplicações podem ser construídas a
partir de objetos COM localizados em
diferentes máquinas;
DCOMArquitetura
Client ComponentComponent
No mesmo processoRápido, chamadas de função direta
Client ComponentComponentCOMCOM
Client Process Server ProcessNa mesma máquinaRápido, IPC
Através de máquinasDCE-RPC baseado no protocolo DCOM COMCOMDCE
RPCClient
Server MachineClient Machine
COMCOM ComponentComponent
DCOMArquitetura
COMCOMClientClient
Component
CO
M R
unti
me
ServidorCliente
TCP, UDP
SPX,IPX
Net BUI
CO
M R
unti
me
Proxy
Other Component
DCOMArquitetura
DCOMArquitetura – Ligação Cliente-Servidor
• Servidor se registra no registro do Windows;– Cliente procura servidor pelo seu GUID;
• Passagem de parâmetro em CoCreateInstanceEx;– Não necessita registro no windows;– Cliente acessa direto o servidor;
DCOMEstudo de Caso – Delphi – Servidor
• Criar nova aplicação;
• Criar objeto COM de nome TestDCOM;– adicionar método sendMsg;– criar parâmetro msg, BSTR, in;– criar parâmetro resp, BSTR*, out; retval;
• Clicar no refresh para gerar código;– Gerado arquivo TLB;
• Implementar TTestDCOM.sendMsg;
DCOMEstudo de Caso – Delphi – Cliente
• Criar nova aplicação;
• Adicionar no cliente:– TLB do servidor;– uses do TLB e de ActiveX;– vTestDCOM: ITestDCOM;
DCOMEstudo de Caso – Delphi – Cliente
• Na criação do form:– CoCreateInstance(CLASS_TestDCOM, nil,
CLSCTX_SERVER, IID_ITestDCOM, vTestDCOM);
• No clique de um botão:– msg:= 'teste';– vTestDCOM.sendMsg(msg, resp);– Form1.Caption := resp;
DCOMEstudo de Caso – Execução
• Executar o Servidor;
• Executar o Cliente;
• Testar Mensagens;
• Atividade:– Colocar um edit no cliente e enviar as
mensagens digitadas;