- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.命名服务的步骤.doc
PAGE 150
第一部分 第三届和谐人机环境联合学术会议
PAGE 149
普适计算的软件技术
基于CAR构件的命名服务机制的研究与实现
蒋伊婷,陈 榕
(同济大学 基础软件工程中心,上海 200092)
摘 要:CAR技术是面向构件的编程模型和编程规范,为更好地支持面向服务的软件体系架构,本文介绍了和欣操作系统中的命名服务机制,通过将一个构件和指定的字符串绑定来发布、获取、使用CAR构件。在阐述原理的基础上详细说明了命名服务中的等待注册、注册、使用和注销四部分的实现过程以及命名服务的优点所在。
关键词:命名服务;CAR;存根;代理;远程调用;和欣
1.引言资助项目:国家“863”计划资助项目(2001AA113400)
联系作者:蒋伊婷,E-mail: HYPERLINK mailto:yiting@ yiting@;陈榕,E-mail: HYPERLINK mailto:chenrong@ chenrong@
CAR(Component Assembly Runtime),即零部件运行单元[1],是国内自主知识产权的先进的构件技术,目前已在和欣操作系统[2] 、windows 2000上实现。CAR构件技术定义了一套网络编程时代的面向构件编程模型和编程规范,使得二进制构件能够自描述,能够在运行时动态链接,实现了软件的目标代码级的应用[1]。本文提出了一种通过将一个构件和指定的字符串绑定来发布、获取、使用CAR构件的方法,称为命名服务机制。命名服务通过简单友好的系统API函数,为系统服务以及用户构件提供了一套完整的CAR构件使用流程,具有良好的扩展性,并支持基于构件的动态更新和升级。
现有的客户端/服务器模式,客户端要使用服务器端的某种服务,以往我们采用的方式是通过列集/散集来完成对远程接口的调用,和欣操作系统的命名服务机制为客户端程序提供了一种查询机制,可以通过字符串形式的名称查询在服务器端有没有某种服务,如果有就可以使用,如果没有服务器端会返回错误通知,告知客户端没有相应的服务。服务的使用过程屏蔽了列集/散集等具体调用细节,向用户提供的是完全透明的服务。
和欣操作系统是面向SOA[3]设计的,而命名服务机制是目前在CAR中体现SOA架构的技术。
2.命??服务的原理
命名服务机制的实质是将一个构件和指定的字符串绑定[4]的过程,构件使用者可以远程通过字符串查询该构件,并获得构件服务。命名服务本身即可以作为一个单独的构件存在,亦可以作为内核功能的一部分。
远程服务构件在创建的时候会向内核注册相关信息,并建立存根,称为Stub,远程用户获得构件指针的时候在自己进程空间建立代理[5],称为proxy。
远程服务构件在内核注册的信息代表了该构件对象的存在,我们通过一个内核对象Object代表某个构件的注册信息,通过此信息,可以找到相关建立代理所必须的信息,另一方面,也可通过这些信息找到该远程构件以及构件服务相关信息。
如图1所示,命名服务的实现主要是通过在内核创建代表一个命名服务的对象NameHook, 然后将该对象与服务对象在内核的注册信息Object相绑定,NameHook,Object,Stub对象在系统里面存在一一对应的关系,这样通过字符串就可以找到相应的NameHook,通过NameHook则可以发现相应构件对象的Object,通过Object又可获得足够建立Proxy的信息。
图1 命名服务原理图
3.命名服务的步骤
命名服务的整体过程包括了四大部分:等待注册、注册、使用和注销。以下就每个部分所对应的函数代码作具体的分析。
3.1 等待注册命名服务
用户进程用函数EzWaitForService等待指定的命名服务被注册。输入参数为指定的服务名字和最长等待时间。
具体步骤如下:
1、在NameHook对象所组成的链表中查找是否有指定名字的服务,如有,则表示等待的服务已经被注册,可以立刻返回并使用该服务;
2、如果没有找到指定名字的服务,则把记录该服务名字的线程放入等待队列;
3、在设定的最长等待时间范围内,如果该线程被服务器端注册这个命名服务的线程唤醒,则可以使该线程退出等待队列,然后返回并使用该服务。
4、如果等待时间超过了设定的最长等待时间,则该线程退出等待队列并返回超时出错信息。
3.2 注册命名服务
服务器端通过函数EzRegisterService注册命名服务。该函数将一个字符串与一个构件接口[6]相绑定,实际上这里的构件接口可能是一个远程构件接口代理,也可能是一个本地对象接口指针,这样就分成两种情况做不同的处理,如图2所示。
图2 注册命名服务流程图
1、接口是一个远程构件接口代理,具体处理步骤如下:
1)通过接口代理,找到标识相应的Object对象的oid(oid
您可能关注的文档
最近下载
- 复旦大学介绍-PPT简介(经典版).pptx VIP
- 安徽省马鞍山市2020-2021学年九年级上学期期中物理试卷(word版 含答案).docx VIP
- 2025年儿科三基三严考试题库.doc VIP
- 品管圈PDCA参赛作品-血透中心提升维持性血液透析患者钙磷甲状旁腺激素合格率医院品质管理案例(1).pptx
- 2025耐碳青霉烯类革兰氏阴性杆菌感染的诊治和防控指南推荐意见(全文).pdf VIP
- 二零二三年 优质公开课10的认识.ppt VIP
- 基于统计方法的我国上市公司信用风险评估模型研究.pdf VIP
- 沙场转让合同协议书.docx VIP
- 数字医学专业介绍.pptx VIP
- 中国共产党纪律处分条例.pptx VIP
文档评论(0)