serviço de nomes serviço de nomes corba: mapeia nomes a objetos clientes devem saber exatamente...

32
Serviço de Nomes • Serviço de nomes CORBA: • mapeia nomes a objetos • clientes devem saber exatamente qual objeto desejam

Upload: bruna-delgado-lobo

Post on 07-Apr-2016

229 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Serviço de Nomes

• Serviço de nomes CORBA:• mapeia nomes a objetos• clientes devem saber exatamente qual

objeto desejam

Page 2: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Serviço de Negociação

Page 3: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Necesidades do usuário

• Serviço mais dinâmico de descoberta de objetos

• cliente possui dados imprecisos ou incompletos sobre o que deseja

• uma maior variedade de serviços com funções semelhantes

Page 4: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Serviço de negociação

• OMG Trading Service• como o serviço de nomes, contém

referências para objetos• usuários utilizam o trader para obter

informações sobre serviços que atendam a suas necessidades

• análogo às páginas amarelas

Page 5: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Funcionalidades

• armazena anúncios de serviços• entidades anunciam um

serviço(exporter)• a referência do objeto anunciado é

imutável.• a descrição do serviço é feita pelas

suas propriedades, que podem ser alteradas

Page 6: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Funcionalidades

• pode-se anunciar um objeto mais de uma vez, sob diferentes propriedades

• anúncios podem ser retirados do trader (withdraw)

• procura por serviços sob certas restrições de propriedades do serviço (import)

Page 7: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Tipos de Serviço

• são armazenados num banco de dados de tipos de serviço, o Repositório de Tipos de Serviço

• cada trader pode ter referência para somente 1 repositório

Repos. de tipos Trader1 *uses

Page 8: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Tipos de Serviço

• são identificados por um nome único no repositório• Possuem:

• uma identificação• uma lista de definições de

propriedades (pode ser vazia)

• uma lista de tipos de serviços pais (pode ser vazia)

IncarnationNumber add_type( in CosTrading::ServiceTypeName name, in Identifier if_name,

in PropStructSeq props,

in ServiceTypeNameSeq super_types

)

Page 9: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Tipos de ServiçosPropriedades

• são definidas por:• um nome• um código que determina o tipo do valor da

propriedade• o tipo

• normal• somente para leitura• obrigatória• obrigatória e somente para leitura

• dinâmicas ou estáticas

Page 10: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Módulos do trader - IDL

CosTrading• TraderComponents: atributos para as

componentes do trader• Register: operações para criação novas ofertas

de serviços (exporters)• Lookup: operações para pesquisa de serviços

(importers)• Admin: atributos para administração de políticas • Link: operações para conexão entre traders

(federação)• Proxy: operações para proxies - objetos que não

são implementações

Page 11: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Módulos do trader - IDL

CosTradingRepos• ServiceTypeRepository: operações para

manipular tipos de serviço

CosTradingDynamic• DynamicPropEval: para obter valores de

propriedades dinâmicas

Page 12: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Interação com o trader

• 3 estágios principais:

• definição do tipo no repositório de tipos

• registro do serviço

• pesquisa de serviço

Page 13: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Registrando um tipo de serviço

Page 14: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

CosTradingRepos

Definição, consulta e remoção de tipos de serviços

module CosTradingRepos { interface ServiceTypeRepository { IncarnationNumber add_type( in CosTrading::ServiceTypeName name, in Identifier if_name, in PropStructSeq props, in ServiceTypeNameSeq super_types) void remove_type(in CosTrading::ServiceTypeName name) };};

Page 15: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Oferta de serviço

• é a descrição de um serviço• Exemplo

Printer

name: stringfloor: shortlanguage: stringcolor: stringppm: short

Propriedades

Page 16: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Oferta de serviço

• é a descrição de um serviço

IncarnationNumber add_type(

in CosTrading::ServiceTypeName name,

in Identifier if_name,

in PropStructSeq props,

in ServiceTypeNameSeq super_types

)

IDL:printer:1.0

IDL:printer_if:1.0

name: stringfloor: shortlanguage: stringcolor: stringppm: short

Propriedades

Page 17: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Registrando um serviço

Page 18: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Interface Register

• registro de uma oferta de serviçoOfferId export(in Object reference, in ServiceTypeName type, in PropertySeq properties)

• modificação de um serviço

• remoção um serviço já existente

void modify(in OfferId id, in PropertyNameSeq del_list, in PropertySeq modify_list)

void withdraw(in OfferId id)

Page 19: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

interface Register {

OfferId export(

in Object reference,

in ServiceTypeName type,

in PropertySeq properties

);

};

: Printer

name = hp5000floor = 4language = pscolor = 256ppm = 12

Propriedades

struct Property { PropertyName name; PropertyValue value;};

IDL:printer:1.0

Page 20: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Pesquisa de serviço

Page 21: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Interface Lookup

oferece meios de pesquisa:• por um serviço específico• que atende determinadas restrições• por ordem de preferência

void query( in ServiceTypeName type, in Constraint constr, in Preference pref, in PolicySeq policies, in SpecifiedProps desired_props, in unsigned long how_many, out OfferSeq offers, out OfferIterator offer_itr, out PolicyNameSeq limits_applied)

Page 22: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Expressões de busca(usadas como preferência)

• Literais‘a’ ‘string’

• Comparação== != < > <= >=

• Operadores aritméticos+ - * /

• operadores booleanosand or not

• pertinência‘elemento’ in Conjunto

• Substrings‘de’ ~ ‘abcdefg’

• existência (de prop.)exist Propriedade

Page 23: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Políticas para consultas

• search_card, match_card, return_card: número máximo de serviços para serem procurados, ordenados e retornados, respectivamente

• max_list: número máximo a ser retornado. Para o restante, usa-se next_n()

• support_dynamic_properties: busca considera serviços com propriedades dinâmicas

• support_modifiable_properties: busca não considera propriedades somente-para-leitura

• outras (federação)...

Page 24: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Exemplo de busca

Serviços disponíveis

Name Floor Language Color PPMmtl-all 3 postscript black 24rle 2 text black 40hpps 2 postscript black 24blue 2 postscript 256 12colorPS 3 postscript color 12

Restrição: ((color == 'black') and (language == 'postscript'))Preferências: min(floor)

Page 25: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Resultado da busca

name = rlecolor = blackfloor = 2language = postscriptppm = 40

IOR:00000000002449444c3a6f6d672e6f72672f436...

Oferta 1

name = hppscolor = blackfloor = 3language = postscriptppm = 24

IOR:000000d49444c3a6fd672e6f72672f436f73547 ...

Oferta 2

Page 26: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Federação de traders

Page 27: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

• agrupa recursos• compartilhamento de carga• replicação• melhor gereciamento das ofertas de

serviços e das requisições• destina-se somente a consultas, não a

registro de serviços

Page 28: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

D

A

C

F

B

E

Page 29: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Interface Link

• criação de um vínculovoid add_link(in LinkName name, in Lookup target, in FollowOption def_pass_on_follow_rule, in FollowOption limiting_follow_rule)

• modificação de um vínculo

• remoção de vínculos

void modify_link(in LinkName name, in FollowOption def_pass_on_follow_rule, in FollowOption limiting_follow_rule

void remove_link(in LinkName name)

enum FollowOption { // pesquisa local somente local_only, // passa para outros, se não encontrar localmente if_no_local, // sempre encaminha para outros always};

Page 30: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Políticas para consultas

• follow_rule• local_only: pesquisa local somente• if_no_local: encaminha para outros, se não

encontrar localmente• always: sempre encaminha

• starting_trader: consulta é encaminhada para todos os traders e inicia no último

• hop_count: número máximo de traders que uma consulta pode percorrer

Page 31: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

Administração

Page 32: Serviço de Nomes Serviço de nomes CORBA: mapeia nomes a objetos clientes devem saber exatamente qual objeto desejam

interface Admin : TraderComponents, SupportAttributes, ImportAttributes, LinkAttributes {

readonly attribute OctetSeq request_id_stem; unsigned long set_def_search_card (in unsigned long value); unsigned long set_max_search_card (in unsigned long value); unsigned long set_def_match_card (in unsigned long value); unsigned long set_max_match_card (in unsigned long value); unsigned long set_def_return_card (in unsigned long value); unsigned long set_max_return_card (in unsigned long value); unsigned long set_max_list (in unsigned long value); boolean set_supports_modifiable_properties (in boolean value); boolean set_supports_dynamic_properties (in boolean value); boolean set_supports_proxy_offers (in boolean value); unsigned long set_def_hop_count (in unsigned long value); unsigned long set_max_hop_count (in unsigned long value); FollowOption set_def_follow_policy (in FollowOption policy); FollowOption set_max_follow_policy (in FollowOption policy); FollowOption set_max_link_follow_policy (in FollowOption policy); TypeRepository set_type_repos (in TypeRepository repository);};