gestor: tic/tic-e&p/gidsep versão 1 - julho/2013 tecgraf puc-rio novembro de 2013 sdk openbus

64
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

Upload: internet

Post on 22-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Tecgraf PUC-Rio

Novembro de 2013

SDK OpenBus

Page 2: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

OpenBus

• O OpenBus oferece:• Barramento de Integração• Controle de Acesso (autenticação e

identificação)• Serviços de Apoio à Integração• SDK

• Biblioteca de Acesso• Demos• Documentação• Utilitários

Page 3: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Visão de uma Integração

Page 4: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Visão de uma Integração

Page 5: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Visão de uma Integração

Page 6: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Visão de uma Integração

Page 7: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Visão de uma Integração

Page 8: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Visão da Arquitetura

Page 9: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Controle de Acesso

Cliente

Controle de Acesso

• Ponto de entrada no barramento • sua localização (referência) é conhecida por todos

login• Realiza uma autenticação•Gera um identificador de login •Login possui uma validade

Autenticação com usuário / senha

• Autentica os componentes que querem fazer parte do barramento

LDAP

Page 10: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

• A autenticação no barramento pode ser feita por:• usuário e senha• certificado digital

Controle de Acesso - Autenticação

Page 11: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Autenticação por usuário e senha

• Requer a configuração de um servidor LDAP

• Normalmente, aplicações cliente (stand-alone) se autenticam no barramento usando usuário e senha

Page 12: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Autenticação por certificado

• Baseia-se em um par de chaves: pública e privada

• Um certificado digital normalmente é usado para ligar uma entidade a uma chave pública• Assinado digitalmente• Emitido e assinado por uma Autoridade

Certificadora

• O padrão adotado é o X.509• A validação de certificados digitais é

feita usando um modelo desafio-resposta

Page 13: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Autenticação por certificado

• O OpenBus possui instalado os certificados públicos de todas as entidades que precisam se conectar a ele

• Apenas a entidade que se conecta ao barramento guarda a chave privada que é par da chave pública do certificado

• Para a autenticação, um desafio é gerado pelo barramento utilizando a chave pública da entidade

• A entidade decifra o desafio utilizando a sua chave privada

• A chave pública do barramento é usada para gerar a resposta a partir do desafio fornecido

Page 14: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

• Autenticação e Identificação• Login

• Identificador único• Nome da entidade proprietária

• Cadeia de chamadas• Barramento responsável

• Lease de login• Um login é válido por um tempo

determinado• É renovado de tempos em tempos

Controle de Acesso

Page 15: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

• Uma ou mais chamadas aninhadas feitas através do barramento que originaram uma chamada recebida

• Contém as informações de login dos processos que originaram cada uma das chamadas aninhadas

Controle de Acesso – Cadeia de chamadas

Page 16: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Registro de Ofertas

• Permite a oferta e a descoberta de serviços• Observação de ofertas e registros de ofertas• Sua referência é obtida através do

barramento• O mecanismo de govenança é usado para

garantir que apenas entidades autorizadas possam publicar serviços no barramento

Page 17: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

• Descrição de oferta de serviço• Referência para a faceta IComponent do

serviço• Lista de propriedades descritivas

• Especificadas no ato do registro• Automáticas

• Referência para a oferta de serviço propriamente dita• Objeto CORBA que permite a alteração da oferta

pela entidade que a registrou ou usuários administradores

Registro de Ofertas

Page 18: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

• Propriedades automáticas• Descritas na IDL do registro de ofertas

/** * openbus.offer.id: Ident. único da oferta. * openbus.offer.login: Ident. do login com que a oferta foi registrada. * openbus.offer.entity: Ident. da entidade que registrou a oferta. * openbus.offer.timestamp: Número indicando o momento do registro da oferta. * openbus.offer.year: Ano em que a oferta foi registrada. * openbus.offer.month: Número do mês em que a oferta foi registrada. * openbus.offer.day: Dia do mês que a oferta foi registrada. * openbus.offer.hour: Hora do dia em que a oferta foi registrada. * openbus.offer.minute: Minuto do dia em que a oferta foi registrada. * openbus.offer.second: Segundo do dia em que a oferta foi registrada. * openbus.component.name: Nome do componente SCS que implementa o serviço. * openbus.component.version.major: Versão maior do componente SCS que implementa o serviço. * openbus.component.version.minor: Versão menor do componente SCS que implementa o serviço. * openbus.component.version.patch: Versão de correção do componente SCS que implementa o serviço. * openbus.component.facet: Nome de faceta oferecida pelo component SCS que implementa o serviço. * openbus.component.interface: RepID de interface implementada por faceta do component SCS que implementa o serviço. */

Registro de Ofertas

Page 19: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Registro de Ofertas

Page 20: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Registro de Ofertas

Page 21: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Serviços Adicionais

• Atuais• Serviço de Colaboração• Serviço de Dados

• Não são parte do núcleo do barramento• Ou seja, não é obrigatória a presença desses

serviços em uma instância de barramento

• Acrescentam funcionalidades para auxiliar a integração entre serviços e aplicações

Page 22: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Serviço de Colaboração

• Permite criar e compartilhar uma sessão de colaboração entre serviços• Fornece mecanismo de notificação para adição

e exclusão de membros

• Oferece um canal de comunicação para o envio de eventos

Page 23: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

SDK OpenBus

• Biblioteca que implementa o protocolo• Também dá suporte ao protocolo da

versão anterior do barramento, para que seja possível manter a integração com clientes legados

• Assistente (utilitário)• Documentação• Demos

Page 24: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API da Biblioteca

• Os principais conceitos são representados da seguinte forma:

• ORBInitializer• Connection• CallerChain• OpenBusContext

Page 25: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - ORBInitializer

• Inicializador de ORBs para acesso a barramentos OpenBus– Mas IIOP.NET só permite uma instância de ORB

• Limita o ORB ao uso exclusivo para chamadas através do barramento• Chamadas fora do barramento deveriam ser

feitas em outro ORB, mas com o IIOP.NET não é possível

• Abstrai a operação CORBA::ORB_init• O ORB passa a ter um OpenBusContext

associado

Page 26: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - ORBInitializer

// inicialização e configuração do ORB e// obtenção do gerente de contexto de chamadas associadoOpenBusContext context = ORBInitializer.Context;

• Exemplo:

Page 27: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Connection

• Representa um ponto de acesso ao barramento, que é usado tanto para realizar como para receber chamadas através do barramento

Page 28: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Connection

// criação de conexão (não lança exceções)// o terceiro parâmetro é um conjunto de propriedades// opcionais, como suporte a clientes legadosConnection connection = context.createConnection(host, port, null);

• Exemplo:

Page 29: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Connection

• Utilizada para realizar acessos identificados ao barramento

• Deve ter um login associado• Atualmente duas formas de autenticação

são possíveis:• Por senha: loginByPassword• Por certificado digital: loginByCertificate

• É possível também obter um login através de uma autenticação prévia

Page 30: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Connection

// autenticaçãotry {

// por login e senhaconnection.LoginByPassword(entity, password);// por certificadoconnection.LoginByCertificate(entity, privateKey);// logoutconnection.Logout();

}catch(…) { …}

• Exemplo:

Page 31: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Connection

• O resultado da autenticação é um login com tempo de validade (Lease)

• Cada conexão possui uma thread de renovação automática da validade do login

• Caso o login seja invalidado, é necessário re-autenticar e, no caso de serviços, reofertar suas ofertas no barramento• Para isso, deve-se implementar uma callback

Page 32: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Connection

// callback de renovação de login e ofertasconnection.OnInvalidLogin = InvalidLogin;...private void InvalidLogin(Connection conn, LoginInfo login){ //1. autenticar no barramento //2. republicar ofertas se necessário //é necessário o tratamento de concorrência}

• Exemplo:

Page 33: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Connection

• Multiplexação• Possibilidade de assumir múltiplas identidades

através de múltiplas conexões

• Utiliza-se o OpenBusContext para criar e definir as conexões que serão utilizadas pelo ORB

Page 34: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - CallerChain

• Representa a identificação de todos os acessos ao barramento que originaram uma chamada recebida

• Úteis para aplicações implementarem regras próprias de permissionamento

• São obtidas através do OpenBusContext

Page 35: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - CallerChain

// obtenção da cadeia da requisiçãopublic void MyServantMethod() {

CallerChain callerChain = ORBInitializer.Context.CallerChain;

LoginInfo caller = callerChain.Caller;System.out.println(caller.entity + “ called me.”);// unindo-se a uma cadeia de chamadascontext.JoinChain(chain);someService.someMethod();context.ExitChain();

}

• Exemplo:

Page 36: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - OpenBusContext

• Permite controlar o contexto de chamadas de um ORB para acessar informações que as identificam

• O contexto representa a linha de execução atual do programa em relação ao ORB, o que tipicamente é a thread corrente (mais especificamente o CORBA::PICurrent do padrão CORBA)

Page 37: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - OpenBusContext

• Que informações identificam as chamadas?• Conexão• Cadeia de chamadas

• O contexto:• Cria conexões• Manipula informações de contexto

• Qual conexão realiza a chamada• Qual cadeia está associada à chamada• Qual conexão recebe (atende) uma chamada

Page 38: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - OpenBusContext

// configuração da conexão padrãocontext.SetDefaultConnection(connection);// recuperação da conexão padrãoConnection conn = context.GetDefaultConnection();

• Exemplo:

Page 39: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - OpenBusContext

• O contexto também fornece a referência para serviços-núcleo:• Registro de ofertas

OfferRegistry offerRegistry = context.OfferRegistry;

Page 40: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Publicação de Ofertas

try { // registro de um serviço no barramento ServiceProperty[] properties = new[] { new ServiceProperty(“my property”, “my property value”)}; context.OfferRegistry.registerService(iComponent, properties);}catch (…) {…}

Page 41: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Busca e Utilização de Ofertas

ServiceOfferDesc[] offers;try { // busca por serviço ServiceProperty[] properties = new ServiceProperty[1]; properties[0] = new ServiceProperty(“my property”, “my property value”)}; offers = context.OfferRegistry.findServices(properties);}catch (…) {…}

Page 42: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

API - Busca e Utilização de Ofertas

// análise das ofertas encontradasstring serviceType = ...;foreach(ServiceOfferDesc offerDesc in offers) { try { MarshalByRefObject serviceObj = offerDesc.service_ref.getFacet(serviceType); if (serviceObj == null) { continue; } Service service = serviceObj as Service; if (service == null) {...} service.someMethod(); } catch (…) { … }}

Page 43: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Assistente

• Abstração sobre a biblioteca de acesso cujo objetivo é atuar como um utilitário que atende a cenários de uso mais comuns

• Auxilia na autenticação com o barramento• Auxilia no registro e busca de ofertas• Permite a configuração de número de tentativas• Permite configurar callbacks de falhas

• Limitação de um assistente por ORB

Page 44: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Assistente

• Cenários recomendados:• Comunicação com um único barramento• Necessidade de apenas uma autenticação

• Cenários não recomendados:• Comunicação com mais de um barramento• Necessidade de múltiplas autenticações, com

um ou mais barramentos• Esses cenários são impossíveis com a versão

atual do IIOP.NET

Page 45: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Assistente

• Principais vantagens:• Auxílio na autenticação com o

barramento• Implementa a callback OnInvalidLogin para o

usuário

• Ofertas de serviços são mantidas automaticamente caso a autenticação seja refeita

Page 46: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Assistente - Login

// Criação de um assistente – tentará realizar o login em uma// nova thread, até conseguir

// por login e senhaAssistant assistant = new AssistantImpl(host, port, new PasswordProperties(entity, password));

// por certificadoAssistant assistant = new AssistantImpl(host, port, new PrivateKeyProperties(entity, privateKey));

• Exemplo:

Page 47: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Assistente – Publicação de Oferta

// registro de um serviço no barramento - tentará realizar o// registro em uma nova thread, até conseguir

ServiceProperty[] properties = new[] { new ServiceProperty(“my property”, “my property value”)};assistant.RegisterService(iComponent, properties);

• Exemplo:

Page 48: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Assistente – Busca por Oferta

// busca por serviçoServiceProperty[] properties = new[] { new ServiceProperty(“my property”, “my property value”)};ServiceOfferDesc[] offers = Utils.FilterWorkingOffers( assistant.FindServices(properties, -1));

• Exemplo:

Page 49: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Boas Práticas

• Ambiente distribuído• Sempre pode haver falhas de acesso a

objetos remotos• Exceções sempre devem ser tratadas

para garantir a robustez

Page 50: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Tratamento de Exceções

• OpenBus• CORBA::NoPermission

• NoLogin – caso alguma operação que dependa de login seja feita e não haja um login no momento

• InvalidChain – cadeia inválida enviada• UnknownBus – barramento não conhecido pelo

serviço que se está tentando utilizar• UnverifiedLogin – o serviço que se está tentanto

utilizar não conseguiu verificar seu login no barramento

• InvalidRemote – protocolos de versão incompatíveis

• ServiceFailure – falha interna em um serviço

Page 51: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Tratamento de Exceções

• CORBA• CORBA::TRANSIENT

• Ocorreu um erro na comunicação, mas pode ser possível tentar novamente (ex: não foi possível contactar o servidor)

• CORBA::COMM_FAILURE• Erro de comunicação durante o atendimento

de uma chamada (ex: falta de recursos no servidor)

• CORBA::OBJECT_NOT_EXISTS• O objeto requisitado no servidor não existe

Page 52: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Detalhes e Outras Funcionalidades

• Veremos agora:

• Comunicação detalhada• Multiplexação• Compartilhamento de autenticação

Page 53: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Comunicação Detalhada

Page 54: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Comunicação Detalhada

Page 55: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Multiplexação

• OpenBusContext• Representa dois contextos diferentes

• Contexto de Requisição (realização de chamadas)

• Contexto de Despacho (recebimento de chamadas)

• Define conexão padrão• A ser utilizada tanto em Requisição como em

Despacho, caso não sejam especificadas

Page 56: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Multiplexação – Contexto de Request

// configuração da conexão padrãocontext.SetDefaultConnection(connection);

• Exemplo:

Page 57: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Multiplexação

• OpenBusContext• Como Contexto de Requisição

• Define conexão corrente• Permite configurar a cadeia de chamadas

associada à requisição• Métodos JoinChain, ExitChain• Propriedade JoinedChain

Page 58: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Multiplexação – Contexto de Request

// configuração da conexão de requisição (requester)context.SetCurrentConnection(connection);

// junta-se a uma cadeia específicacontext.JoinChain(some_chain);realiza_chamada_remota();

// deixa de usar essa cadeia para as próximas requisiçõescontext.ExitChain();

// volta a usar a conexão padrãocontext.SetCurrentConnection(null);

• Exemplo:

Page 59: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Multiplexação

• OpenBusContext• Como Contexto de Despacho

• Define conexão de despacho• E callback OnCallDispatch para a escolha dessa

conexão

• Permite consultar a cadeia de chamadas associada à chamada recebida

• Propriedade CallerChain

Page 60: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Multiplexação – Contexto de Dispatch

// configuração da conexão de despacho (dispatcher)context.OnCallDispatch = Dispatch;

...

public Connection Dispatch(OpenBusContext context, string busid, string caller, string uri, string operation){ // cabe ao código da aplicação escolher a conexão return some_connection; } });

• Exemplo:

Page 61: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Multiplexação

• OpenBusContext• Método context.GetCurrentConnection()

• Contexto de Requisição:• Obtém a conexão corrente do contexto ou a

padrão

• Contexto de Despacho• Obtém a conexão que atende à requisição

Page 62: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Compartilhamento de Autenticação

try { // compartilhamento de autenticação byte[] secret; LoginProcess login = connection.StartSharedAuth(out secret); // passa login e secret para outra aplicação de alguma forma // segura …}catch (…) {…}

• Serviço autenticado (API padrão):

Page 63: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Compartilhamento de Autenticação

try { // Recebe informações de login e segredo de alguma forma // segura LoginProcess login = …; byte[] secret = …; // Utiliza dados recebidos para realizar login Connection connection = context.CreateConnection(host, port, null); connection.LoginBySharedAuth(login, secret.value); …}catch (…) {…}

• Serviço se autenticando (API padrão):

Page 64: GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 SDK OpenBus

GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013

Compartilhamento de Autenticação

Assistant assistant = new AssistantImpl(host, port, new SharedAuthProperties(SharedAuthObtainer));

...

private LoginProcess SharedAuthObtainer(out byte[] secret) { LoginProcess login = …; secret = …; return login;}

• Serviço se autenticando (Assistente):