中间件_6corba服务.ppt
文本预览下载声明
第6章 CORBA服务 6.1 概述 核心服务 对象定位:命名服务和交易对象服务 对象消息:事件服务和通知服务 安全 数据库与事务处理 对象存储 对象关系 事务处理 并发控制 其他 对象查找机制 对象目录:存储对象及其关联的数据 命名服务:存储对象引用与一个名字的关联 交易对象服务:存储对象引用与一系列相关属性之间的关联 6.2 命名服务 定义:给对象实例提供一个名称,便于用户通过其来获取对象实例 作用:是ORB上对象找到其他对象的基本机制 名字联便:名字-对象(标记)关联 可创建命名分层结构 来自不同域的名字语言环境可以一起使用,为对象创建联合命名服务 6.2.1 层次结构 节点都是对象,分为两类 环境对象:命名环境(naming context),空心节点,可以是节点和叶子 应用对象:应用程序的对象,只能是叶子 弧:表示对象引用,且用该对象在context中出现的名字标识 可根据对象名字通过遍历的方式找到目的对象的对象引用 名字服务 6.2.2 对象的命名内容 Corba对象的句柄定义成如URL(统一资源定位)的形式,从而允许ORB来调用基于Corba的服务或者远程ORB上的对象实例 上下文对象:任何一个厂商的ORB都可以通过配置客户端的ORB来初始化根命名服务的上下文对象(NamingContext) 对于Corba对象的复合命名。定义一个标准的语法规则。这样服务器端和客户端就可以通过相同的格式来进行读写消息。 Corba对象的统一资源定位(URL):Corbaloc 通常的做法是把一个Corba的服务器放在一台有指定域名地址和端口的机器上。Corba的服务器要为许多的Corba对象服务。一般我们需要在对象实例 的URL地址后加上特定的对象健值(Object Key ID)或对象名字,这些对象的名字或健值就指明了我们所需要的特定的服务。如下所示:Corbaloc:/NameService Corbaloc URL的完整格式 IIOP:1.2@:2809/pub/nameservice 6.2.3 名字服务模型 名称上下文(Name Context)可利用其接口中的bind函数将自己的名称与对象引用联系起来 客户使用resolve函数来按对象名称查找对象引用 命名服务具有分布式优点,在整个CORBA环境中都可访问到名称服务所存储的对象引用 附录1 名字服务器编程 6.2.4 名字服务编程要素 module CosNaming{…….}// struct NameComponent { string id; //用户的字符串标识符 string kind;//扩展名//描述信息,如编码,版本 }; typedef sequence NameComponent Name; NameComponet 对象的名字由一系列NameComponet顺序串接而成 只有一个NameComponet的名字成为简单名 多个——复合名 复合名component1:component2:compoent3 最后一个是简单名,表示应用对象 其他都是环境名 复合名由若干环境名和一个简单名串接而成 enum BindingType {nobject, ncontext}; struct Binding { Name binding_name; BindingType binding_type; }; typedef sequence Binding BindingList; interface NamingContext { void bind(in Name n, in Object obj); void rebind(in Name n, in Object obj); void bind_context(in Name n, in NamingContext nc); void rebind_context(in Name n, in NamingContext nc); Object resolve (in Name n); void unbind(in Name n); NamingContext new_context();//命名环境的创建 NamingContext bind_new_context(in Name n); void destroy( );//命名环境的删除 void list (in unsigned long how_many, //命名环境的列表 out BindingList bl, o
显示全部