CORBA Alcides Calsavara. Sistemas Distribuídos - objetivos - Melhor relação custo/benefício...

Post on 07-Apr-2016

220 views 0 download

Transcript of CORBA Alcides Calsavara. Sistemas Distribuídos - objetivos - Melhor relação custo/benefício...

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)