中间件_6corba服务

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

山东大学计算机科学与技术学院第6章CORBA服务山东大学计算机科学与技术学院6.1概述核心服务–对象定位:命名服务和交易对象服务–对象消息:事件服务和通知服务–安全数据库与事务处理–对象存储–对象关系–事务处理–并发控制其他山东大学计算机科学与技术学院对象查找机制对象目录:存储对象及其关联的数据命名服务:存储对象引用与一个名字的关联交易对象服务:存储对象引用与一系列相关属性之间的关联客户程序对象实现1发布2查找3使用name1name2nameNOOO山东大学计算机科学与技术学院6.2命名服务定义:给对象实例提供一个名称,便于用户通过其来获取对象实例作用:是ORB上对象找到其他对象的基本机制名字联便:名字-对象(标记)关联可创建命名分层结构来自不同域的名字语言环境可以一起使用,为对象创建联合命名服务山东大学计算机科学与技术学院6.2.1层次结构节点都是对象,分为两类–环境对象:命名环境(namingcontext),空心节点,可以是节点和叶子–应用对象:应用程序的对象,只能是叶子弧:表示对象引用,且用该对象在context中出现的名字标识可根据对象名字通过遍历的方式找到目的对象的对象引用aaeebbccddffgg山东大学计算机科学与技术学院名字服务:NamingContext:NamingContext:NamingContext:StockWatch:StockWatch:PManager“StockWatch”“PortfolioManager”“NASDAQ”“NYSE”“MainAdmin”山东大学计算机科学与技术学院6.2.2对象的命名内容Corba对象的句柄定义成如URL(统一资源定位)的形式,从而允许ORB来调用基于Corba的服务或者远程ORB上的对象实例上下文对象:任何一个厂商的ORB都可以通过配置客户端的ORB来初始化根命名服务的上下文对象(NamingContext)对于Corba对象的复合命名。定义一个标准的语法规则。这样服务器端和客户端就可以通过相同的格式来进行读写消息。山东大学计算机科学与技术学院6.2.2.1Corba对象的统一资源定位(URL):Corbaloc通常的做法是把一个Corba的服务器放在一台有指定域名地址和端口的机器上。Corba的服务器要为许多的Corba对象服务。一般我们需要在对象实例的URL地址后加上特定的对象健值(ObjectKeyID)或对象名字,这些对象的名字或健值就指明了我们所需要的特定的服务。如下所示:Corbaloc:yourdomain.com/NameService山东大学计算机科学与技术学院6.2.2.2CorbalocURL的完整格式IIOP:1.2@yourdomain.com:2809/pub/nameservice山东大学计算机科学与技术学院6.2.3名字服务模型名字服务器客户服务器OA对象1、对象注册2、名字解析3、远程方法引发山东大学计算机科学与技术学院名称上下文(NameContext)可利用其接口中的bind函数将自己的名称与对象引用联系起来客户使用resolve函数来按对象名称查找对象引用命名服务具有分布式优点,在整个CORBA环境中都可访问到名称服务所存储的对象引用山东大学计算机科学与技术学院附录1名字服务器编程山东大学计算机科学与技术学院6.2.4名字服务编程要素moduleCosNaming{…….}//structNameComponent{stringid;//用户的字符串标识符stringkind;//扩展名//描述信息,如编码,版本};typedefsequenceNameComponentName;山东大学计算机科学与技术学院6.2.4.1NameComponet对象的名字由一系列NameComponet顺序串接而成–只有一个NameComponet的名字成为简单名–多个——复合名复合名component1:component2:compoent3–最后一个是简单名,表示应用对象–其他都是环境名–复合名由若干环境名和一个简单名串接而成山东大学计算机科学与技术学院enumBindingType{nobject,ncontext};structBinding{Namebinding_name;BindingTypebinding_type;};typedefsequenceBindingBindingList;山东大学计算机科学与技术学院interfaceNamingContext{voidbind(inNamen,inObjectobj);voidrebind(inNamen,inObjectobj);voidbind_context(inNamen,inNamingContextnc);voidrebind_context(inNamen,inNamingContextnc);Objectresolve(inNamen);voidunbind(inNamen);NamingContextnew_context();//命名环境的创建NamingContextbind_new_context(inNamen);voiddestroy();//命名环境的删除voidlist(inunsignedlonghow_many,//命名环境的列表outBindingListbl,outBindingIteratorbi);};山东大学计算机科学与技术学院6.2.4.2绑定Bind()在当前命名环境中命名一个对象–如对象ee与名为aa的环境对象绑定Bind_context():在当前命名环境中命名一个命名环境–在当前名为dd的环境对象中绑定另一个名为gg的环境对象aaeebbccddffgghh山东大学计算机科学与技术学院6.2.4.3解析从一个名字得到一个与之绑定的对象的操作复合名所定义的就是一条解析各个环境名的路径,直至到达简单名Objectsolve(inNamen)–返回的对象可能是一个被绑定的应用对象或命名环境,要将其narrow到合适对象类型山东大学计算机科学与技术学院6.2.4.4命名环境的列表voidlist(inunsignedlonghow_many,outBindingListbl,outBindingIteratorbi);列出当前命名环境中下一级所有绑定的名字山东大学计算机科学与技术学院6.2.4.5迭代器interfaceBindingIterator{booleannext_one(outBindingb);booleannext_n(inunsignedlonghow_many,outBindingListbl);voiddestroy();};山东大学计算机科学与技术学院附录1END山东大学计算机科学与技术学院6.2.5名字服务编程启动名字服务器实例化服务对象服务对象在名字服务器上注册客户在名字服务器上按名查找对象客户引发对象的方法山东大学计算机科学与技术学院支持无连接的,事件驱动的C/S通信方式事件服务定义了组件间消息传输的框架山东大学计算机科学与技术学院6.3.1事件服务体系结构suppliersupplierConsumerConsumerConsumerEventChannelPULLPULLPUSHPUSHPUSH山东大学计算机科学与技术学院提供者:负责生产事件数据(发布者)消费者:接收和处理事件数据(订阅者)事件通道:中转媒介,可实现多个消费者和提供者的异步通信两种事件数据传送模型:–push模型:事件的提供者起带头作用,发起事件的传送;–pull模型:事件的消费者起带头作用,向提供者请求事件数据。山东大学计算机科学与技术学院6.3.2事件服务push模型事件通道推消费者推消费者推提供者推提供者Push()Push()通知人山东大学计算机科学与技术学院事件服务pull模型事件通道拉消费者拉消费者拉提供者拉提供者Pull()Pull()获取者山东大学计算机科学与技术学院事件服务混合push/pull模型事件通道拉消费者拉消费者推提供者推提供者Push()Pull()队列山东大学计算机科学与技术学院事件服务混合pull/push模型事件通道推消费者推消费者拉提供者拉提供者Pull()Push()智能代理山东大学计算机科学与技术学院6.3.3事件服务结构事件通道消费者提供者提供者代理消费者代理山东大学计算机科学与技术学院事件服务push模型事件通道推消费者#1推消费者#2推消费者#3磁盘满磁盘满磁盘满推提供代理#1推提供代理#2推提供代理#3磁盘满事件提供者磁盘满推消费代理山东大学计算机科学与技术学院事件服务pull模型事件通道拉模式代理事件消费者拉模式事件消费者拉模式代理事件提供者事件提供者正常服务器正常吗?连接服务器:正常正常连接山东大学计算机科学与技术学院6.3.6模型使用步骤在事件通道一侧:1.从名字服务中获得事件通道工厂2.使用事件通道工厂创建事件通道3.将事件通道注册到名字服务中山东大学计算机科学与技术学院模型使用步骤在提供者一侧:1.从名字服务中获得事件通道2.创建一个供应者管理器3.从事件通道中为对端消费者在本地创建一个消费者代理4.将提供者与消费者代理连接,即向通道注册5.创建一个消息,并将消息推给消费者山东大学计算机科学与技术学院模型使用步骤在消费者一侧:1.从名字服务中获得事件通道2.创建一个消费者管理器3.从事件通道中获取一个提供者的代理4.将消费者连接到提供者代理,表示向同一通道注册山东大学计算机科学与技术学院附录2事件服务编程山东大学计算机科学与技术学院6.3.4事件服务EventchannelSupplierAdminProxyPushConsumerPushSupplierProxyPullConsumerPullSupplierConsumerAdminProxyPushSupplierPushConsumerProxyPullSupplierPullConsumer山东大学计算机科学与技术学院6.3.5接口——push模型接口moduleCosEventComm{……}interfacePushConsumer{voidpush(inanydata);voiddisconnect_push_consumer();};interfacePushSupplier{voiddisconnect_push_supplier();};山东大学计算机科学与技术学院pull模型接口moduleCosEventComm{……}interfacePullSupplier{anypull();anytry_pull(outbooleanhas_event);voiddisconnect_pull_supplier();};interfacePullConsumer{voiddisconnect_pull_consumer();};山东大学计算机科学与技术学院事件通道接口moduleCosEventChannelAdmin{……}interfaceEventChannel{ConsumerAdminfor_consumers();SupplierAdminfor_suppliers();voiddestroy();};interfaceEventChannelFactory{EventChannelcreate_eventchannel();};山东大学计算机科学与技术学院事件服务interfaceSupplierAdmin{ProxyPushConsumerobtain_push_consumer();ProxyPullConsumerobtain_pull_consumer();};interfaceConsumerAdmin{ProxyPushSupplierobtain_push_supplier();ProxyPullSupplierobtain_pull_suppl

1 / 105
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功