_
UNIVERSIDADE
FEDERAL DE SANTA CATARINA
PROGRAMA
DE POS-GRADUAÇAO
EM
ENGENHARIA
ELETRICA
Implementação
de Técnicas de Replicação de
Componentes
de Software sobre
a
Plataforma
Aberta
CORBA
Dissertação
Submetida
à Universidade
Federal
de Santa Catarina
para
Obtenção do
Grau
de
Mestre
em
Engenharia
ElétricaLau
Cheuk
Lung
Esta dissertação foi julgada para obtenção
do
título deV
Mestre
em
Engenharia
~- especialidade
Engenharia
Elétrica,
área de concentração Sistemas
de
Controle,Automação
e Informática Industrial,'
e aprovada
em
suaforma
final pelo Curso de Pós-Graduação.` ¬ / ~ .¡1 . à l É p i _ Pr . J/ Q 3,
L//
» Orientadorí,
-<Q
Prof. Enio
Valmor
Kassick, Dr.Coordenador
do Curso
de Pós-Graduaçãoem
Engenharia Elétricaÿ¶Â{.%/fo”
Prof. Carlos Albert aziero, Dr.
Co-orientador \ .a\` . .
(
~>-" J <Banca
Examinadora:
. `“_
fwiyø
Prof. Jean- arie Farin , Dr. Ing.Prof. Orlando
Gomes
Loques
Filho,PhD.
O»
as -, \
Agradecimentos
Aos
meus
paisLau
Shing
Lit eLau
Yeung
Pik
Yee
e aos
meus
irmãos
Lun
e Jim.°
Implementação de Técnicas de Replicação deComponentes
i
\
CMI-
de Software sobre a Plataforma“O
que
é necessárionão
é avontade de
acrjeditar,mas
o desejode
descobrir,que
éjustamente
o oposto.”Bertland Russel
°
Implementação de Técnicas de Replicação deComponentes
iiAgradecimentos
Agradecimentos
Aos
Professores Jonida
SilvaFraga
e' Carlos AlbertoMaziero
pelaamizade,
pelaoportunidade, pelo trabalho
de
orientação e pelo apoioem
todas as etapas destetrabalho.
Ao
ProfessorJean-Marie
Farines peloconhecimento passado
na
fase dos créditos' e peloapoio indireto neste trabalho e
no
projetoASAP.
Aos membros
da banca examinadora
pela aceitaçãode
participação e pelas críticas ecomentários.
Ao meu
amigo
Frank Augusto
Siqueira pelocompanheirismo,
pelasinúmeras
contribuições e pela
grande
amizade
que
foram
importantissimos ao longo destajornada. ,
-
Ao meu
amigo
Luiz
Nacamura
Jr. pelagrande amizade
e pelas várias discussõesque
tiveram influência
direta neste trabalho.Aos meus
amigos
que
estiveram presentes desde o início dessa jornada:Augusto
Loureiro,
Max
Mauro,
Paulo James,
Danielle Nishida,Ricardo
Martins,André
Leal,Cristiane
Paim,
Evânio,Marcelo
Otte,Edvaldo
Machado,
Udo
Fritzke, OlintoFurtado,
entre outros.
Ao
ProfessorRoberto
Lavôr
(UFAM)
pelo incentivo.Ao
pessoalda
CPGEEL, em
especialao
Wilson,por
todo auxílio dado.À
UFSC
e àCAPES
pelo suporte material e financeiro.A
todosmeus
amigos de
baia...A
todosque
ajudaram...A
Deus.
°
'Implementação de Técnicas de Replicaçäo de
Componentes
iiiA
su|v|ÁR|o
Lista
de
Figuras ... ..viLista
de
Tabelas ... ..ixResumo
... _. Abstract ... ..x|Capítulo 1 - Introdução ... _.
Capítulo
2
- Requisitos para Suportea
Grupo
de
Objetosem um
Ambiente
CORBA
... .. 2.1 - Introdução ... _. 2.2 - ArquiteturaCORBA
... .. 2.3 -Extensão
dos
ConceitosCORBA
para Inclusãode
Grupo
de
Objetos ... _. 2.3.1 - RequisitosCORBA
paraGrupo
de
Objetos ... .. 2.3.2 -Gerenciamento
de Grupo
... ..102.3.2.1 -
Membership
... ..112.3.2.2 - Sen/iços
de Tratamento de
Faltas ... ..112.3.3 -
Comunicação
de Grupo
... ..122.3.3.1 - Transparência
de
Grupo de
Objetos ... ..132.3.3.2 -
Implementação
das
Comunicações
... ..152.3.4 - Descrição daslnterfaces
de
Grupo
Sen/idor ... ..162.4 - Propostas
de
ORBs
com
Suporte paraGrupo
de
Objetos ... ..172.4.1 - ISIS/C++ ... ..17
2.4.1.1 -
Modelo de
Comunicação de Grupo
ISIS/C++ ... ..17Ç..
Implementação de Técnicas de Replicação deComponentes
Sumário
2.4.2 -
RDO/C++
..._.
2.4.2.1 -
Modelo de
Comunicação
RDO/C++
... ._
2.4.2.2 - Arquitetura
do
RDC/C++
...._
2.4.3 - orb¡×+is|s ... ...
._
2.4.3.1 -
Modelo de
Grupo
do
Orbi×+lSlS ..._.
2.4.3.2 - Arquitetura Orbix+lSlS ...
_.
2.4.4 - Electra __________________________________ ...
._
2.4.4.1 -
Modelo de
Grupo
de
Objetos_____________________________ ._
2.4.4.2 - Arquitetura Electra
_____________________________________________ __
2.5 -
Conclusões do
Capítulo_______________________________________________________________ _.
Capítulo
3
- Técnicasde
Replicação_____________________________________________________________ __
3.1 - Introdução ____________________________________________________________________________________
._
3.2 - Classificação
das
Faltas ...__
3.3 - Técnicas
de
Replicação_______________________________________________________________ __
3.4 -
Aspectos da
Abordagem
Réplicas Passivas... ._
3.5 -
Aspectos da
Abordagem
Réplicas Ativas_____________________________________ ._
3.6 -
Modelos de
Réplicas Passivase
Réplicas Ativas_________________________ ._
3.6.1 -
Modelo de
Fleplicação Coordinator-Cohort... ._
3.6.2 -
Modelo
de
ReplicaçâoViewstamp
... __
3.6.3 -
Modelo de
Fleplicação Líder/Seguidores... ._
3.6.4 -
Modelo de
Replicação Ativa Competitiva... ._
3.6.5 -
Modelo de
Replicação Ativa Cíclica... ._
3.7 -
Conclusões do
Capítulo... ._
.
Implementação de Técnicas deReplicação de
Componentes
Capítulo
4
- Propostado
Modelo de
Integração ... ..474.1 - Introdução ... ..47
4.2 -
Modelo
de
ReflexãoComputacional
... ... ..474.3 -
Modelo
Reflexivo para integraçãode
Técnicasde
Replicaçãoem
Sistemas
“Abertos ... ..49
4.4 -
A
Programação de
Técnicasde
Fieplicaçãoem um
Ambiente
CORBA
Segundo
o
Modelo de
Integração ... ..514.5 - Especificação
das
Técnicasde
Replicaçãono
Contexto Reflexivo... ..54
4.5.1 - Replicação Ativa Competitiva ... ..54
4.5.2-
Replicação Ativa Cíclica ... ..584.5.3 - Replicação Ativa Líder/Seguidores
... ..59
4.5.4 - Replicação Passiva Primário/Backup
... ..61
4.5.5 -
Considerações
sobre as EspecificaçõesApresentadas
... ..63
4.6 -
Comparação
com
Outras Referências... ..65
4.7 -
Conclusão
do
Capítulo... ..66
Capítulo
5
- PrincipaisAspectos do Modelo
de
Integração noSistema
Electra... ..67
5.1 - Introdução ... ..67
5.2 -
Implementação
de
Serviços Replicadosno
Electra... ..67
5.2.1 -
Caso
Exemplo:
Serviço Bancário... ..68
5.2.2 -
Mecanismos
de Gerenciamento de
Grupo
ede
Configuraçãono
OFIB/Electra ... ..71
5.2.3 - Limitações
do
Electra para asimplementações das
Técnicas
de
Replicação e o
Modelo de
Integração ... ..735.3 -
implementações
... ..75
5.3.1 -
Implementação
da
Técnicade
Replicação Competitiva... ..76
5.3.2 -
Implementação
da
Técnicade
Replicação Cíclica... ..77
c_.
Implementação de Técnicas de Replicação deComponentes
viSumário
5.3.3 -
Implementação
da
Técnicade
Replicação Líder/Seguidores5.3.4
lmplementaçao
da
Técnicade
Replicação Primário/Backup.5.3.5 -
Considerações
da
Implementação
...__
5.4 -
Conclusões
do
Capítulo ... _.Capítulo
6
-CONCLUSÕES
E
PERsPEcT|vAs
... _.\
Bibliografia... ... _.
Anexos
... _.1.
Código
da Implementação do Exemplo de
Aplicação Bancária ... _.2.
Código
da
Implementação dos Meta
Controladores ... ._3. Transparências utilizadas
na
apresentaçao ... __.
Implementação de Técnicas de Repllcação deComponentes
Figura 2.1 Figura 2.2 Figura 2.3a Figura 2.3b Figura 2.4 Figura 2.5 Figura 2.6 Figura 2.7 Figura 2.8 Figura 2.9 Figura 3.1 Figura 3.2 Figura 3.3 Figura 3.4 Figura 3.5 Figura 3.6 Figura 3.7 Figura 3.8 Figura 3.9 Figura 4.1 Figura 4.2 V Figura 4.3 Figura 4.4 Figura 4.5 Figura 4.6
Lista
de
Figuras
A
estruturaCORBA
2.0 ... ..8Transparência de grupo servidor...; ... ..14
Grupo
com
um
membro
centralizador ... .. 14ORB
responsável pelacomunicação
... .. 14Comunicação no
estilo Proxy/Dispatcher ... .. 15Arquitetura
do
RDO/C++
... ..19Modelo
fluxo
de eventos ... ..22Arquitetura
do
Orbix+Isis ... ..23Comunicação
de grupono
Electra ... ..25Arquitetura
do
Electra ... ..26\
Grupo
réplica passivas ... ..33Mecanismo
de checkpoínt ... ..34Grupo
réplicas passivascom
mecanismo
de log ... ..35Grupo
réplicas ativas ... ..36Modelo
de replicação Coordinator-Cohort ... ..38Modelo
de replicação ... ... ..40Modelo
de replicação líder/seguidores ... ..41Modelo
de replicação competitiva para falhas de temporização ... ..42Modelo
de replicação cíclica para falhas de temporização ... ..'...45Reflexão
computacional ... ... ..48Estrutura reflexiva para
modelos
de replicação .... .._ ... ..49Estrutura
do
modelo
sobreum
suporteCORBA
... ..50Modelo
deprogramação
CORBA
... ..52Interface
IDL
do
servidor replicado ... ..53Processo de construção da aplicação ... ..54
Lista de Figuras e Tabelas
Figura 4.7 Meta-controlador da replicação ativa competitiva ... ..55
Figura 4.8a
Diagrama
temporal da replicação competitiva ... .... ..56Figura 4.8b crash
do mais
rápido ... ..57Figura 4.9 Meta-controlador da replicação ativa cíclica ... ..58
Figura 4.10 crash
da
réplica privilegiada 1 ... ..59Figura 4.11 Meta-controlador da replicação líder/seguidores ... ..60
Figura 4.12
Diagrama
temporal da replicação semi-ativa lider/seguidores ... ..61Figura 4.13 Meta-controlador da replicação passiva primário/backup ... ..62
Figura 4.14
Diagrama
temporal da replicação passiva primário/backup ... ..63Figura 5.1
Modelo
deprogramação
Electra/CORBA
... ..68Figura 5.2
Exemplo
de descrição de interface deuma
aplicação bancária ... ..70Figura 5.3 Skeleton da aplicação bancária ... .Ç ... ..71
Figura 5.4
Mudança
demembership
... ... ... ..72Figura 5.5
Comunicação
intra-grupo viaORB
... .._ ... ..74Figura 5.6
Formato
da separaçãodo
código ... ..76Figura 5.7 Replicação primário/backup ... ..78
Figura 5.8 deadlock causado pela réplica
B
... ..80Lista
de
Tabelas
Tabela 2.1Comparação
das plataformas ... ..28Tabela 3.1
Quadro
comparativo das três abordagens ... ..46°
Implementação de Técnicas de Replicação deComponentes
IXRESUMO
Os
sistemas infonnáticos distribuidostêm
se caracterizado ultimamente peloaumento
nasdimensões e pela heterogeneidade de seus componentes. Estes sistemas
adotam
o conceito desistemas abertos,
que
busca padronizar as interfaces de seuscomponentes
(software ehardware), garantindo
uma
melhor interoperabilidade entre estes.A
programação
distribuídaaberta é recente e
tem
sido objeto de diversos padrões emodelos
presentesna
literatura.O
modelo
deprogramação
distribuída orientada a objetoCORBA
(Common
ObjectRequest
Broker
Architecture) é o resultadodo
trabalho de diversas companhias, integrantesdo
OMG
(Object
Management
Group),no
sentido de proporum
padrão para permitir a integraçãode
diferentes sistemas de
programação
e máquinasem
ambientes abertos. Pelo fato dasespecificações
CORBA
não abordarem
em
abstrações de grupos de objetos (gerenciamento ecomunicação) alguns protótipos ea
mesmo
produtos de platafomiasCORBA
têm
sidodesenvolvidos oferecendo suporte para processamento de grupo
como uma
extensãoao
padrão inicial.
Esta dissertação
tem
por objetivo avaliar a viabilidadedo
uso deuma
plataforma abertaorientada a objetos
no
padrãoCORBA
na implementação de serviços replicados, visandoaspectos de tolerância a falhas, disponibilidade e flexibilidade.
As
dimensões e aheterogeneidade
em
sistemas distribuídos dificultam a implementação demecanismos
paratécnicas de replicação a partir de suportes de
tempo
de execução nestes sistemas.Neste
sentido,uma
estrutura reflexiva é introduzidano modelo
de programação, permitindoque
tanto a
programação
como
a integração de diferentes técnicas de replicacão sejam facilitadasnestes sistemas.
A
abordagem
de reflexão computacional adotadano modelo aumenta
aflexibilidade permitindo, por exemplo, que se
mude
protocolos de replicação de acordocom
o
nível de tolerância a falhas desejado,sem
que se tenha qualquer implicação sobre os códigosenvolvendo algoritmos da aplicação.
A
u
_ , _ . _C
Implementaçao de Tecnicas de Repllcaçao deComponentes
XResumo
ABSTRACT
Nowadays,
distributed computing systemshave been
characterizedby
thegrown
in dimensionsand by
the heterogeneity of their components.These
systems adopt theopen
systems concept,which
standardizes the interfaces of theircomponents
(softwareand
hardware) guaranteeing abetter degree of interoperability
among
them.The
open
distributedprogramming
is recentand
has
been
the purpose of a set of standards andmodels
found in the literature.The
distributedobject-oriented
programmind
model
CORBA
(Common
.Object RequestBroker
Architecture)is the result of the
work
of a group of companies,members
ofOMG
(ObjectManagement
Group), with the
common
goal of propose a standardwhich
allows integration of differentprogramming
systems and machines in the field ofopen
systems.The
CORBA
standard doesn°t deal withmanagement
and communication of object groups abstractions, butsome
prototypes and
CORBA
productswere
developed offering group processing support as anextension of the initial proposal. _
The
objective of this loork is to evaluate the viability of the adoptionof
anopen
object-oriented plataform built according to the
CORBA
standard to implement replicated services,dealing with features like fault-tolerance, disponibility and flexibility.
The
dimensionsand
the heterogeneity in distributed systemsmake more
difficult the implementationof
replicationmechanisms
usingmn-time
supports in these systems.With
this goal, a reflective structure isintroduced in the
programming
model, allowing the integration andprogramming
of different replicationmechanisms
be easily introduced in these systems.The
reflective computationalapproach adopted in the
model
raises the flexibility, allowing, for example, that replicationprotocols be
changed
according to the desired level of fault-tolerance, without imposingchanges in aplication-level algorithms. '
I
_ , . . _. .C
Implementaçao de Tecnicas de Repllcaçao deComponentes
X1,_ -ze zz ¬_ - ¬z Í O a _ c. t _
nas
*_ _, 1 77
z 7 z ff ff .Y 7 7 fff“"" * ‹ Í , › _~. ` D5 '_ . ., 1 V. z ‹ 7 .JSistemas
Abertos
Os
sistemas informáticos distribuídostêm
se caracterizado ultimamente peloaumento
nasdimensões e pela heterogeneidade de seus componentes. Estes sistemas
adotam
o conceito desistemas abertos
que
padroniza as interfaces de seuscomponentes
(software e hardware),garantindo assim,
uma
melhor
interoperabilidade entre estes. Dentro deste contexto qualqueraplicação distribuída, através de
um
suporte adequado, deve ser capaz de interagircom
asoutras independentemente
da
máquina ou
sistema operacional a qual estámontado.
A
programação
distribuída aberta é recente etem
sido objeto de diversos padrões emodelos
presentes
na
literatura.Um
bom
exemplo
é omodelo
deprogramação
distribuída orientada aobjeto
CORBA
(Common
Object Request Broker Architecture) resultadodo
trabalho dediversas companhias, integrantes
do
OMG
(ObjectManagement
Group),no
sentido de proporum
padrão para permitir a integração de diferentes sistemas deprogramação
emáquinas
em
ambientes abertos
[OMG
93].Além
do
modelo
CORBA,
no
contexto de sistemas distribuídosabertos, várias arquiteturas e padrões
têm
sido propostos de maneira a permitir ainteroperabilidade de diferentes
componentes
de software e hardware.O ODP
-Open
Distributed Processing -
da
ISO/CCITT
[ISO 93], ArquiteturaANSA
[Oskiewicz 93] e aplatafonna
DCE/OSF
- DistributedComputing Enviroment
-[OSF
92] sãoexemplos
dessesesforços. Entre estes padrões, apenas o
modelo
ANSA
apresenta suporte para processamentoem
grupo.°
Implementação de Técnicas de Replicação de Componentes1
CPÍL
de Software sobre a Plataforma AbertaCORBA
Capítulo 1 - Introdução
O
conceito de processamento de grupotem
sido introduzidoem
modelos
deprogramação
distribuídano
intuito de dar suporte a aplicações que necessitam de altodesempenho, de
disponibilidade de recursos
quando da
concorrênciano
uso compartilhado e demecanismos
para tolerância a falhas porrazões de confiabilidade,
além
de possibilitar o usoem
aplicaçõesdo
tipo trabalho cooperativo (groupware).O
padrãoCORBA
atualmente evoluino
sentido deincorporar serviços de grupo.
As
especificaçõesGroup
Server estão sendo desenvolvidasna
OMG
para inclusãona
arquiteturaOMA
[Adler 95].A
propostaGroup
.Server é similar àabordagem
usadano
ANSA,
apresentandoum
elemento concentrador dascomunicações de
grupo, o
que
éum
handicapno
desempenho
ena
confiabilidade deum
sistema. _Por outro lado, alguns protótipos e
mesmo
produtos de plataformasCORBA
têm
sidodesenvolvidos oferecendo suporte para processamento de grupo.
Em
particular,podemos
citaros
ORBS
(Object Request Brokers)RDO/C++,
Orbix+Isis e Electra. Estas iniciativas seutilizam de ferramentas de baixo nível para aplicações distribuídas tais
como
o Isis e o Horus, quefomecem
comunicação
de grupo fundamentadas sobre anoção
de disseminaçãoconfiável
(reliable broadcast).As
ferramentas citadasfomecem
bases mais confiáveis que as soluçõesprocuradas nas especificações de
Group
Serverda
OMG.
Modelos
de
Replicação
As
técnicas de replicação sãouma
alternativa paraque
serviços continuem a serfomecidos
em
sistemas distribuídos,
mesmo
em
presença de nós falhos.A
unidade de replicaçãoou
réplica éum
componente
de software (módulo, objeto, processo, etc.), encapsulandodados
identificados
como
estadoda
réplica.As
réplicas são distribuídas entre diferentes nósda
rede.A
coordenaçãoem uma
replicaçãodefine
como
as diferentes réplicasdevem
interferirno
processamento,
no
sentido de manter a consistência e a transparênciado
conjunto.O
objetivo deste trabalho é buscarum
modelo
de integração que facilite aprogramação
detécnicas de replicação
em
sistemas abertos.A
nossa intenção é usar deforma
extensivaum
suporte para processamento de grupona programação
destas técnicas.A
implementação
de°
Implementação de Técnicas de Replicação deiComponentes 2técnicas de replicação sobre
um
ambiente heterogêneonão
éuma
tarefa fácil. Outro aspecto aconsiderar são as dimensões envolvidas
em
um
sistema aberto.O
aspectoda
flexibilidadena
implementação
das técnicas éum
requisito relevante. Usualmente, as abordagens deimplementação
de técnicas de tolerância a faltasou
são efetuadas a partir de suportede
tempo
de execução,
ou
usando bibliotecas de funçõesou
ainda integrando-as diretamentena
programação da
aplicação [Fabre 95].A
implementação de técnicas de tolerância a faltas apartir
do
suporte forneceum
grau de transparência sobre os aspectos de coordenaçãoda
técnica usada a nível
da
aplicação.A
desvantagem
é queuma
vez definidas as premissas defalhas e a técnica de replicação
aser
usada, teremosdefinido
(em
tempo
de configuração)um
suporte de execução específico.
Mudanças
implicariamna
necessidadede
reconfiguração,criando
um
novo
suporte.As
abordagens de biblioteca e de linguagens para aimplementação
trazem os aspectos de coordenação a nível de programador,
porém
sem
separá-los _ dosaspectos funcionais
da
aplicação, e portanto apresentam baixa flexibilidade..Uma
nova
alternativa, adotadanneste trabalho, é a introdução das técnicas de replicação a níveldo
modelo
deprogramação
usando os conceitos de reflexão computacional.Em
termos gerais,o
paradigma
reflexívotoma
possíveluma
aplicação controlar seu própriocomportamento
atuando sobre si
mesma.
Para tanto, a parte funcional (nível base) é separada das partes não-funcionais (nível meta) de
uma
aplicação,ou
seja, o nível base conterá osmétodos
eprocedimentos
da
aplicaçãoem
si, enquanto a nívelmeta
são tratadas as funções de controle egerenciamento
da
aplicação.A
reflexão computacional permite a independência dos códigosdas réplicas
em
relação aos protocolos de coordenação, conduzindo auma
grandeflexibilidade
no
sistema:mudar
de técnicaou
alterá-la para atender a graus de tolerância afalhas desejados
podem
resultarem
simplesmente trocar os protocolos de coordenação a nívelmeta,
sem
implicarna
alteração de algoritmos de aplicação,ou
aindaem
mudanças
a nível desuporte de execução, o que seria difícil
em
sistemas abertos.Este trabalho objetiva verificar a viabilidade
do
uso deuma
plataforma aberta orientada aobjetos
no
padrãoCORBA
na
implementação de serviços replicados, visando aspectos detolerância a falhas, disponibilidade e flexibilidade. Diante disso,
foram
feitos vários estudos°
Implementação de Técnicas de Replicação deComponentes
3CapítuIo1 - Introdução
em
literaturas específicasno
intuito de definiruma
soluçãomais adequada
aosproblemas
citados acima.
Os
objetivos primários desta dissertação foram::>
levantamento deum
conjunto de conceitos e requisitos necessários paraque
omodelo
deprogramação
CORBA
seja estendido para suportar anoção
de grupo;:>
estudo das várias propostas deORBS
que
incluem suporte para grupo encontradosna
literatura e realizaruma
análise comparativa à luz dos conceitos e requisitosidentificados; "
V
:> estudo de alguns
modelos
de replicação decomponentes
de software para diferentestipos de falta;
V
=> propor
um
modelo
de integraçãoque
ofereçauma
maior
flexibilidadena
implementação
de técnicas de replicaçãoem
sistemas abertos;A
dissertação está estruturadada
seguinte maneira:no
capítulo 2 é apresentadoum
estudosobre conceitos e requisitos necessários para suporte ao processamento
em
grupo,em
seguidasão apresentados vários
Orbs
com
suporte para grupo de objetos;no
capítulo 3 é apresentadoum
estudo sobremodelos
de 'replicação decomponentes
de software;no
capítulo 4 éapresentada
uma
proposta deum
modelo
de integração para técnicas de replicaçãoem
sistemas abertos;no
capítulo 5 é apresentada a implementação de técnicas de replicaçãousando
omodelo
de integração sobreuma
plataformaCORBA.
No
capítulo 6 são apresentados as conclusões e perspectivas deste trabalho. iO
trabalho de dissertação apresentado aqui faz parte deum
projeto cooperativo de pesquisaPROTEM/CC,
quetem
como
propósito construirum
ambiente orientado a objetosque
suporte aplicações distribuídascom requisitos de tolerância a falhas e tempo-real,
em
um
contexto de sistemas abertos. Deste projeto,denominado
ASAP
(Ambientepara
Suportea
Aplicações Distribuídas
Baseado
em
Objetos), participam equipes de pesquisadores dasinstituições Universidade Federal de Santa Catarina
(UFSC),
Universidade Federal°
Implementação de Técnicas de Replicação deComponentes
4Fluminense
(UFF), Universidade deCampinas (Unicamp)
e Universidade Federaldo Ceará
(UFC).
-'
°
FImplementação de Técnicas de Replicação de
Componentes
*5
Capítulo 2 - Requisitos para Suporte a Grupo de Objetos
em um
AmbienteCORBA
r*
¬
1* ` *ff*
ri*
" ã rã- ¬ *j ézl z fez .zzz z z-- z z _..¿,~ _ .. ,_ YYYYY ~ ., p- ff -,-' ~ ~r
~.cAP|TuLo
2;
1~
REQUISITOS
PARÀ.iSUPORTEsAt
GRUPO
DE
' ~ t
.rtQBJEIQ$rr..EM
UM.AMB¡ENTE_Ç0RBAÊ
,i`¿"_";`_'; _; ._.__z,, U _ ` ' “L ',__ ¬ 'i ^ Q- ,_-_zÍf;;,Í;;;z ` - I-,aa _-_ 2.1Introdução
O
conceito de grupo de processamentotem
sido introduzidoem
modelos
deprogramação
distribuídano
intuito de representar atividades de trabalho cooperativo (groupware),de
possibilitar oaumento da
disponibilidade de recursosquando da
concorrênciano
usocompartilhado
ou
ainda,no
processamento replicado por razões de tolerância a falhas.A
arquiteturaCORBA
éuma
plataforma aberta definida através deum
conjuntode
especificações e de conceitos para que objetos distribuídos,
em
um
ambiente de redeheterogêneo,
possam
ser acessíveis através deuma
interfacebem
definida.No
entanto, asespecificações
do
CORBA
inicialmente não apresentaramuma
visão muito claraem
termosde conceitos e de necessidades de suporte para a introdução
da noção
de grupode
objetosna
programação
distribuída aberta.Devido
a isto, o padrãoCORBA
tem
sido objetode
extensãoem
vários protótipos emesmo
produtos para garantir o suporte para grupo.Em
particular,podemos
citar osORBs
(Object Request Broker):RDO/C++
[ISIS 94], Orbix+Isis[IONA
95]e Electra [Maffeis 95a] que incluem a noção de grupo de objetos.
O
objetivo deste capítulo é levantarum
conjunto de requisitos desejáveis para oprocessamento
em
grupoem
arquiteturas abertas.Queremos
também
rever neste contexto,alguns conceitos
CORBA.
Em
seguida, apresentaremosuma
descrição concisa dosORBs
de
comunicação
que incluem suporte para processamentoem
gmpo
de objetos;uma
comparação
°
Implementação de Técnicas de Replicação deComponentes
6entre estes é feita à luz dos requisitos e conceitos identificados.
O
intuito deste estudo éverificar a adequação destas proposições de
ORBs
amodelos
usuais de técnicasde
replicações encontrados
na
literatura. escolha deuma
destas proposiçõesde
ORB
e asnecessidades de desenvolvimento para atender aos requisitos citados e fornecer suporte a
implementação
de diferentesmodelos
de replicação decomponentes
de software são alguns dos objetivos deste trabalho que coincidemcom
o projetoASAP.
A
discussão sobrerequisitos de grupo e os conceitos
CORBA
nospróximos
itens deste capítulo está fortementefundamentada no
trabalho descritoem
[ISIS 93] e [Liang 90].2.2
Arquitetura
CORBA
O
OMG
(ObjectManagement
Group)
éuma
organizaçãoformada
porum
grupo demais
de500
empresas (taiscomo
IBM,
SUN, DEC,
Microsoft, Novell, etc)com
o objetivode
especificar
um
padrão aberto para aprogramação
distribuída orientada a objetochamado
arquitetura
CORBA.
Esta arquitetura éum
conjtmto demecanismos
padronizados e deconceitos que se baseiam
no
modelo
cliente-servidorem
que objetos distribuídosencapsulam
um
estado interno e sefazem
acessíveis através deuma
interfacebem
def1nida.`A estruturaCORBA
é constituída porum
ORB
(Object Request Broker) queimplementa
abstrações esemânticas
da comunicação
entre objetosem
um
sistema distribuído.O
ORB
fornece osmecanismos
de representação de objetos e decomunicação
para que seja possível oprocessamento das requisições
no
lado servidorem
um
ambiente aberto.A
figura
2.1 ilustraos
componentes
deum
ORB.
°
Implementação de Técnicas deReplicação de
Componentes
7Capítulo 2 - Requisitos para Suporte a Grupo de Objetos
em um
AmbienteCORBA
r.dé@bjäíé Repositório ' Repositório de de Interfaces ,Wa _ gm . Implementaçoes _ >:‹r;€;*W“ z "«..- em/efífég/{‹», ~ .às
V às ..â.. e , r ” ~ * ~"¿
\ Im
* «~ . J W” ...W ,f X »» H. :W *M Ô p ;,,_;W,.Í?,,ç,N,.,^,,,\M\,¿, .. ; k,Ã,¿wW__‹M.§ :V ,. ms Â/fê*\; '«z»~iך\- *\\ ×*\`~* ”"...â:.===â=a=a=:‹a=a===s' *›'«Í'Í* ` > . tz* ' 4/š=i=i=› W ”1*\`.Wm«‹.»».'~ “ “ "¬`>'§ ' '====\¿ `Figura 2.1
A
estruturaCORBA
2.0,me
Em
um
ambienteCORBA,
cada objetotem
sua interface padrão especificadaem
IDL
(Interface Definition Language).
O
clientepode
requisitar serviços estaticamente através deStubs
IDL
geradosno
processo de compilaçãoda
especificaçãoIDL
da
interface,ou
construirum
pedidousando
o Stub dechamada
dinâmica (DII) e o repositório de interfaces.Os
doiscasos citados de requisição são tratados usando as
mesmas
estruturasno
lado servidor: Lunarequisição transferida através de
um ORB
determina a transferência de controle auma
implementação
de objeto usandoum
esqueleto IDL, próprio ao adaptadordo
objetoque deve
tratar a operação desejada.
Na
execução de uma-requisição, aimplementação
de objetopode
acessar os serviços oferecidos pelo
ORB
atravésdo
adaptador de objeto básico(BOA).
Os
serviços oferecidos pelo
BOA,
geralmente apropriado para classes específicas de objetos,podem
ser: geração e interpretação de referência dos objetos, invocação de métodos, ativaçãoe desativação de objeto e implementações,
mapeamento
de referência do objeto paraimplementação, etc.
A
arquiteturaCORBA
permitetambém
a implementação de diferentesadaptadores de objeto de acordo
com
as necessidadesda
implementação de objeto.A
interfacedo
ORB
é amesma
para todas as implementações de objeto, independente do adaptador deobjeto utilizado.
As
interfacesORB
e os adaptadores de objetos são disponíveis para ogerenciamento
no
modelo.°
Implementação de Técnicas de Replicação deComponentes
32.3
Extensão
dos
Conceitos
CORBA
para Inclusão
de
Grupo
de
Objetos
A
noção
de grupo determinauma
associaçãoem
que
seusmembros
apresentamuma
relaçãoabstrata
comum,
uma
política intemacomum
e/ou tuna regra de acessocomum
[Lea 94].Um
grupo de objetos deve estar dentro destas condições de associação.
Modelos
de processamentoem
'grupo são essenciaisem
aplicações distribuídas, contribuindo para requisitos demaior
disponibilidade de recursos, tolerância a falhas, distribuição de carga, etc.
Um
grupo deobjetos,
como
um
objeto qualquer, encapsulaum
estado e se faz acessível atravésde
mn
conjunto de
métodos
bem
definidos, permitindo, por exemplo, a realização de serviçosde
transferência de estado entre réplicas
do
grupo. Requisitos de transparência de grupopodem
ser colocados tanto a nível de cliente
como
de servidor: objetos simples e grupos de objetosnão
são distinguíveis extemamente. Característicascomo
componentes
reusáveis, presentesno
paradigma
objeto,devem
se manterquando
em
relações de grupo.Para que
possamos
usufruir das vantagensdo
processamento de grupoem
modelos
deprogramação
orientadoa objetosem
ambientes abertos, é necessário definirmecanismos
desuporte e avaliar a integração destes
mecanismos na
estrutura destes sistemas. Estes aspectos serão tratadosna
sequência deste capítulo.2.3.1
Requisitos
CORBA
para
Grupo
de
Objetos
As
questões que secolocam
neste contexto são:que
requisitos de sen/iços de grupodesejamos ?
Como
integrar grupos de processamentoem
sistemas abertos construídos,fazendo uso de padrões e platafonnas consagradas '?
É
evidenteque
os requisitos dependerãodo modelo
de processamento de grupo usado e estes terão reflexosem
vários aspectosdo
suporte, envolvendo o gerenciamento e acomunicação
de grupo (itens 2.3.2. e 2.3.3).A
integração de serviços baseadosna
noção de grupoem uma
arquiteturaCORBA
pode
sedar
segundo
diferentes abordagens.Podemos
ter [ISIS 93]:°
Implementação de Técnicas de Replicação deComponentes
9Capítulo 2 - Requisitos para Suporte a Grupo de Objetos
em um
AmbienteCORBA
0
um
objetodo
grupocomo
intermediário registradono
ORB,
servindode
ponte _ . nascomunicações
declientesCORBA,
usuáriosdo
serviço
do
grupo,com
osdemais
elementosdo
grupo.Os
elementosdo
gruponão
identificadosno
ORB
formam
no
sistema o que poderíamoschamar
decomponentes
desegunda
classe. Neste caso, o elemento que serve de ponte entre o grupo e o
ORB
seconstitui
em
mn
elemento central para a confiabilidade e odesempenho
dosserviços
do
grupo. ~0
uma
bibliotecano
clientefomecendo
a habilidade de se comunicarcom
um
grupo de servidores. Nesta situação a transparência
no
cliente é comprometida,pois o cliente deve ser reconectado ao grupo
usando
serviços decomunicação
ponto-a-ponto através
do
ORB
a cadamudança
nos objetosdo
grupo(número
de objetos
no
grupo). Estas bibliotecas operariam sobre oORB
tratandocom
adinâmica
do
funcionamentodo
grupo.Qualquer solução de suporte que não envolva a inclusão de abstrações de grupo
em ORBS
deve
impor
graus dedesempenho
baixos,além
decomprometer
as transparências de cliente e servidor. Então, é importante que grupo de objetos sejam suportados defonna
transparente pelosORBs
como
qualquer objeto e que interfaces de grupo sejam definidasem
IDL. Este éoprincípio básico
que
deve ser seguidono
sistemaASAP
no
referente a grupode
objetos.A
adição de
novos
mecanismos
nãodevem
causarnenhum
impactono
desempenho
decomunicações
ponto a ponto atravésdo
ORB. Nos
próximos
itens discutiremos aspectosda
integração
do
gerenciamento eda comunicação
de grupoem
arquiteturas abertas.2.3.2
Gerenciamento de
Grupo
O
gerenciamento deum
grupo de objetos deve tratarcom
a consistênciado
processamentodo
modelo
de grupono
sistema. Aspectoscomo
criação e ativação de grupos,membership]
, tratamento de faltas, coordenaçãono
processamento replicado são tópicosdo
gerenciamentode grupo
que
serão discutidosna
óticada
integração aomodelo
CORBA.
.l
lista de membros ativos no grupo
°
|mp
iemen
ta ção e dTé
cnicas de Replicação de Componentes 102.3.2.1
Membership
Este é
um
dos principaismecanismos que
um
suporte a grupos de objetos precisa oferecerpara garantir aplicações distribuídas robustas.
O
mecanismo
é caracterizado porum
algoritmoque
atualiza as entradas e saídas (normaisou
por falha) de objetosno
grupo,mantendo
uma
lista de
membros
(membership) corrente.É
necessário que a interface Basic ObjectAdapter
(BOA)
seja estendidacom
operaçõescomo
addmember
edelmember ou
aindaque
se crieuma
outra interfaceGroup
ObjectAdapter
(GOA) como
um
subtipodo
BOA
englobando
omembership
e outras operações de gerenciamento.Um
groupview ou
lista demembros
énecessário pelo
ORB
para a coordenação de suas execuçõesno
grupo e paraimplementar
mapas
decomunicação
de grupo. Portanto,mudanças
demembership
devem
sercomunicadas
a todos os
membros
do
grupo. Estascomunicações
demudanças
devem
ser recebidasna
mesma
ordem
pelos componentes.O
uso de serviços de disseminação confiávelcom
ordem
total é imprescindível para tal.
As
informações e 0 serviço demembership não
precisam estardiretamente contido
no
ORB,
mas
ele deve ser o responsável pela notificação confiável destas informações.2.3.2.2
Serviços
de Tratamento de
Faltas
Este serviço inclui a detecção de objetos
com
comportamento
faltoso e o respectivo tratamento.Em
grupos de objetos é necessário criarmecanismos
para detectar a ocorrência defalha
em
cadamembro
do
grupo prevenindo que o clientefique
esperandoindefinidamente
aresposta; isto
pode
ser obtido através demecanismos
de tímeout e keepalive,que
detectamfaltas
com
semânticas de omissão e de crash.Um
“serviço deve ser responsável por coletartodas as informações de tímeout e keepalíve e produzir
um
fluxo
único confiável e coerentede notificação de falhas.
Na
implementação deste serviçoem
um
ORB
é preciso decidir aclasse de faltas a ser detectada.
Além
disso, a notificação de falha deum
objeto precisa serdifundida a todos
membros
do
grupo deforma
totalmente ordenada paraque
estestenham
amesma
visãodo
objeto faltoso.E
°
Implementação de Técnicas de Replicaçâo deComponentes
llCapítulo 2 - Requisitos para Suporte a Grupo de Objetos
em um
AmbienteCORBA
Serviços de transferência de estado são importantes
no
tratamento de faltas,na
re-inserção deobjetos
no
grupo.A
transferênciapode
se dar através deuma
cópia consistentedo
estado corrente deum
objeto, deforma
queum
novo
objeto entrandono
grupo possa ao receber acópia, tomar-se
uma
réplica idêntica às outras. Serviços de log e de checkpoíntpodem
periodicamente copiar
em
disco estados deum
objeto e requisições subsequentes ao grupo,caracterizando checkpoints e logs que
poderiam
ser usadosna
recuperaçãodo
grupoem
situação de falhas
em
todos osmembros.
Este serviço deve serimplementado na
interfaceBOA.
O
uso de serviços demembership
disponíveis nesta interfacedevem
ser usadosno
tratamento de elementos faltosos
ou na
re-inserção deum
objetoonde
amudança
demembership
só se efetivaquando
a transferência de estado tiver sido sucesso. A2.3.3
Comunicação
de
Grupo
O
suporte para grupotem
como
um
dos pontos essenciais odesempenho da
comunicação.Um
ORB
pode
ser vistocomo
canalizando pedidos e respostas de serviços,mediando
interaçõesatravés de protocolos apropriados.
O
pedido deum
cliente deve sermapeado,
transparentemente,
em
pedidos de operaçãoem
objetosmembros
do
grupo.Dependendo
do
modelo
de processamento de grupo,nem
todos osmembros
necessitam receberou
executaraoperação.
Segundo
osmodelos
de replicações usuais, algunsmapeamentos
possíveisna
comunicação
são:0 transmitir o pedido a
um
membro
privilegiado (“obj eto primário”);0 enviar o pedido de
fonna
aleatória aum
membro
do
grupo;o enviar o pedido a todos os
membros
do
grupo(modelo
Máquina
de Estado)Todos
estes“mapas”
são implementáveis a partir deum
ORB,
usando
protocolos apropriadose
também
os serviços de membership.Em
relação aos resultados, se muitos, provenientes dosvários
membros,
é necessário que sejam coletados e apresentados ao clientecomo
um
resultado único. Outra vez,
dependendo do
modelo
de grupo, alternativas são possíveis:°
Implementação de Técnicas de Replicação de Componentes 120 o primeiro resultado a chegar é passado ao cliente, os restantes são descartados;
0 concatenar os resultados
em
sequências e enviar ao cliente. Esta altemativa éútil
em
modelos
de processamento cujosmembros
fomecem
alguma forma
deprocessamento paralelo;
0
um
ajustadorou
votador calculaum
valor a ser enviado ao cliente a partirdo
conjunto de resultados recebidos.
A
escolhado
mapeamento
no
envio de pedidos eda
coleta de resultadosdeve
ser especificadacomo
parteda
implementaçãodo
processamento replicado, e portanto estararmazenada no
repositório de implementações [ISIS 93].
O
ORB
pode
consultar estesmapas
quando da
ativação de
um
grupo.A
execução dosmapas
de envio e a coleta de resultados peloORB
éimportante para se obter os graus de transparência desejados.
2.3.3.1
Transparência
de
Grupo
de
Objetos
A
transparência entre grupos de objetos éum
requisito importante porque simplifica oscódigos de aplicação afastando dos
mesmos
as complexidades de gerenciar 'acomunicação de
grupo.
Dois
tipos de transparência são delineáveis nas relações de grupo:0 Transparência
do
servidor: os objetosmembros
deum
grupo
servidor sãovistos pelos seus clientes
como
sefossem
um
objeto servidor simplesque
implementa
amesma
interface.O
ORB,
ao definir a execução deum
mapa
deenvio para requisições e
também
a coleta de resultados, estará contribuindona
implementação do
servidor.°
Implementação de Técnicas de Replicação de Componentesl_3
Capitulo 2 - Requisitos para Suporte a Grupo de Objetos
em um
AmbienteCORBA
._.._.._.-_..._..._.._, I -| I E E objeto cliente , ' ! rupo de objetos i 9 É . ! ¡Q
¡ i objeto › 1 _ __
_ _ _ _ __
_ __
_ __
_ __
_ _:Figura 2.2 Transparência de grupo servidor
0 Transparência
do
cliente: as requisições enviadas deum
grupoou de
um
objetosimples para
um
objeto servidordevem
ser equivalentes e tratadascomo
asenviadas por
um
cliente único. Isto se consegueou
atravésdo
modelo
de grupoutilizado
no
clienteem
queum
dosmembros
é o responsável pelas interações externas ao grupo (figura 2.3a);ou
através deum
mecanismo
no
ORB
que
capture as múltiplas requisições replicadas de
um
grupo cliente e as transformeem
apenasuma
emissão de requisiçãono
servidor (figura 2.3b).z z ._=zz¿=zra,.,z, . Ê ff? E
9
ll ` Servidor ServidorQVUPO Clieflle ‹ grupo cliente
Figura 2.3a Grupo com
um
membro centralizador Figura 2-3bORB
r€Sp0flSáV€l pela C0mUl1iC3Çã0Estas formas de transparência nas
comunicações
sãomelhor
suportadas utilizandomecanismos
deproxy
e dispatcher incluídosno
ORB
[Shapiro 86][Hagsand
92].A
figura
2.4mostra
um
modelo
de implementação paracomunicação
de grupousando
estesmecanismos.
Os
stubs e proxiesdo
lado dos clientes e os díspatchers e skeletonsdo
lado dos objetosno
grupo servidor são gerados a partir
da
compilação deuma
especificação de interface deum
grupo servidor.
O
stub residenteno
espaço de endereçamento de cadamembro
cliente oferece°
Implementação de Técnicas de Replicação de Componentes_
14
uma
interface de serviço idêntica à de ativação deum
método
deum
objeto servidor simpleslocal.
O
proxy
éuma
versão localdo
grupo de -objetos servidor; acomunicação
deum
membro'
clientecom
um
grupo sedá
através de seu proxy.O
proxy
distribuiuma
requisição deserviço entre os objetos
do
grupo servidorusando
os serviçosde
um
protocolo decomunicação
(item seguinte).Em
cada sítio receptor, o dispatcher localiza omembro
do
grupo servidor e passa a requisição ao skeleton que, por sua vez, ativa o método.
zw
@
stub e skeletonii
W
grupo
clienteQFUPO
$efVÍd0fFigura 2.4
Comunicação
no estilo Proxy/Dispatcher.2.3.3.2
-Implementação
das Comunicações,
A
noção
de grupo implicano
uso deum
identificador único paraum
conjunto de objetosque
compartilham
alguma
característicacomum,
demodo
que
o grupo de objetos seja visto poroutros objetos
da
aplicaçãocomo
um
objeto simples.A
aplicaçãonão
precisa se envolverna
expansão dos endereços de grupo dentro das listas de destinos.
O
ORB
deve ser vistocomo
canalizando pedidos e respostas de serviços,
mediando
interações através de protocolos apropriados.Usando
um
serviço de protocolo multícast, envolvendo primitivasde
interação multi-ponto,em
muito odesempenho
dascomunicações
e a complexidadedo
ORB
sãomelhorados.
Se
este protocolo multicastfomecer
diferentes tipos de ordenação oORB,
além
da
simplicidade envolvida, poderá suportar diferentesmodelos
de replicações. Três tipos deordem
usualmente apresentados sãoordem
total,ordem
causal eordem
FIFO
[Dueñas 92]:0
Ordem
total: assegura que múltiplas requisições emitidas por diferentes clientes , -serão recebidas
na
mesma
ordem
pelosmembros
objetos servidores. Este tipode ordenação é importante
na
implementaçãodo
modelo
de grupoMáquina
de°
Implementação de Técnicas de Replicação deComponentes
15cw-
. de Software sobre a Plataforma AbertaCORBA
Capítulo 2 - Requisitos para Suporte a Grupo de Objetos
em
-um AmbienteCORBA
Estado [Schneider90]. Neste modelo, o determinismo de réplica assegura
que
nas condições de garantia de ordenação total e de recepção
de
todas asrequisições por parte dos
membros,
cada objeto (réplica ativa)pode
atender suafila de requisições
sem
necessidades decomunicação ou
coordenaçãocom
osdemais
membros
do
grupo. `A
0
Ordem
causal: nesta ordenação asmensagens
são recebidasobedecendo
relações de precedência entre eventos. Esta ordenação previne erros de
consistência
em
sequências de requisições relacionadas a eventos,mesmo
-quando
estas requisições são emitidas por diferentes clientes.0
Ordem
FIFO:
asseguraque
as requisições deum
cliente são recebidasem
todosos
membros
do
grupona
ordem
de emissão.Ordenações
FIFO
em
multícast 'ssão
normalmente
usadasem
comunicações assíncronas one-way, poispodem
fomecer
um
mesmo
tipo de ordenação decomunicação
síncrona, sem_implicar_ nos custos envolvidos nestas últimas
com
os replies a nível de aplicação.Os
mecanismos
decomunicação
não são visíveis ao cliente, edevem
estar disponíveis para asinterfaces de invocação estática
ou
dinâmica (DII)ou
para o proxy gerado a partirda
interfaceIDL
do
grupo atravésdo
ORB.
2.3.4
Descrição
das
Interfaces
de
Grupo
Servidor
O
conjunto de serviçosque
podem
ser acessados pelos objetos clientes são especificadosatravés
da
linguagem de definição de interface IDL.A
IDL
então serve para descrevero
formato de cada
chamada
dosmétodos
oferecidos pelo objeto e dos parâmetros (atributos)necessários para efetuá-las.
Em
um
arquivo de definição de interface deum
grupo de objetosestão presentes todas as informações necessárias à geração
do
suporte necessário paraque
um
cliente possa ativarum
método do
grupo.A
IDL
deve serpuramente
declarativa,sem
definições de variáveis
ou
estruturas algorítmicas.É
desejável que a descrição de interface degrupo de objetos seja compatível
com
omodelo
IDL
do
CORBA
[OMG
94] e suportada pelo°
Implementação de Tecnicas de Replicação de Componentes 16ORB.
Para isso, é necessário adicionarnovos
tipos de declarações para grupode
objetosou
considerarque
qualquer implementação de objeto seja, por default, tratadacomo
grupode
objetos,mesmo
que
sejaum
grupo contendo apenasum
objetomembro.
Assim,
é possívelque
aIDL
para grupo seja totalmente idêntica aoIDL`do
CORBA
convencional, poisao
secompilar a
IDL
de grupo todas as abstrações de grupo seriam tratadas a nível de suporte,garantindo a total transparência
da
aplicação.2.4
Propostas
de
ORBs com
Suporte
para
Grupo
de Objetos
Nos
próximos
itens deste capítulo serão descritas as propostas de suporteque
seguem
ospadrões
CORBA
(exceto 0 ISIS/C++) e que incluem abstrações para processamentoem
grupo
de objetos.
Algumas
destas propostas já se apresentamna forma
de produtos (Orbix+Isis e oRDO/C++).
O
nosso intuitoécomparar
estes suportesna
ótica de alguns dos requisitoslevantados nos itens anteriores. Este estudo
tomou
como
base o levantamento realizadoem
[Lau 95].
2.4.1
isis/c++
O
ISIS/C++
[ISIS 91] éuma
interface que abstrai os serviçosda
ferramenta ISIS convencionalpara permitir o desenvolvimento de aplicações distribuídas orientadas a objeto.
A
linguagem
de definição de interface
não
é compatívelcom
aIDL
do
padrãoCORBA/OMG.
A
interfaceISIS/C++
éimplementado
em C
eC++
sobre as versões 2.1 e 3-0do
ISIS.2.4.1.1
Modelo de
Comunicação
de
Grupo
ISIS/C++
ú
O
ISIS/C++
se baseiano modelo
cliente/servidor,onde
os serviços sãoimplementados
em
grupos de objetos.
Uma
especificação de interface,definindo
os serviços deum
grupo deobjetos, é usada
no
processo de compilação para gerar stubs e proxies, permitindo então acomimicação do
clientecom
os objetos servidores.Os
stubs são integrados aos objetos-cliente e aos objetosmembros
do
grupo por herança, permitindo então ao cliente dispor de serviçosde grupo