integrações de aplicações empresariais prof. paulo fernando da silva unc – universidade do...

Post on 22-Apr-2015

111 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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;

top related