O que é CORBA?

 

CORBA, da sigla Common Object Request Broker Architecture, é a especificaćčo de um OMA (object management architecture) que tem por objetivo a interoperabilidade entre diferentes sistemas computacionais e linguagens de programaćčo através de ORB’s, que sčo estruturas que permitem que os programadores faćam chamadas de um computador a outro através de uma rede. O CORBA é definido e padronizado pela OMG.

 

Explique, em linhas gerais, o funcionamento do CORBA e sua arquitetura.

 

O componente fundamental para o CORBA é o ORB que tem a tarefa de facilitar a comunicaćčo dos objetos. Provendo o IOR (Interoperable Object Reference), o ORB consegue localizar os objetos destinos e transmitir informaćčo para ou das invocaćões de métodos remotos(RMI).

 

A interface para objetos CORBA é especificado pela CORBA Interface Definition Language (IDL). Um compilador traduz a definićčo IDL em uma linguagem de programaćčo (C++,Java) gerando IDL Stubs e skeletons que provźm respectivamente um framework para o lado cliente e um proxy para o lado servidor.

 

Requisićões e respostas entre objetos sčo entregues através de um formato padrčo definido pelo IIOP(Internet Inter-ORB Protocol).

 

O Dynamic Invocation Interface (DII) e o Dynamic Skeleton Interface (DSI) permitem que os objetos sejam criados sem um conhecimento prévio da interface IDL.

 

Requisićões sčo empacotadas em um formato de plataforma independente, através do cliente stub(ou no DII) e desempacotadas no lado servidor em um formato especifico definido pelo IDL skeleton (ou no DSI) e peloo objeto adaptador, que serve como um mediador entre a implementaćčo do objeto , o servidor, e o seu ORB, através disso desacoplando o código usuário do processo ORB.

 

O Portable Object Adapter (POA) prove objetos CORBA com um conjunto de metodos comuns para acessar funćões ORB, abrangendo autentiaćčo de usuário para ativaćčo de objetos e persistźncia de objetos. Seu tarefa básica, entretanto, é criar referencia de objetos e despachar requisićões ORB apontados para objetos destinos em seus respectivos servidores. Um servidor pode prover um numero qualquer de POAs, cada com seu próprio conjunto de seguranćas. POA também prove um mecanismo para salvar e restaurar estados de objetos. Isto, junto com o uso do Implementation Repository (IMR), que cuida o start e o restart automático dos servidores, realizam a persistźncia dos objetos.

 

 

 

 

O que significa usar uma API DRB?

 

Mais conhecida como Data Request Broker (DRB) é uma camada de acesso a dados heterogźneos independente de sua forma de armazenamento físico. DRB é dividido em duas camadas transformando da fonte dos dados para o nível da aplicaćčo. As duas camadas sčo chamadas de DRB interface e a camada de implementaćčo que possue os drivers específicos que suporta a leitura de cada tipo físico de dado. Em pacotes ainda sčo quebrados em mais duas categorias os Facilities e services , ambos sčo conceitos amplamente usados na terminologia da arquitetura CORBA.

 

 

 

 

O que significa IIOP?

 

Internet interOrb Protocol, é um protocolo de comunicaćčo entre orbs CORBA, publicado pela OMG para uso na internet utilizando o protocolo TCP/IP.

 

 

 

 

O que vem a ser DII?

 

Sčo as chamadas Dynamic Invocation Interfaces, sčo interfaces de invocaćčo de requisićões a objetos tem a mesma semČntica de clientes usando chamadas com stubs gerados, usa-se pois clientes que usam stubs possuem limitaćões das quais podemos ressaltar:

-    Somente certos tipos particulares de objetos podem ser acessados;

-       Cada cliente é escrito para um numero fixo de interfaces;

-       As interfaces precisam ser conhecidas em tempo de compilaćčo;

 

Quais linguagens sčo suportadas por CORBA?


Ada, C, C++, Lisp, Smalltalk, Java, COBOL, PL/I e Python, dentre outras.

O que é IDL e qual seu propósito?


Interface Description Language descreve a interface entre os componentes utilizados (ex: um objeto); Permite uma camada de abstraćčo de linguagem de programaćčo utilizada ou mesmo sistema operacional.

 

Para que serve a IDL?

 

A IDL (interface definition language), descreve as interfaces das implementaćões dos objetos. Uma interface escrita em IDL especifica o formato da chamada das operaćões providas pelo objeto e cada um dos parčmetros de entrada ou saída necessários para efetuar a operaćčo.

 

Cite trźs caracteristicas da IDL.

 

- A IDL é independente do ORB e da linguagem utilizada nas implementaćões de cliente e objeto, assim como da máquina e do sistema operacional.

- A IDL é uma linguagem puramente declarativa, sem definićčo de variáveis ou estruturas algorítmicas. Na IDL sčo descritos apenas os tipos, as constantes e as operaćões necessárias para especificar uma interface de objeto.

- A IDL reforća uma idéia de "encapsulamento", do conceito de orientaćčo a objetos: os clientes podem somente acessar um objeto por meio daquilo que está definido em sua interface, jamais podem driblar isso e acessar diretamente usua implementaćčo.

 

O que sčo os stubs e os skeletons e como os mesmos sčo gerados?

 

Os stubs e os skeletons sčo componentes intermediários, entre um cliente e o objeto. O stub é um componente do lado do cliente, que contém uma referźncia para o objeto remoto. A partir desta referźncia, chamamos o método do objeto remoto, via ORB. O skeleton é um componente do lado do servidor, e o ORB o usa para gerar a chamada de método remota em uma chamada local no objeto. O skeleton traduz a chamada e os parČmetros para a implementaćčo específica do objeto. No retorno, o skeleton novamente traduz os resultados e erros gerados e os envia de volta para o cliente via ORBs.

 

Cite tecnologias que podem ser utilizadas como alternativa ao CORBA.

 

Troca de mensagens via sockets ou utilizando RPC (nčo possuem as facilidades que a arquitetura CORBA oferece), DCOM (que basicamente roda em ambientes Windows), Java RMI (que possui uma restrićčo forte de linguagem de implementaćčo) .NET Remoting (solućčo proprietária pouco flexível), etc.

 

Quais as vantagens de CORBA em relaćčo a abordagens mais tradicionais, como sockets e RPC?

 

A comunicaćčo em sistemas distribuídos através de sockets ou mesmo de RPC é feita de forma nčo padronizada, sem flexibilidade na hora do enderećamento de objetos e de referźncias no servidor. Já o CORBA, disponibiliza meios de enderećamento transparentes e exatos, tornando o trabalho do programador da aplicaćčo mais simples. Além disso, CORBA utiliza entidades intermediárias para a comunicaćčo dos seus stubs, ao contrário dos métodos tradicionais, que nčo possuem uma facilidade deste tipo.