View
221
Download
0
Category
Preview:
Citation preview
CORBAAlcides Calsavara
Sistemas Distribuídos- objetivos -
Melhor relação custo/benefícioCapacidade de processamento além dos limites práticos de sistemas centralizados (velocidade da luz, aquecimento)Maior domínio de aplicaçõesMaior confiabilidade e disponibilidadeCrescimento gradativo da capacidade de processamento
Sistemas Distribuídos- objetivos -
Compartilhamento de dados comuns entre usuáriosCompartilhamento de recursos de hardware e softwareComunicação entre pessoasFlexibilidade na distribuição de tarefas de acordo com as aplicações
Sistemas Distribuídos- requisitos -
Controle de concorrênciaConsistênciaExtensibilidade (openness)Escalabilidade (crescimento gradativo suave)Tolerância a falhasTransparência
Sistemas Distribuídos- transparência -
AcessoLocalizacãoConcorrênciaReplicaçãoFalhaMigraçãoDesempenhoEscalaParalelismo
Sistemas Distribuídos- componentes básicos -
ComunicaçãoSistema de nomesManutenção de consistência Alocação de carga de trabalho
Sistemas Distribuídos- comunicação -
modelo: cliente/servidor grupo
abstracão: processos e mensagens objetos e operações (RPC)
sincronismo: síncrona assíncrona
8
Sistemas Distribuídos- consistência: transacões -
Atômica: para o mundo externo, a transação ocorre de forma indivisível.Consistente: a transação não viola invariantes de sistema.Isolada: transações concorrentes não interferem entre si (serializable).Durável: os efeitos de uma transação terminada com commit são permanentes.
CORBA
Conceitos e Exemplos
10
CORBA- contexto -
OMG: Object Management GroupOMA: Object Management Architecture (1992)ORB: Object Request Broker facilidade para envio e recebimento de
mensagens entre diferente objetos e componentes
CORBA: Common Object Request Broker Architecture arquitetura que permite interoperação entre os
participantes na OMA (objetos diversos) adotada por: HP, SunSoft, IBM, Xerox, Oracle, ...
CORBA- ORB : produtos comerciais -
Orbix (Iona Technologies) VisiBroker (Borland) ChorusORB (Sun)Component Broker/DSOM (IBM)Voyager ORB (ObjectSpace)OrbAda (Top Graph'X)Nouveau (Roguewave) Netscape Internet Service Broker (Netscape)ObjectDirector (Fujitsu)DOME (Object Oriented Technologies)BEA WebLogic Server (BEA)
CORBA- ORB : produtos acadêmicos/gratuitos -
ORBacus (Object-Oriented Concepts) ILU Freeware ORB (Xerox Parc)DIMMA (ANSA)JADE (APM)JavaIDL (JavaSoft) TAO ( Distributed Object Computing Group at Washington University )omniORB2 (AT&T Laboratories )MICO (University of Frankfurt)
CORBA- referências básicas -
Orfali & Harkey & Edwards. The Essential Distributed Objects Survival Guide. 1995Mowbray & Zahavi. The Essential CORBA. 1995Mowbray & Ruh. Inside CORBA. 1997www.omg.org
OMA Guide CORBA Revision 2 CORBAservices CORBAfacilities
Distributed Object Computing Magazine, OMGhttp://mini.net/cetus
CORBA - referências disponíveis na biblioteca da PUCPR
Advanced CORBA programming with C++ Client/ server programming with Java and CORBA - 2nd ed. CORBA : a guide to the common object request broker architecture CORBA fundamentals and programming Essential CORBA : systems integration using distributed objects, The Understanding CORBA : common object request broker architecture
CORBA- objetivos -
construcão de sistemas distribuídos: criacão de novos componentes integracão de componentes existentes (legados)middleware: não inclui modelagem de aplicacões não inclui implementacão de aplicacões inclui mecanismos que auxiliam na
implementacão, a partir do modelo e do projeto
CORBA- abordagem -
orientacão a objetosmodelo cliente/servidorcomunicação via RPCmecanismos disponíveis através de: servicos, facilidades e domíniosindependência de: hardware, SO, linguagem
17
ORB
Cliente Implementaçãodo Objeto
ORB
Request
18
Modelo de objetosClientes são entidades que requisitam serviços.Uma requisição inclui uma operação, o objeto destino, parâmetros da operação.Uma operação denota um serviço que pode ser requisitado.Um objeto é um encapsulamento de serviços que podem ser requisitados por clientes.Um valor é qualquer coisa que pode ser parâmetro em uma requisição; valores podem identificar um objeto.Uma referência a objeto é um nome que identifica um certo objeto de maneira consistente.
19
OperaçõesA assinatura de uma operação define os valores que podem ser usados como parâmetros e resultados em sua requisição.Cada parâmetro tem um modo e um tipo.Os modos de parâmetro são: in, out, inoutO resultado de uma requisição pode ser uma exceção, denotando serviço anormal.Uma exceção é usada para passar informação para o originador da requisição.Semântica: at-most-once, oneway (best-effort, cliente não tem resultados)
20
Arquitetura ORB
Cliente Implementaçãodo objeto
InvocaçãoDinâmica
StubsIDL
InterfaceORB
EsqueletoIDL
Adaptadordo Objeto
Núcleo ORB
21
Componentes ORBInterface de Invocação Dinâmica: clientes fazem requisições independentemente da interface do objeto; cliente sabe o tipo do objeto a assinatura da operação. Stubs IDL: clientes fazem requisições de acordo com a interface do objeto (IDL: Interface Definition Language); cliente tem uma referência para o objeto e sabe a assinatura da operação.Esqueleto IDL: a implementação do objeto recebe uma requisição através do esqueleto IDL. (Há stubs e esqueletos para cada tipo de objeto.)Adaptador do Objeto: a implementação do objeto pode chamar um adaptador do objeto durante o processamento de uma requisição (resolver referências, segurança, ...)
22
IDL: Interface Definition Language
DefiniçõesIDL
IDL stub
Repositóriode Interfaces
EsqueletoIDL
Implementação(em linguagem)
Repositório deImplementação
IDL - exemplomodule Escola { interface Curso; // declarado, mas não definido interface Estudante {
attribute string nome;attribute unsigned long matricula;exception ClasseLotada;void registra (in Curso curso) raises (ClasseLotada);exception ReqIncompleto;void gradua ( ) raises (ReqIncompleto);typedef sequence<Curso> ListaCursos;ListaCursos cursos_registrados();
}}
Exemplo – arquivo IDL// IDL - arquivo Hello.idl
interface Hello{
void trabalhe ( );};
Exemplo – arquivos relacionados à IDL
compilação do arquivo IDL: idl Hello.idl
Arquivos gerados:Hello.hHello.cppHello_skel.hHello_skel.cpp
Exemplo –implementação do objeto em Java
import org.omg.CORBA.*;public class Hello_impl extends _HelloImplBase{ public void trabalhe ( ) { System.out.println("Hello World!"); }}
Exemplo – ativação do servidor (1)// Initialize the ORBORB orb =
ORB.init ( args, new java.util.Properties ( ) ) ;
// Initialize the Basic Object AdapterBOA boa =
orb.BOA_init ( args, new java.util.Properties ( ) ) ;
// Create the implementation objectHello_impl p = new Hello_impl ( ) ;
Exemplo – ativação do servidor (2)
// Export a reference to this object to a file
// obtém uma referência para o objeto// em formato de stringString ref = orb.object_to_string ( p );
// abre um arquivo para escritaString refFile = "C:\Temp\Hello.ref";FileOutputStream file = new FileOutputStream(refFile);PrintStream out = new PrintStream(file);
// escreve a referência no arquivo em formato de stringout.println( ref );
Exemplo – ativação do servidor (3)// Run the object implementation
boa.impl_is_ready ( null );
Exemplo – cliente em Java (1)
// Initialize ORBORB orb =
ORB.init ( args, new java.util.Properties ( ) );
Exemplo – cliente em Java (2)
// Get "hello" object reference from a file
// abre o arquivo para leituraString refFile = "C:\Temp\Hello.ref";FileInputStream file = new FileInputStream(refFile);DataInputStream in = new DataInputStream(file);
// lê a referência em formato de stringString ref = in.readLine();
Exemplo – cliente em Java (3)
// Convert IOR String reference to object referenceorg.omg.CORBA.Object obj = orb.string_to_object(ref);
// Throw an exception in case of failureif (obj == null) throw new RuntimeException();
// Cast generic Corba.Object reference to// Hello interface referenceHello h = HelloHelper.narrow(obj);
// Finally, use the reference !h.trabalhe ( ); // remote method invocation
CORBA
Services
ORB e serviços CORBA
NamingService
EventService
SecurityService
PersistenceObjectService
TransactionService
ORB
Cliente ObjetoCliente Objeto
Services- categorias -
Information managementTask managementSystem managementInfrastructure
Services- information management -
propertyrelationshipqueryexternalizationpersistent objectcollection
Services- task management -
eventsconcurrencytransaction
Services- system management -
naminglifecyclelicensingtrader
Services- infrastructure -
SecurityTime ServicesMessaging
Property Servicepropriedades são atributos dinâmicos vinculados a objetos de aplicacãopropriedades são úteis para aplicacões de gerenciamento, como desktop managers, debugging tools, browsers,...exemplo: um desktop manager pode vincular propriedades de protecão e compartilhamento a objetosexemplo: uma ferramenta de debugging pode vincular informacão sobre a execucão (como breakpoints) a objetos de um programa
Property Service - produtos
OpenFusion Property Service (PrismTech) Property Service with Java & C++ bindings. Property Service (Carsten Zerbst) Property Service implemented using Tcl and Mico.
Relationship Servicepermite estabelecer ligacões entre objetosevita que objetos mantenham object references explicitamentecria objetos adicionais: Relationship Role
Relationship Service - produtos
Enabled Systems Persistent Relationship Service (Enabled Systems) Relationship Service with Java & C++ bindings. OpenFusion Relationship Service (PrismTech) Relationship Service with Java & C++ bindings.
Query Serviceusado com bancos de dados comerciaissuporta bancos relacionais e OOproposto por: IBM, Sybase, SunSoftcontempla: SQL92, SQL-3, OQLqueries são dinâmicasqueries podem ser resolvidas sincrona ou assincronamente
Externalization Serviceconverte estruturas de dados em formato que pode ser armazenado externamente ao programa e transmitido via rederemove ponteirosparte do processo de marshallingútil também para migrar objetos (mas não inclui métodos)
Persistent Object Servicecriado por fornecedores de bancos de dados relacionais e OOinclui 3 protocolos de persistência: ODMG 93 direct access protocol (usa DDL, um
subconjunto de IDL) dynamic data object protocol
Persistent Object Service - produtos
Secant Extreme Persistent Object Service for C++ and Java (Secant) Persistent Object Service with Java & C++ bindings.
Collection Servicegrupos de objetos listas sequenciais pilhas filas bags ...estende a funcionalidade de bibliotecas como a STL (Standard Template Library) para sistemas distribuídos
Collection Service - produtos
OpenFusion Collection Service (PrismTech) Collection Service with Java & C++ bindings.
Events Servicecanal de passagem de eventos entre produtores e consumidores de eventospode ser usado para comunicacão multicastum consumidor registra seu interesse em eventos com o servicoestilos de interacão: push pull
Events Service - produtosNetEvents (Exemplar Development) Java implementation of the Event Service. OpenFusion Event Service (PrismTech) Event Service with Java & C++ bindings.
Notification Service - produtos
DSTC Notification Service (DSTC) C++ implementation of the Notification Service. OpenFusion Notification Service (PrismTech) Notification Service with Java & C++ bindings. ORBacus Notify (OOC) C++ implementation of the Notification Service. Orbital Notification Service (NEC) C++ implementation of the Notification Service.
Concurrency Servicegarante acesso atômico a objetos distribuídosportabilidade: uso de concorrência por múltiplos sistemas operacionais e linguagenstipos de lock: read, write upgrade (pode mudar para write) intention read, intention write (fine granularity)
Concurrency Service - produtos
OpenFusion Concurrency Service (PrismTech) Concurrency Service with Java & C++ bindings.
Transaction ServiceOTS: Object Transaction Servicepermite a manipulacão de estados de objetos distribuídos de forma consistentetrabalha sobre monitores compatíveis com X/Open:
Tuxedo protocols IBM/Transarc Encina bancos de dados OO compatíveis com ODMG-93 LU6.2 da IBM
usa two-phase commit protocolsuporta transações flat e nestedbaixo suporte a tolerância a falhas (Orbix + Isis)não suporta transações de longa duração
Transaction Service - produtos
CORBAplus Transaction Service (Expersoft) C++ implementation of the OTSJava Transaction Service (JTS) (JavaSoft) Java implementation of the OTSJTSArjuna (Arjuna Solutions) Java implementation of the Java Transaction Service OTSArjuna (Arjuna Solutions) C++ implementation of the OTSTPBroker (Hitachi) C++ implementation of OTS, and Java Implementation of OTS and JTS. VisiBroker ITS (Borland) Implementation of CORBA OTS and JTS
Naming Servicepermite recuperar uma referência para um objeto dado um nome vinculado a esteoperacões básicas: bind unbind resolve
espaco de nomes organizado em hierarquia (nós intermediários são chamados de contexto)
Naming Service - produtosDSTC Scalable Naming Service (DSTC) C++ implementation of the Naming Service ENames - CORBA Naming Service Browser [German] (Entrance Software) Java / Swing Naming Service Browser jNames (OutBack Resource Group) Java implementation of the Naming Service OpenFusion Naming Service (PrismTech) Naming Service with Java & C++ bindings ORBacus Names (OOC) Java implementation of the Naming Service TRC Naming Service (Technical Resource Connection) Java implementation of the Naming Service.
Lifecycle Servicecriacão de objetos é responsabilidade das aplicacões: lista de parâmetros é imprevisívelpermite criar object factories, que criam, duplicam, movem e removem objetos de certos tipos pelo sistema distribuído (com transparência de localizacão)
Lifecycle Service - produtos
OpenFusion Lifecycle Service (PrismTech) Lifecycle Service with Java & C++ bindings.
Licensing Servicepermite protecão de propriedade intelectual através de gerenciamento de licensas de forma dinâmicainclui, por exemplo: trabalhos de arte em computador e aplicacões comerciais.estimativa: 70% de todo software em uso no mundo é pirata
Licensing Service - produtos
SilkMeter (Segue Software) C++ and Java implementations of the Licensing Service.
Trading Serviceuma espécie de páginas amarelas, onde fornecedores publicam seus servicos e interessados procuram por elesnem sempre se sabe o nome do objeto que pode prover o servicoum servico é caracterizado através de sua interface (influenciado por APM ANSA Trader)
Trading Service - produtosDSTC Object Trader (DSTC) C++ implementation of the Trading Object Service. JTrader (Bruno Böttcher) Java Trading Service, implementing Manager - Factory pattern OpenFusion Trading Service (PrismTech) Trading Object Service with Java & C++ bindings. ORBacus Trader (OOC) Java implementation of the Trading Object Service. TOI (IKV) C++ implementation of the Trading Object Service. Trader (Washington University in St. Louis) C++ implementation of the Trading Object Service.
Security Servicedeve ser suportado diretamente pelo ORBabrange: confidencialidade, integridade, contabilidade, disponibilidade e não-repudiacãofuncões básicas: controle de acesso, auditoria, autenticacão e políticas de implementacão
Security Service - produtos
ORBAsec (Adiron) Java implementation of the Security Service (Level 1 and Level 2) SecureBroker (Promia) Java implementation of the Security Service (Level 1 and Level 2)
Timing Servicesuporta recuperacão e sincronizacão de relógios (físicos) em sistemas distribuídossuporta sincronizacão através sinais de rádio gerados localmente ou por fontes do governo
Timing Service - produtosOpenFusion Time Service (PrismTech) Time Service with Java & C++ bindings. Time Service (Carsten Zerbst) Time Service implemented using C++.
Messaging Servicepermite processamento assíncrono através do ORBinterfaces IDL têm semântica síncrona, por defaultestende a utilidade de CORBA para cobrir a funcionalidade disponível em MOM (message-oriented middleware)não suporta garantia de entrega de mensagens
Messaging eTolerância a Falhas
The Ensemble Project (Cornell University) Piranha: A CORBA Tool For High Availability Q/CORBA (University of Colorado) TIB/ObjectBus 2.0 White Paper (TIBCO)
Recommended