- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级软件工程05(IIOP、现有产品、开发过程
例子 - Grid Object Step-by-Step Define the IDL interface Compile the IDL interface Write a client Implement the interface Write a server mainline Register the server An IDL Interface 编译成 C++: IDL to C++ 映射 ? IDL operations (操作)映射为 C++ 的成员函数 - parameter types 映射为 C++ types ? IDL attributes (属性)映射为 C++的成员函数 - 一个用于获取值 - 另一个用于设置值 (如果不是只读属性) ? IDL data types 映射为 C++ data types ? 一 个 interface 映射为一个 C++ class. 所产生的 C++ code: class Grid : public virtual CORBA::Object { public: static Grid_ptr _bind(....); virtual CORBA::Short height(CORBA::Environment); virtual CORBA::Short width(CORBA::Environment); virtual void set(CORBA::Short row, CORBA::Short col, CORBA::Long value, CORBA::Environment ); virtual CORBA::Long get(CORBA::Short row, CORBA::Short col, CORBA::Environment ); }; Writing a Client #include “grid.hh” #include iostream.h main () { Grid_var p; // Like a C++ pointer // Connect to a remote Grid object p = Grid::_bind(“myGrid:GridSrv”, GridHost); // Now use it like a regular C++ object cout “height is “ p-height() endl; cout “width is “ p-width() endl; p-set(2,4,123); // a remote call cout “grid[2,4] is “ p-get(2,4) endl; }; 如何工作? Implementing the Interface ? 编写一个 C++ class ? 继承 ORB functionality ? 加入数据成员以及其它 C++ 函数 - 根据具体的需求 ? 重定义 IDL 函数 - 提供具体的功能 Grid implementation Grid_i 还包括... IDL 具体功能 什么是 ‘server mainline’? ? server 是 objects的 容 器 - ORB 能激活的可执行代码 ? ‘server mainline’ - 在server中创建初始对象 - 将控制权交给 ORB 以等待调用。 ? 各个对象分别实现自己的功能 - ORB 将接受到的调用分发给具体的对象。 编写 server mainline #include “grid_i.h” #include iostream.h main() { // Create some initial objects // (only one in this case) Grid_i myGrid(100,100); try { //Give control to the ORB CORBA::Orbix.impl_is_ready(); } catch { .... } cout “Server terminating” endl; } Registering the server ? Servers 可以由 ORB 自动启动 - 响应客户请求 ? 注册过程告诉 ORB: - 哪个可执行代码是服务器 - 服务器的激活模式 -
原创力文档


文档评论(0)