为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

高级软件工程05(IIOP、现有产品、开发过程)

2010-10-21 39页 ppt 129KB 35阅读

用户头像

is_082674

暂无简介

举报
高级软件工程05(IIOP、现有产品、开发过程)nullnull8 IIOPIIOP:Internet Inter-ORB Protocol 基于Internet的ORB间互操作协议 GIOP的一个实例 GIOP:General Inter-ORB ProtocolIIOPnull 内 容 GIOP设计目标 GIOP功能 CDR GIOP消息格式 GIOP传输假定 IIOP消息传输IIOPnull最大可能范围的可用性 基于最广泛使用和灵活的通讯传输机制(TCP/IP) 并定义在ORB之间传输请求所需的其它协议 简单性 可扩展性 它们的大小接近或超过今天I...
高级软件工程05(IIOP、现有产品、开发过程)
nullnull8 IIOPIIOP:Internet Inter-ORB Protocol 基于Internet的ORB间互操作 GIOP的一个实例 GIOP:General Inter-ORB ProtocolIIOPnull 内 容 GIOP设计目标 GIOP功能 CDR GIOP消息格式 GIOP传输假定 IIOP消息传输IIOPnull最大可能范围的可用性 基于最广泛使用和灵活的通讯传输机制(TCP/IP) 并定义在ORB之间传输请求所需的其它协议 简单性 可扩展性 它们的大小接近或超过今天Internet的大小(1) GIOP设计目标IIOPnull低耗费 对现有的或新的ORB设计添加对GIOP/IIOP的支持 应该需要小量的投资 一般性 IIOP开始是为TCP/IP定义的 GIOP设计为在其它面向连接的传输协议上实现 体系结构 中立性 GIOP将ORB看成体系结构未知的不透明实体。IIOPnull少量、简单消息 仅仅用七个消息格式 GIOP就可以支持ORB之间的全部CORBA功能 以及支持对象地点服务的 扩展功能 动态迁移 和 对通讯资源的有效管理 GIOP语义不要求格式或绑定协议 在大多数情况下 客户可以在打开连接后立即向对象发送请求 动态对象地点 许多ORB的体系结构 允许 在不同地点激活还没有过期的对象实现 并且 允许动态迁移对象 GIOP消息为对象地点和迁移提供支持 但在不需要或不适合ORB的体系结构时 不要求ORB实现这样的机制(2) GIOP功能IIOPnull完全的CORBA支持 GIOP消息直接支持CORBA要求的所有功能和行为 包括例外情况、传送操作环境和远程对象引用操作 (例如CORBA::Object::get_interface) GIOP支持传送特定于服务的环境 例如由事务服务定义的事务环境 该机制的设计目的是 支持要求在请求中隐式传送与服务相关环境的任何服务IIOPnull(3) 公共数据示(CDR) CDR是传输语法 它将用OMG IDL定义的数据类型映射到 双向规范的低级表示 以便在代理之间进行传输 CDR有如下功能: 可变的字节次序 有公共字节次序的机器 可以在不进行字节交换的情况下进行消息交换 当与字节次序不同的机器进行通讯时 消息发起者决定消息字节次序 接收者负责交换字节以便匹配它的本地次序 每个GIOP消息(以及CDR封装)包含 指出正确字节次序的标记IIOPnull对齐的主类型 在GIOP消息内基本OMG IDL数据类型 在它们的自然边界对齐 这样强制在内存中进行数据对齐的体系结构 可以有效地处理它们 完整的OMG IDL映射 CDR描述所有OMG IDL数据类型 (包括可传输的伪对象,例如TypeCode)的表示 如果需要,CDR为CORBA Core规范中 表示未定义或与实现有关的数据类型定义表示方法IIOPnullmodule GIOP { enum MsgType { Request, Reply, CancelRequest, LocateRequest, LocateReply, CloseConnection, MessageError }; struct MessageHeader { char magic [4]; Version GIOP_version; boolean byte_order; octet message_type; unsigned long message_size; }; (4) GIOP 消息格式IIOPnull(5) GIOP 传输假定传输是面向连接的 GIOP使用连接来定义请求ID的作用域和范围 传输是可靠的 传输保证字节按发送时的次序至多传输一次 并且有一些传输的肯定确认 传输对错误的连接丢失提供一些合理的 如果对等进程失败、对等主机崩溃或者网络连接丢失 则连接所有者应该接收到这种情况的一些通知 初始化连接的传输模型可以映射到TCP/IP的一般连接模型 代理将已知的网络地址发布在IOR中 客户在初始化连接时使用它IIOPnull 服务器不主动初始化连接 但它准备接收对连接的请求 例如,它侦听TCP/IP terms的连接 其它知道地址的代理(称为客户)可以 尝试通过对地址发送connect请求来初始化连接 侦听的服务器可以 接受请求、与客户建立新的唯一连接 或者它可以拒绝请求 一旦连接打开后,两端都可以关闭连接 候选的传输协议可能不直接支持这种特定的连接模型 只有传输模型可以映射到该视图才是必要的IIOPnull(6) IIOPOMG为GIOP指定的基线传输协议是TCP/IP 用于支持TCP/IP的库的特定API可以不同 GIOP消息传输到TCP/IP的映射称为 Internet Inter-ORB协议(IIOP)IIOPnullmodule IIOP { // IDL struct Version { char major; char minor; }; struct ProfileBody { Version iiop_version; string host; unsigned short port; sequence object_key; }; };IIOP IORIIOPnull9 ORB 产品IONA 公司的Orbix Inprise公司的visibroker Digital公司的ObjectBroker IBM公司的ComponentBroker OOC公司的OminiBroker Frankfurt 大学的MICOORB 产品nullIONA公司的Orbix 是目前市场占有率最高的ORB产品 已经在金融、电信等多个领域得到广泛应用 目前在 UNIX Windows 95/NT MVX等 多种操作系统上运行 对IDL的映射基本上包含了CORBA规范的内容 例如C++、Java、Ada、Cobol等 所实现的COS包括Naming Service、Event Service、 Transaction Service、Security Service、Event Service等 另外IONA公司还提供了ORB与DCOM的桥接产品:OrbixCOMet 以及完全用Java 实现的ORB:OrbixWeb 可以被WEB浏览器加载,增强WEB功能 网址:www.iona.comOrbixORB 产品nullVisibroker 1997年11月原Borland公司与Visigenic公司合并成立Inprise 原属于Visigenic公司的ORB产品Visibroker 成为Inprise的重要产品 并被集成到Delphi 4.0 中 Visibroker 对IDL的映射包括:C++、Java 所实现的COS包括Naming Service、Event Service等 Visibroker已经被集成到Netscape 的Communicator中 在其它嵌入式系统中也有所应用 网址:www.inprise.comORB 产品nullObjectBroker 这是中间件厂商BEA公司从Digital公司获得的ORB产品 已经被集成到BEA的其它环境之中 主要完成了向C++的映射 所实现的COS包括 Naming Service Event Service Transaction Service等 M3是BEA的一个集ORB、COS等功能于一身的产品 网址:www.beasys.comORB 产品nullComponentBroker IBM公司的ORB增强产品 IBM最初曾提出兼容CORBA规范的DSOM模型 随着CORBA规范的逐步完善 IBM将模型中与ORB直接相关的部分抽取出来 称之为ComponentBroker ComponentBroker完成的IDL映射包括 C++ Java Smalltalk COBOL等语言 所实现的COS包括Naming Service Event Service Transaction Service Concurrent Services等 网址:www.software.ibm.comORB 产品nullOB 美国OOC公司开发ORB产品──OB(OmniBroker) 最初是完全free的 其所有源代码皆可以自由下载 完成的IDL包括C++、Java OB所实现的COS包括Naming Service、Event Service等 1998年开始,OOC以OB为核心实现了商业ORB产品:Orbacus 所实现的COS增加了Trading Service、Security Service等 网址:www.ooc.comORB 产品nullMICO 德国Frankfurt大学开发的ORB产品──MICO(Mico Is COrba) 所完成的IDL包括C++、Java 所实现的COS包括Naming Service Event Service Security Service等 自2.0开始,MICO的版本号与CORBA的正式版本号同步 目前为2.31版 MICO是为教育目的而开发的 并且采用了与Linux类似的发展途径 版权归GNU组织 因而具有较好的发展前景 网址:www.vsb.cs.uni-frankfurt.de/~mico/ORB 产品nullClient developerServer developer ServerIDL compilerIDL compilerClientIDL 10 CORBA应用程序开发过程开发过程例子 - Grid Object例子 - Grid ObjectGrid objectserverremote calls123581321345589144233width height get(row,col) set(row,col,value)client开发过程Step-by-StepStep-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 InterfaceAn IDL Interfaceinterface Grid { readonly attribute short height; readonly attribute short width; void set(in short row, in short col, in long value); long get(in short row, in short col); }; 开发过程编译成 C++:编译成 C++:ORB client libraryORB server librarygridS.cc server skeletongridC.cc client stubsClientServergrid.hh common declarationsgrid.idl开发过程IDL to 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:所产生的 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 ClientWriting a Client#include “grid.hh” #include 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; };开发过程如何工作?如何工作?Grid implementationserverremote CORBA callsclientC++ callsGrid proxy - a local C++ object开发过程Implementing the InterfaceImplementing the Interface 编写一个 C++ class  继承 ORB functionality  加入数据成员以及其它 C++ 函数 - 根据具体的需求  重定义 IDL 函数 - 提供具体的功能 开发过程Grid implementationGrid implementation// Define a C++ implementation class Grid_i // Inherit distributed capability #include ”grid.hh” class Grid_i: public virtual GridBOAImpl { // Add application data and functions short m_height, m_width; long **m_array; public: Grid_i(short h, short w); // Constructor virtual ~Grid_i(); // Destructor开发过程Grid_i 还包括...Grid_i 还包括... // Re-define the IDL functions 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&); };开发过程 IDL 具体功能 IDL 具体功能 virtual CORBA::Short Grid_i::width(CORBA::Environment &) { return m_width; } virtual CORBA::Short Grid_i::height(CORBA::Environment &) { return m_height;} virtual void Grid_i::set (CORBA::Short row, CORBA::Short col, CORBA::Long value, CORBA::Environment&); { m_array[row][col] = value; } CORBA::Long Grid_i::get (short row, short col, CORBA::Environment &) { return m_array[row][col]; }开发过程什么是 ‘server mainline’?什么是 ‘server mainline’? server 是 objects的 容 器 - ORB 能激活的可执行代码  ‘server mainline’ - 在server中创建初始对象 - 将控制权交给 ORB 以等待调用。  各个对象分别实现自己的功能 - ORB 将接受到的调用分发给具体的对象。开发过程编写 server mainline编写 server mainline#include “grid_i.h” #include 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 serverRegistering the server Servers 可以由 ORB 自动启动 - 响应客户请求  注册过程告诉 ORB: - 哪个可执行代码是服务器 - 服务器的激活模式 - 安全等功能  存在多种激活模式 - 共享服务器,独享服务器等开发过程编程小结编程小结 从 IDL起步 - client 与 server 间的契约  编写Client 与 server 代码 - ORB 支持的代码是从 IDL产生的。ORB 负责对象的分布,用户可以将精 力放在具体应用程序的功能上,而不 是实现技术上。开发过程CORBA小结CORBA小结1、OMG与CORBA 2、CORBA对象模型 3、CORBA概述 4、IDL 5、ORB接口 6、IR 7、POA 8、IIOP 9、ORB产品 10、开发过程其他相关问题其他相关问题CCM:CORBA Component Model CORBA /COM interworking CORBA Common Object Service ...
/
本文档为【高级软件工程05(IIOP、现有产品、开发过程)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索