CORBA - Projetos

Propaganda
Sumário
Introdução ..................................................................................................................................... 03
1 - Integração com Java / Internet ................................................................................................ 04
1.1 - Mapeamento Java-to-IDL ......................................................................................... 04
1.2 - Firewall ..................................................................................................................... 05
1.3 - Interoperable Naming Service .................................................................................. 05
2 - Qualidade de Controle de Serviço .......................................................................................... 06
2.1 - Asynchronous Messaging ........................................................................................ 07
2.2 - Minimum, Fault-Tolerant and Real-Time CORBA .................................................. 07
3 - Pacote de Componentes Corba ............................................................................................... 08
3.1 - Objetos CORBA Passáveis por Valor ...................................................................... 08
3.2 - Componentes de CORBA e CORBA Scripting ....................................................... 08
Conclusão ..................................................................................................................................... 11
Bibliografia................................................................................................................................... 12
3
Introdução
O grande crescimento da informática dentro das empresas levou, ao longo dos últimos
anos, à necessidade de se conectar sistemas e fazê-los trabalharem juntos. Para que isso fosse
possível, foi preciso estabelecer um padrão para que esses sistemas “conversassem” entre si, e
tirassem proveito do trabalho em conjunto.
O empenho em busca desse padrão deu origem ao CORBA (Common Object Request
Broker Architecture), que é resultado da união de várias empresas como Sun, Oracle, IBM, entre
outras grandes companhias, em prol de uma padronização na programação de sistemas
distribuídos. Juntas, essas empresas formam o OMG (Object Management Group), grupo
responsável entre outras funções, por manter as especificações que definem um modelo padrão de
interoperabilidade entre aplicações, que funcionam em diferentes plataformas, protocolos e
implementações.
O modelo se baseia basicamente em três importantes conceitos: orientação a objetos,
integração e reuso de componentes e um ambiente de computação aberto e distribuído. CORBA
se baseia no modelo de cliente / servidor, onde um programa faz um pedido a outro em uma rede.
O padrão adiciona um mediador entre os dois agentes, a fim de reduzir a complexidade de
implementação da interação entre o cliente e o servidor. Esse mediador, denominado ORB
(Object Request Broker), é a estrutura mais importante da arquitetura CORBA. É ele quem faz o
intermédio das informações, e faz com que a transação seja transparente para cada um dos
agentes durante seu processo. O ORB é o responsável por localizar os objetos para qual se
destinam as requisições dentro da rede, bem como o envio dos parâmetros da requisição no
formato aceito por estes objetos. Se houver retorno de parâmetros de saída para o cliente, o ORB
se responsabiliza por entregar para o cliente essa informação também.
A implementação de uma aplicação CORBA é semelhante a qualquer outra aplicação
orientada a objetos, exceto pelo fato de incluir uma camada a mais para gerenciar a comunicação
de rede, quando um objeto reside em um processo que roda em outra máquina. Esta camada
adicional é formada por estruturas especiais denominadas stubs (agem do lado do cliente,
mascarando os detalhes envolvidos na comunicação com os servidores) e os skeletons (atuam do
lado do servidor, recuperando informações de solicitações a métodos e os executando, através do
4
adaptador de objetos). O adaptador de objetos é uma interface primária que uma implementação
usa para acessar funções do ORB.
A interface que o cliente utiliza, é totalmente independente e transparente a qualquer fator
relacionado a pouca homogeneidade do ambiente de rede no qual se encontra. Por exemplo, a
localização dos vários objetos disponíveis ou as várias linguagens de programação utilizadas para
o desenvolvimento desses objetos, não interferem na comunicação entre cliente e servidor.
Assim, qualquer software que forneça interfaces e os serviços especificados pode ser considerado
um ORB. A IDL, Linguagem de Definição de Interface do CORBA, descreve as interfaces das
implementações de objetos, que são acessadas por seus clientes.
CORBA, como qualquer tecnologia ou padrão, teve que evoluir continuamente desde sua
publicação para permanecer viável como uma base para aplicações distribuídas. Por exemplo, a
versão inicial de CORBA, publicada em 1991, não especificava um protocolo padrão para que as
aplicações pudessem se comunicar. Para poucos usuários CORBA, o fato de que cada ORB
usasse seu próprio protocolo de comunicação proprietário não era um problema. Isto porque a
maioria das aplicações de CORBA 1.0 eram pequenas o bastante para que cada uma confiasse
nos serviços de um único ORB. Porém, como as aplicações foram ficando maiores e mais
distribuídas, elas precisaram interagir com outras aplicações, eventualmente feitas usando um
ORB diferente. Como resultado, o General Inter-ORB Protocol (GIOP), e sua especificação para
implementação em cima de TCP/IP, o Internet Inter-ORB Protocol (IIOP), foi acrescentado à
versão 2.0 da especificação de CORBA, que foi publicada em 1995. Tais melhorias e
modificações de CORBA durante os anos, têm aumentado sua utilidade e aplicabilidade a uma
variedade sempre crescente de problemas de computação distribuídos. Este trabalho explica
várias características novas que estão sendo acrescentadas a CORBA, como parte de sua
evolução para versão 3.0.
5
A última vez que o número principal da versão de CORBA foi incrementado - para
CORBA 2.0 - significou a padronização de interoperabilidade. O que é novo e diferente o
bastante nesta versão, para a OMG incrementar o número de versão principal?
As especificações incluídas na designação de CORBA 3 se dividem nitidamente em três
categorias principais: Java e Integração de Internet; Qualidade de Controle de Serviço; e a
arquitetura de CORBAcomponent
1 - Integração com Java / Internet
As três especificações discutidas abaixo aumentam integração de CORBA com Java e a
Internet.
1.1 Mapeamento Java-to-IDL
CORBA 3 adiciona um mapeamento Java-to-IDL ao mapeamento IDL-to-Java “normal”,
bastante comum para quem já desenvolveu alguma aplicação Java/CORBA. Para usar este
mapeamento, começa-se escrevendo objetos RMI no que a especificação referencia como o
"subconjunto de RMI/IDL de Java". Este é um subconjunto bem completo; restrições afetam
itens como herança de multipath de métodos sobrepostos, caso de colisões de nome, e tipos
privados em interfaces. Objetos têm que estender java.rmi.Remote, e exceções têm que herdar
java.lang.Exception. Obviamente, objetos de CORBA passáveis através de valor, fazem um papel
importante na implementação do lado CORBA desta especificação.
Uma vez que você construiu os objetos, duas coisas acontecem: primeiro, compilando por
rmic com as próprias opções padrão, são gerados seus objetos CORBA, que usam IIOP ao invés
vez de protocolo de RMI. Segundo, o compilador de RMI vai produzir o IDL para seu objeto em
um arquivo que você pode compilar em qualquer linguagem de programação, em qualquer ORB,
o permitindo escrever para os clientes de CORBA em qualquer idioma, em qualquer linguagem
IIOP ORB que pode invocar seu objeto de Java.
Isto faz várias coisas. Transforma programadores de objetos Java em programadores
CORBA, e deixa objetos Java rodarem no ambiente de multilinguagem de CORBA. De acordo
com o primeiro desenho de EJB 1.1, é uma exigência futura para a interoperabilidade do
Enterprise JavaBeans e assegurará que estes EJBs possam funcionar bem neste ambiente de
multilinguagem.
6
1.2 - Firewall
A especificação de CORBA 3 define firewalls de nível de transporte, de nível de aplicação
e, talvez mais interessante, uma conexão bidirecional GIOP, útil para callbacks e notificações de
evento.
Firewalls de nível de transporte trabalham no nível de TCP. Definindo a porta 683 para
IIOP e 684 para IIOP sobre SSL, a especificação permite para os administradores configurar
firewalls para cooperar com CORBA, para que ele trafegue em cima do protocolo de IIOP.
Também há uma especificação para CORBA em cima de socks.
Em CORBA, objetos precisam freqüentemente fazer callbacks ou notificar o cliente que
os invocou. Para fazer isso os objetos agem como os clientes, e o módulo do lado cliente
instancia um objeto que é ligado de volta em uma invocação de direção contrária. Conexões
padrão de CORBA levam invocação somente de um modo, um callback requer tipicamente uma
segunda conexão de TCP para este tráfico, que é encabeçada na outra direção. Na especificação
nova, uma conexão de IIOP permite levar invocações na direção contrária, sob certas condições
restritivas, que não chegam a comprometer a segurança da conexão.
1.3 - Interoperable Naming Service
A referência do objeto CORBA é a base da arquitetura, isso porque o computer-readable
IOR era o único modo para alcançar uma instância e invoca-la, não havia nenhum outro modo
para alcançar uma instancia remota - até mesmo se você soubesse seu local - a menos que você
pudesse adquirir acesso a sua referência de objeto. O modo mais fácil para fazer isso era adquirir
uma referência a seu servidor de nomes, mas e se você não tivesse uma referência para isso?
O Interoperable Naming Service define uma referência de objeto no formato URL,
iioploc, que pode ser digitado em um programa para alcançar serviços definidos em um local
remoto, inclusive o servidor de nomes. Um segundo formato de URL, iiopname, realmente
invoca o serviço de nomes remoto, usando o nome que o usuário junta ao URL, e recupera o IOR
do objeto nomeado.
Por exemplo, um identificador de iioploc, iioploc://www.nome.com/NameService,
resolveria ao servidor de nomes CORBA a máquina cujo endereço IP correspondeu ao nome de
domínio www.nome.com.
7
2 - Qualidade de Controle de Serviço
2.1 – Asynchronous Messaging e Qualidade de Controle de Serviço
A nova especificação de mensagem define vários modos de invocação assíncrona e timeindependent para CORBA, e permite invocações estáticas e dinâmicas para usar qualquer modo.
Resultados de invocações assíncronas podem ser recuperados por callback ou polling - a escolha
é feita pela forma usada pelo cliente na invocação original.
Políticas permitem o controle de qualidade de serviço de invocações. Os clientes e objetos
podem controlar a ordenação (por tempo, prioridade ou prazo final), fixando prioridade, prazos
finais e tempo de vida, podem fixar começo e final para invocações dependentes de tempo e
controlar política de distribuição de rede.
A especificação também define roteadores CORBA e agentes store-and-forward para
invocações de IIOP. Roteadores com a qualidade máxima de serviço definido passarão
invocações com uma transação amigável, e armazenarão invocações de persistência, provendo
mensagens de transmissão de rede. A especificação de roteadores define interfaces de IDL ao
motor da máquina.
2.2 - Minimum, Fault-Tolerant and Real-Time CORBA
Minimum CORBA é principalmente planejado para sistemas embutidos. Sistemas
embutidos, uma vez que são finalizados e gravados para produção são fixos, e as interações deles
com a rede externa são previsíveis - eles não têm nenhuma necessidade pelos aspectos dinâmicos
de CORBA, como o DII ou o IR que suportam isto, por que estas características não são incluídas
em CORBA Minimum.
CORBA Real-Time unifica recursos de controle - linhas, protocolos, conexões e assim por
diante - usando modelos de prioridade para alcançar comportamento previsível por ambientes
real time rígidos e estatísticos. Planejamento dinâmico, que não é uma parte da especificação
atual, está sendo somada por um RFP separado.
8
3 - Pacote de Componentes Corba
3.1 – Objetos CORBA Passáveis por Valor
Objetos passáveis por valor acrescentam uma nova dimensão à arquitetura de CORBA,
que antes suportava somente chamada por referência. Como objetos de CORBA convencionais,
estas entidades têm estado e métodos; eles não têm (tipicamente) referências de objeto e são
invocados em
processos como objetos de linguagem de programação. Só quando eles são
incluídos em listas de parâmetro de invocação de CORBA que eles mostram seu talento, por
empacotar o estado deles no contexto de envio, mandando para o contexto receptor, criando lá
um exemplo corrente do objeto, e povoando ele com o estado transmitido. Freqüentemente usado
para representar nós em árvores binárias, foram especificados tipos de valores e implementados
para representar fielmente esta importante construção. Esta especificação dá ao CORBA a
capacidade do Java serializable, e é extensivamente usado no mapeamento inverso e modelo de
componente.
3.2 - Componentes de CORBA e CORBA Scripting
O CCM leva os serviços fundamentais que se usa regularmente - persistência, transações,
segurança e notificação - se combina com o POA, e embrulha todas estas ferramentas em
interfaces de alto nível, que correspondem aos padrões que os programadores experientes usam
para codificar projetos e aplicações para Internet.
Isto significa que:

Aplicações de CCM são muito compactas. Elas usam códigos pequenos , e o pouco
que é requerido é totalmente dedicado à programação comercial;

Funções da infra-estrutura - armazenando dados, enquanto ativa e desativa os
servidores, são terminadas e codificadas automaticamente muito bem;

Serão construídas implementações de CCM ao redor de uma infra-estrutura de força
industrial escrita por especialistas, e serão afinados para desempenho ótimo em
ambientes árduos, inclusive a Internet. Quando esta infra-estrutura roda sua aplicação
de CCM em seu ambiente afinado, você adquire os benefícios automaticamente – alto
processamento, grande desempenho, robustez - embora você não tenha que escrever
qualquer código de infra-estrutura, ou até mesmo codificar serviços de interfaces
POA CORBA.
9
As quatro partes principais do CCM são:

Um modelo que apresenta funcionalidade comum - transações, segurança,
persistência - para o programador de alto nível que usa linguagens declarativas e,
opcionalmente, ferramentas visuais;

Um ambiente de container que empacota transações e segurança, somando
persistência e manipulação de evento;

Integração com Enterprise JavaBeans
Modelos de funções de componente são empacotados e apresentaram aos programadores
de alto nível de abstração o que são os serviços abertos de CORBA. São declaradas interfaces de
componentes usando adições recentemente padronizadas na OMG IDL. Componentes declaram
seu estado persistente usando Persistent State Definition Language (PSDL, um grande feito da
OMG IDL), definido no novo PSS. Programadores usam Component Implementation Definition
Language (CIDL, uma extensão de PSDL) para declarar algum comportamento do componente.
Produtos de CCM usam estas declarações para gerar código para partes da implementação.
Finalmente, um idioma de configuração baseado em XML, amarra componentes e os configura
para instalações individuais. Estes idiomas novos trabalham a níveis mais altos de abstração que
CORBA e os serviços de CORBA, os programadores empresariais podem escrever projetos - e
aplicações voltadas à Internet com menos ajuda de peritos de infra-estrutura. Além disso,
algumas linguagens foram projetadas para serem gerados através de ferramentas visuais.
Um objetivo do CCM é permitir escrever aplicações distribuídas que misturam
componentes de CORBA que rodam em servidores de componente CORBA com EJBs que
rodam em servidores baseados em tecnologia EJB. Isto permite para os programadores criarem
uma aplicação reutilizando componentes existentes de qualquer tipo. Para acomodar EJBs, o
CCM define dois níveis de containers e conformance: o container de nível básico é transacional e
seguro, e provê persistência simples; sua definição corresponde quase às características de EJB
1.1. Para fazer isso o container de nível estendido soma persistência a muitos segmentos,
interfaces múltiplas e navegação. A especificação cobre tudo sobre os vários modos que os
clientes de CORBA podem interagir com EJBs e como os clientes de Java podem interagir com
componentes de CORBA. Sendo que todo container apresenta serviços para componentes usando
o mesmo grupo de interface padrão, aplicações de componente são portáteis para qualquer
vendedor. A nível 2 o container soma mais do PSS e um subconjunto de serviço de notificação.
10
Não é necessária a uma implementação de container fornecer seu próprio serviço de persistência,
a especificação assume que os produtos de CCM usarão qualquer padrão PSS standard, e que seu
administrador local comprará e instalará um. Claro que, os vendedores são livres para empacotar
PSS e CCM juntos, se eles quiserem. Container de nível 1 têm que incluir transação e apoio de
segurança, porém, container de nível 2 têm que adicionar seu próprio evento de controle de
capacidade.
Componentes de CORBA estendidos suportam interfaces múltiplas. O CCM define
interfaces, providas pelo container, que permitem uma aplicação de cliente navegar entre eles.
Estes clientes não podem tirar proveito da natureza do componente da implementação, mas
podem invoca-los como um componente CORBA normal sem qualquer dificuldade.
Arquivos de configuração contêm informação sobre eventos emitidos e consumidos por
componentes, pelo menos ao nível estendido. Containers constroem canais para os eventos e os
transmitem em tempo de execução. Desde que as aplicações de CCM se consistam em vários
tipos de componentes, o container também terá que conectar uma invocação através de um tipo,
para uma interface em outro tipo; isto também é especificado no arquivo de configuração e
processo de configuração de tempo de instalação. A configuração do arquiva usa formato XML.
Também há uma especificação de linguagem de script, que traçará várias linguagens de
script ao CCM. Isso resulta em outro modo para juntar componentes em aplicações, além das
ferramentas de baseadas em XML descritas no CCM.
11
Conclusão
A evolução de um conceito bem definido como o CORBA, permite a nós, construtores de
sistemas, resolver as necessidades reais de um ambiente coorporativo. A união de forças dos
vários recursos distribuídos ao longo de um ambiente heterogêneo, pode ser considerada a melhor
forma de se gerenciar informações e compartilhar todo o tipo de dado, seja ele informativo,
gerencial, ou até mesmo dados abstratos de software.
A forte presença da Internet em qualquer lugar que se vá, fez com que o padrão CORBA,
antes pensado para ambientes de rede mais restritos, jogasse toda sua força e funcionalidade na
grande rede. A evolução de CORBA em integrar-se a Java, juntamente com as novas
funcionalidades que essa união proporciona, nos ajuda a conectar sistemas e acessa-los de
qualquer lugar.
O modelo de interoperabilidade sugerido pela arquitetura CORBA vai cada vez mais
proporcionar que empresas criem softwares que poderão se complementar. Elas podem unir
esforços e criar soluções para seus clientes que não serão mais vistas como "a solução" e sim
como parte de uma solução mais completa.
Em sistemas de gestão empresarial por exemplo, os clientes podem estar conectados com
seus fornecedores o tempo todo, buscando melhores cotações e automaticamente gerando ordens
de compra, sem precisar de intermediários, telefonemas, vendedores, tudo pode ser feito
diretamente pela comunicação entre os diversos sistemas de informação.
12
Bibliografia
SIEGEL, Jon. CORBA – Fundamentals and Programming. New York: Wiley
MOWBRAY, Thomas J.; RUH, William A. Inside CORBA – Distributed Object Standards
and Applications. ; Addison Wesley
RICCIONI, Paulo R. Introdução a Objetos Distribuídos com Corba. Florianópolis: Visual
Books
Java Developer’s Journal, disponível em http://www.biztool.com/magazines/java
Banco de Dados e Corba, disponível em http://www.corba.hpg.ig.com.br/home.html
Corba 3 Realease Info, disponível em
http://www.omg.org/technology/corba/corba3releaseinfo.htm
Arquitetura Corba, disponível em http://www.ic.unicamp.br/~ra007293/corba/corba.html
Overview of CORBA, disponível em http://www.cs.wustl.edu/~schmidt/corba-overview.html
Download