Buscar

CORBA - Sistemas Distribuídos

Prévia do material em texto

FACULDADE PITAGORAS 
CIÊNCIA DA COMPUTAÇÃO 
 
 
 
ANDRÉ VINICIUS REIS PEREIRA 
ANTÔNIO MASCARENHAS 
ELVISLENNO VERAS NUNES 
GILSON MIGUEL TELES NETO 
IVALDO BEZERRA 
JOÃO PEDRO MONTELES 
 
 
 
 
 
 
 
 
 
 
 
 
São Luís 
2016 
 
 
ANDRÉ VINICIUS REIS PEREIRA 
ANTÔNIO MASCARENHAS 
ELVISLENNO VERAS NUNES 
GILSON MIGUEL TELES NETO 
IVALDO BEZERRA 
JOÃO PEDRO MONTELES 
 
 
 
 
 
 
SISTEMAS DISTRIBUIDOS - CORBA 
 Trabalho apresentado à disciplina Sistemas 
 distribuidos do Curso Ciência da Computação 
 da Faculdade Pitágoras, como requisito para 
 obtenção de nota 
 Prof.:Edil 
 
 
 
São Luís 
2016 
 
 
 
 
CORBA 
 Conceito: 
Common Object Request Broker Architecture (CORBA), ​é um padrão criado pela OMG (Object 
Management Group - Grupo de Gerenciamento de Objetos) para permitir a interação entre 
aplicações heterogêneas em ambientes também heterogêneos, para a troca de informações 
completamente distribuídas sendo executado em qualquer parte da rede ou Internet. 
A OMG é uma organização internacional da indústria de software, que estabeleceu uma estrutura 
comum para o gerenciamento de objetos distribuídos, conhecida como Object Manager 
Architecture (OMA). ​É formada por empresas dos diferentes ramos da informática (venda, 
desenvolvimento, produção). Algumas empresas que participam da OMG são: AT & T, Cisco, 
Cannon, IBM, Apple, e outras. Essas empresas trabalham sem fins lucrativos, para promover a 
criação e elaboração de modelos e padrões que proporcionem a interoperabilidade entre 
aplicações que usam tecnologia orientada a objeto. 
 Componentes: 
O CORBA possui dois tipos de componentes: 
• Orientados ao Sistema: ORB, Objetos de Serviços 
• Orientados a Aplicação: Objetos de Aplicação, Facilidades Comuns. 
 
• ORB (Object Request Broker): 
É o núcleo do CORBA, e exerce o papel de middleware entre os componentes, é um componente 
intermediário da arquitetura do CORBA que facilita a comunicação entre o cliente e os objetos 
que implementam as funcionalidades que o cliente irá utilizar. 
ORB é responsável por toda comunicação e interação entre os objetos, ele intercepta a chamada e 
fica responsável em encontrar um objeto que atenda as necessidades do pedido, encontrando o 
objeto, o ORB passa os parâmetros para o mesmo, invoca os métodos necessários dele, e retorna 
para o objeto que solicitou o pedido, os resultados de todo esse procedimento. Dessa maneira, o 
usuário não precisa se preocupar onde tal objeto está localizado, em que sistema operacional ele 
roda ou qual programa foi usado para desenvolvê-lo. 
 
• Objetos de Serviços (Object Services): 
É uma coleção de serviços (interfaces) que abrangem funções básicas que poderão ser usadas 
para a implementação e gerenciamento dos objetos. Exemplo: serviço de nomes, eventos, tempo, 
segurança, etc. 
• Facilidades Comuns (Common Facilites): 
Assim como os objetos de serviços, as "facilidades comuns" também apresentam-se como uma 
coleção de serviços (interfaces), os quais estão mais diretamente relacionados com o usuário 
final, como a manipulação de dados e armazenamento. 
• Objetos de Aplicação (Application Objects): 
São os objetos que podem ser considerados visíveis ao nível de aplicação, são componentes 
desenvolvidos especificamente para aplicações do usuário final. 
 
 Evolução das especificações do CORBA: 
1991 - 1993: CORBA 1.0 – 1.2 
 
• Introduziu o CORBA Object Model, núcleo básico de APIs, IDL; 
• Mapeamento apenas para a linguagem C. 
 
1996 - 2001: CORBA 2.0 – 2.6 
• GIOP e IIOP; 
• Inclusão de segurança e suporte à transações; 
• Melhorias nos repositórios de interfaces; 
• Mapeamento Java, C++. 
 
2002: CORBA 3.0 
• Melhoria na integração com Java, maior facilidade de programação; 
• Atualmente na versão 3.3 
 
 
 
 
 
 
 
 
 
 
 
CORBA RMI 
 Java Remote Method Invocation (RMI) é o modelo de objetos de distribuição para 
 a linguagem Java que mantem a semântica próximo do modelo de objetos Java. O 
 O sistema combina aspectos do modelo de redes de objetos do modulo-3. Além de incluir novos fatores 
que o Java possibilita[SAN 2002] 
 
Historico do Desenvolvimento da Tecnologia RMI 
O Java RMI baseia-se em uma tecnologia anterior, criada pelo SUN 
Microsystems, a RPC (Remote Procedure Call). Mas diferente do RPC , no RMI, 
A chamada remota de métodos pode conter objetos complexos , pois a própria 
Pois a própria linguagem trata das pendencias e da serealização dos objetos 
Em uma fila de bytes. Alem disso, como o RMI suporte apenas a linguagem 
Java , não é nescessario usar uma linguagem IDL, as próprias Interfaces definidas em Java são utilizadas 
[SAN] 
 
Arquitetura do Modelo RMI 
O RMI execulta métodos de objetos em Maquinas Virtuais Java remotas, 
Podendo passar como parâmetros todas as estruturas de dados aceitas pela 
linguagem Java (objetos array , etc) 
O RMI mantem similaridade com o CORBA , apresentando diferenças 
Principalmente no que se refere a usabilidade. Aplicações desenvolvidas com 
RMI , geralmente, tem um tempo de desenvolvimento mais curto do que as 
Desenvolvidas em CORBA , de forma que o RMI possibilita a criação de 
Aplicações distribuídas sem o peso do CORBA , ao custo da ligação restrita à 
Linguagem Java[ SAN 2002] 
O processo de comunicação de uma chamada RMI passa por diversas 
camadas. Dessa forma, o uso do modelo RMI padrão pode implicar custos no 
desempenho final da aplicação, comparando-se, por exemplo , com aplicações 
que utilizam sistemas de passagem de mensagens [SAN 2002]. 
È muito comum encontrar em comparações a vantagem do coletor de lixo 
(Automatic garbage colllection) do RMI em relação ao CORBA. Na verdade 
Esse coletor é implementado pelo Java. Quando o ORB e implementado sobre 
O Java este também desfruta dessa facilidade. 
 
 
ARQUITETURA CORBA 
Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído 
deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade de hardware, sistemas 
operacionais, linguagens de programação, protolocos de comunicação, arquiteturas de computadores e 
diferentes formas de se representar dados.[1] 
Para resolver esses problemas, percebeu-se a necessidade de se ter transparência de localização de 
recursos computacionais, suporte universal de representação de dados, interoperabilidade entre 
componentes de uma aplicação distribuída, reutilização de componentes, integração de código.[2] 
O modelo de arquitetura CORBA propõe a interoperabilidade local e/ou remota entre aplicações que têm 
como base a tecnologia orientada a objetos. Com isso, é possível permitir que objetos de sistemas 
distribuídos comuniquem-se de forma transparente, independentemente do local onde se encontram, do 
protocolo que utilizam, da linguagem em que foram implementados, da plataforma e do sistema 
operacional em que estão rodando [2,3,4,5]. 
Para cada sistema de rede o CORBA permite que seja definida uma Linguagem de Definição de Interface 
(IDL). Essas interfaces descrevem os serviços que são oferecidos. Trata-se de uma linguagem puramente 
declarativa, que ao ser compilada irá gerar o stubs e o skeletons (responsável pelacomunicação entre 
objetos) [7]. Desta forma, a aplicação cliente pode acessar facilmente todos os serviços oferecidos. 
Além disso, o CORBA inclui uma estrutura de execução, fornecendo diversas funcionalidades básicas 
importantes como localização e ativação automática de serviços, comunicação, controle de transações e 
segurança [7]. 
Em linhas gerais, a arquitetura CORBA é composta pelos seguintes componentes [5,8]: 
Do lado do cliente, temos os seguintes itens: 
Stubs Clientes - trata-se de uma interface estática gerada através da compilação de uma IDL. Compõe 
uma mensagem que contém uma identificação e protótipos dos métodos invocados a um servidor. 
Interface de Invocação Dinâmica (DII) - permite que o cliente invoque um método no servidor sem que 
tenha conhecimento, em tempo de compilação, de sua interface. 
Repositório de Interfaces - contém uma base de dados com a definição de todas as interfaces de serviços 
conhecidos pelo ORB. 
Do lado do objeto CORBA servidor, temos os seguintes itens: 
Skeletons - interface estática para os serviços (métodos) remotos. É responsável por receber as requisições 
do cliente e repassá-las para o servidor. 
Interface de Skeletons Dinâmica (DSI) - é semelhante ao DII, porém ocorre no lado do servidor. Fornece 
um mecanismo que permite, em tempo de execução, que servidores entreguem requisições de um ORB 
para uma implementação de objeto sem que tenha conhecimento, em tempo de compilação, de sua 
interface; 
Repositório de Implementação - é um repositório, em tempo de execução, para as classes que um servidor 
suporta, os objetos instanciados e suas identificações; 
Adaptador de Objetos (OA) - responsável por: registrar as classes servidoras no repositório de 
implementação; instanciar os objetos chamados em tempo de execução, de acordo com a demanda dos 
clientes; receber as chamadas para os objetos e repassá-las aos mesmos; gerar e gerenciar as referências 
de objetos (ORB). 
Interface ORB - permite o acesso às funcionalidades não oferecidas pelas demais interfaces, pois não 
depende da interface do objeto ou do adaptador do objeto. 
 
 
 
 
 
 
LINGUAGEM DE DEFINIÇÃO E 
INTERFACE 
 
A ESPECIFICAÇÃO CORBA, PUBLICADA PELO OMG,É TANTO UMA ARQUITETURA QUE 
CONTEM UM MODELO DE OBJETO QUANTO UMA ESPECIFICAÇÃO QUE DEFINE ENTRE 
OUTRAS COISAS UMA LINGUAGEM DE DEFINIÇÃO DE INTERFACE(IDL).NO 
CORBA,INTERFACES DE OBJETOS SÃO DESCRITAS ATRAVÉS DA IDL,UMA LINGUAGEM 
DECLARATIVA COM A SINTAXE SEMELHANTE A DO C++,A IDL PERMITE QUE 
INTERFACES PARA OBJETOS SEJAM DEFINIDAS INDEPENDENTEMENTE DAQ 
IMPLEMENTAÇÃO DOS OBJETOS.DEPOIS DE DEFINIR UMA INTERFACE NA IDL, A 
DEFINIÇÃO DA INTERFAE É UTILIZADA COMO ENTRADA PARA UM COMPILADOR IDL 
QUE PRODUZ UMA SAIDA QUE PODE SER COMPILADA E LINKADA COM UMSA 
IMPLEMENTAÇÃO DE UM OBJETO ED SEUS CLIENTES. 
O CORBA SUPORTA CLIENTES(SISTEMAS E/OU INTERFACES​) FAZENDO PEDIDOS A 
OBJETOS.OS PEDIDOS CONSISTEM EM UMA OPERAÇÃO,UM OBJETO ALVO,ZERO OU 
MAIS PARAMETROS E UM CONTEXTO DE PEDIDO OPCIONAL.UM PEDIDO CAUSA UM 
SERVIÇO A SER REALIKZADO A UM CLIENTE E RESULTA NA EXECUÇÃO DO PÉDIDO 
RETORNADA PARA O CLIENTE.SE UMA CONDIÇÃO ANORMAL OCORRER DURANTE A 
EXECUÇÃO É RETORNADA. 
INTERFACES PODEM SER UTILIZADAS ESTÁTICA OU DINAMICAMENTE.UMA INTERFACE 
ESTÁ ESTATICAMENTE LIGADA A UM OBJETO QUANDO O NOME DO OBJETO ACESSADO 
É CONHECIDO EM TEMPO DE COMPILAÇÃO.NESTE CASO,O COMPILADOR IDL GERA A 
SAIDA NECESSÁRIA PARA COMPILAR E LINKAR O OBJETO EM TEMPO DE 
COMPILAÇÃO.ALÉM DISTO,CLIENTES QUE PRECISAM DESCOBRIR UM OBJETO EM 
TEMPO DE EXECUÇÃO E CONSTRUIR O PEDIDO DINAMICAMENTE PODEMAR INTERFACE 
DINVOCAÇÃO(DYNAMIC INVOCATION INTERFACE-DII) O DII É SUPORTADO POR UM 
REPOSITORIO DE INTERFACE QUE É DEFINIDO COMO PARTE DO CORBA.ATRAVÉS DO 
ACESSO A INFORMAÇÃO NO REPOSITORIO DE INTERFACES,UM CLIENTE PODE 
RECUPERAR TODA A INFORMAÇÃO NECESSARIA SOBRE A INTERFACE DE UM OBJETO 
PARA CONSTRUIR E FAZER UM PEDIDO EM TEMPO DE EXECUÇÃO.CCOMO OS PEDIDOS 
ESTÁTICOS E DINÂMICOS SÃO EXPRESSOS SEMANTICAMENTE DA MESMA FORMA NÃO 
HAVERÁ DISTINÇÃO ENTRE ESTES DOIS METODOS DE CHAMAR OPERAÇÕES DE 
OBJETOS. 
HERANÇA E DELEGAÇÃO- O CORBA SUPORTA HERANÇA DE INTERFACE,ISTO SIGNIFICA 
QUE UMA INTERFACE PODE SER DERIVADA EM TERMOS DE OUTRA. UMA INTERFACE 
DERIVADA PODE REFINAR QUALQUER TIPO,CONSTANTE E EXECEÇÃO QUE FORAM 
HERDADOS.HERANÇA MULTIPLA É SUPORTADO,NO SENTIDO QUE UMA INTERFACE 
PODE SER DERIVADA DE UM NUMERO DE INTERFACES BÁSICAS.NÃO EXISTE A NOÇÃO 
DE HERANÇA DE IMPLEMENTAÇÃO. 
 
 
 
SERVIÇOS CORBA 
O CORBA inclui especificações de serviços que podem ser exigidos por objetos distribuídos. 
SERVIÇO DE NOMES – ​Oferece atribuição de nomes no CORBA, em particular, realiza o 
mapeamento de nomes em referências de objeto remoto dentro de determinado contexto de atribuição de 
nomes 
SERVIÇO DE NEGÓCIO – ​Enquanto o serviço de nomes permite localizar objetos pelo nome, o 
Tradding Service (serviço de negócio) permite localiza-los pelo atributo; isto é, ele é um serviço de 
diretório. O banco de dados subjacente gerencia um mapeamento dos tipos de serviços e seus atributos 
associados para referências de objeto remoto. 
SERVIÇO DE EVENTO – Definem interfaces que permitem aos objetos de interesse, chamados de 
fornecedores​, comunicarem notificações aos assinantes, chamados de ​consumidores​. Canais de eventos 
são objetos CORBA que podem ser usados para permitir que os fornecedores e os consumidores se 
comuniquem de maneira assíncrona 
SERVIÇO DE NOTIFICAÇÃO – ​Amplia os serviços de evento, com os recursos adicionais. O serviço 
de evento não fornece suporte para filtragem de eventos nem para especificar requisitos de distribuição. 
Sem o uso de filtros, todos os consumidores ligados a um canal têm de receber as mesmas notificações 
que os outros. 
SERVIÇO DE SEGURANÇA – ​Suporta diversos mecanismos de segurança, incluindo autenticação, 
controle de acesso, comunicação segura, auditoria e não-repudio. Em sua forma mais simples, a segurança 
pode ser aplicada de uma maneira transparente para as aplicações. O serviço de segurança permite que os 
usuários adquiram suas credenciais e privilégios individuais, em retorno do fornecimento de dados de 
autenticação, como uma senha. 
SERVIÇO DE CICLO DE VIDA – ​Define convenções para criar, excluir, copiar e mover objetos 
CORBA. Ele especifica como os clientes podem usar fábricas para criar objetos em locais em particular, 
permitindo que seja usado armazenamento persistente.

Continue navegando

Outros materiais