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;