- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ICE中间件的RPC通信的设计与实现
基于ICE中间件的RPC通信的设计与实现
1、背景
在系统各模块的设计中,存在着诸多的远程接口,比如前端操作显示软件与后端调度服务软件之间、后端设计服务软件与订阅管理软件之间、后端调度服务软件与计算节点之间、计算节点与计算节点之间等都是通过RPC方式来完成的。为此必须对整个系统的RPC调用构思一种通用的方案,且能够很方便实现各接口。
本文的目的正是探索一种通用的解决方案,对整个平台的RPC通信提供支持。
由于移植现有的NMSTL中的PRC存在如下不足:
一、移植NMSTL 的 RPC 时间长,ICE直接学会并使用即可。
二、为了在 Windows 和 Unix 平台保持系统通用。移植的 NMSTL 只能在 Windows 下或 Unix 下用。
为了克服以上缺点,选择ICE中间件,利用其提供的RPC机制设计方案。
2、方案设计
2.1 接口设计
此部分主要用于描述服务器与客户端进行通信的接口,使用ICE中间件平台专用的Slice来进行定义(具体参照Slice语法规范)。这是一种用于使对象接口与其实现相分离的基础性抽象机制,在客户与服务器之间建立合约,描述应用所使用的各种类型及对象接口。
利用编译器将这种与语言无关的定义翻译成针对特定语言的类型定义和API,这里利用slice2cpp编译器将slice定义映射成服务器端的框架文件和客户端的代理文件。
如有远程接口void add_xml_string(string xml);用slice语言描述如下:
demo.ice (其中.ice是slice接口描述文件的后缀名)
module demo
{
interface RpcMethod
{
void addXmlStringRpc(string xml);
};
};
说明:module demo表示接口的命名空间,每个interface编译后都会生成一个抽象class与之对应,interface中的每一个方法都会生成在抽象类中有一个纯虚函数与之对应。
接下面用编译器将demo.ice编译成存根和框架文件,
会生成demo.h和demo.cpp两文件。
2.2 服务器端设计
2.2.1 服务器端功能设计
(1) 服务Servant的实现:
也就是接口设计中所描述操作的具体实现。对于在slice文件中所定义的每个interface都会在框架中生成一个具体的抽象类class,而对于接口中每个操作都会在对应的抽象类中生成一个纯虚函数。因此服务Servant的实现过程就是去继承此抽象类,然后具体地去实现这些纯虚函数即可。
如上述2-1中的demo.ice编译后生成框架中包含一个对应类RpcMethod:
class RpcMethod : virtual public ::Ice::Object
{
public:
virtual void addXmlStringRpc(const ::std::string, const ::Ice::Current = ::Ice::Current()) = 0;
……
}
服务Servant的实现即继承上面的抽象类并实现其纯虚函数,具体来说:
class RpcMethodI: public RpcMethod{
public:
virtual void rpcAddXmlString(const ::std::string xml, const ::Ice::Current current){
//这里面是业务代码,即具体RPC方法的应用逻辑
……..
}
}
(2) 服务端RPC通信环境的建立:包括ICE通信器的建立、对象适配器的产生、服务Servant服务的注册等。
服务端RPC通信环境的建立分为如下几个步骤:
服务端ICE通信器即Ice::Communicator的建立:通信器的一个实例是与服务器端一些运行资源关联在一起的,包括服务端线程池、日志记录器、对象适配器等。
② 对象适配器即Ice::ObjectAdapter的创建:一个通信器可以有一个或多个对象适器, 一个对象适配器则可以有一个或多个Servant服务。它把Ice对象映射到到来请求的 servant,并把请求分派给每个servant中的应用代码(也就是说,对象适配器实现 了一个向上调用接口,把Ice run time 与服务器中的应用代码连接在一起)。
③ Servant服务到对象适配器的注册:每一个实现了的Servant服务必须注册到对象适配 器中才能生效,每个对象适配器都会维护一个叫做活动Servant表的数据结构,活动 映射表用于把对象标识映射到servant中,
您可能关注的文档
最近下载
- 《七律二首 送瘟神》-中职语文高二同步课件精选(高教版2023·职业模块).pptx VIP
- 高考蓝皮书·物理试题分析2025.docx VIP
- 综合实践活动 开学第一课 2024-2025学年综合实践活动开学第一课课件.pptx VIP
- 高标准农田监理大纲方案投标文件(技术方案).doc
- 小儿过敏性休克抢救流程.pptx VIP
- 液压与气压传动技术完整整套教学课件.pdf VIP
- 技术标投标文件监理大纲.doc VIP
- 2025 年成都市三年级数学秋季开学摸底考 - 冲刺卷及答案(北师大版).docx VIP
- 最新2025年《初中初三开学第一课》全文.pptx VIP
- 姓氏的由来演讲课件(张姓).pptx VIP
文档评论(0)