DCOM

Propaganda
Integrações de Aplicações
Empresariais
Prof. Paulo Fernando da Silva
UNC – Universidade do Contestado
Pó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;
CORBA
Introdução
• CORBA começou a ser desenvolvido em
1989, quando um grupo de empresas reuniuse 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;
CORBA
Introduçã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;
CORBA
Arquitetura
• 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;
CORBA
Arquitetura
• 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.
CORBA
Arquitetura
CORBA
Arquitetura
client
client proxy
program for A
implementation
repository
ORB
core
or dynamic invocation
Request
Reply
server
interface
repository
object skeleton
adapter
ORB
core
or dynamic skeleton
Servant
A
CORBA
Arquitetura - 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;
CORBA
Arquitetura - ORB
CORBA
Arquitetura – 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;
CORBA
Arquitetura – 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;
CORBA
Arquitetura – 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;
CORBA
Arquitetura – 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;
CORBA
Arquitetura – 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;
CORBA
Arquitetura – 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;
CORBA
Arquitetura – 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;
CORBA
Serviç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;
CORBA
Serviç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;
CORBA
Serviç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;
...
CORBA
IDL 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;
CORBA
IDL e Mapeamento
interface Printer {
void print ( );
};
interface ColorPrinter: Printer {
enum ColorMode {BackAndWhite, FullColor};
void set-color (in ColorMode mode);
long numero( );
};
CORBA
IDL 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;
CORBA
Estudo 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;
CORBA
Estudo 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;
CORBA
Estudo de Caso
• Compilar Servidor:
– javac BoasVindas\servidor.java;
• Compilar Cliente:
– javac cliente.java;
CORBA
Estudo de Caso
• Executar ORB:
– orbd –ORBInitialPort 2000;
• Executar Servidor:
– java BoasVindas.servidor –ORBInitialPort
2000;
• Executar Cliente:
– java cliente –ORBInitialPort 2000 –
ORBInitialHost localhost;
CORBA
Atividade
• Testar estudo de caso em diferentes
computadores;
• Passar e retornar parâmetro na
mensagem;
• Desenvolver aplicação remota:
– Soma;
– Subtração;
– Nome do servidor;
DCOM
Introduçã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;
DCOM
Arquitetura
No mesmo processo
Rápido, chamadas de
função direta
Client
Na mesma máquina
Rápido, IPC
Client Process
Client
Através de máquinas
DCE-RPC baseado no
protocolo DCOM
Component
Client
COM
Client Machine
COM
Server Process
Component
Server Machine
DCE
COM
RPC
Component
DCOM
Arquitetura
Proxy
Other
Component
TCP, UDP
SPX,IPX
Net BUI
COM Runtime
COM
Client
Servidor
COM Runtime
Cliente
Component
DCOM
Arquitetura
DCOM
Arquitetura – 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;
DCOM
Estudo 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;
DCOM
Estudo de Caso – Delphi – Cliente
• Criar nova aplicação;
• Adicionar no cliente:
– TLB do servidor;
– uses do TLB e de ActiveX;
– vTestDCOM: ITestDCOM;
DCOM
Estudo 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;
DCOM
Estudo de Caso – Execução
• Executar o Servidor;
• Executar o Cliente;
• Testar Mensagens;
• Atividade:
– Colocar um edit no cliente e enviar as
mensagens digitadas;
Download