当前位置:文档之家› 中间件大作业_OmniORB调研及实例

中间件大作业_OmniORB调研及实例

中间件技术大作业OmniORB调研及实例学院(系):软件学院专业:网络工程学生姓名:梁博文学号:200992134 指导教师:胡燕完成日期:2012-3-30大连理工大学Dalian University of Technology1.CORBA简介 (II)1.1CORBA的含义 (II)1.2CORBA的产生背景 ................................................................................. I II1.3CORBA的用途 ......................................................................................... I II1.4CORBA的优点 ......................................................................................... I II2.CORBA规范................................................................................................... I V2.1CORBA规范的发展进程[21个版本]...................................................... I V2.2CORBA规范的设计哲学 (V)3.OmniORB: ......................................................................................................... V I3.1什么是OmniORB ...................................................................................... V I3.2OmniORB的体系结构.............................................................................. V I3.3OmniORB4.1.X的特点 (VII)3.4OmniORB4.1.4的编程过程简介:.......................................................... I X3.4.1OmniORBIDL文件的书写和编译................................................. I X3.4.2OmniORB对象实现 ....................................................................... X I3.4.3OmniORB客户端程序的编写 (XII)3.5OmniORB4.1.4在Windows环境下的配置过程: ............................. X III3.6OmniORB4.1.4的简单实例 (XV)3.6.1OmniORB使用IOR编写服务器端和客户端的实例——TimeTestXVI3.6.2OmniORB使用对象名字服务编写服务器端和客户端的实例——血型占卜..................................................................................................... X XI3.6.3OmniORB与其他ORB交流实例——echo (XXV)1.CORBA简介1.1 CORBA的含义CORBA(Common Object Request Broker Architecture,通用对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程序体系规范,是OMG为了解决分布式处理环境中硬件和软件系统的互连而提出的一种解决方案。

它允许客户访问处于远程服务对象,而无需知道它的位置、实现服务所用的编程语言、操作系统平台等。

1.2 CORBA的产生背景面向对象技术的兴起客户/服务器模式的普遍应用集成已有系统及通信和实现细节的需求现有分布处理机制和方法存在着不足之处。

1.3 CORBA的用途存取来自现行桌面应用程序的分布信息和资源使现有业务数据和系统成为可供利用的网络资源为某一特定业务用的定制的功能和能力来增强现行桌面工具和应用程序改变和发展基于网络的系统以反映新的拓扑结构或新资源1.4 CORBA的优点在统一的标准下不同厂商的、不同时期的、不同程序设计风格的、不同编程语言的、不同操作系统的、不同平台上的软件或软件部件都可以进行交流与合作2. CORBA规范2.1C ORBA规范的发展进程[21个版本]1991.08 CORBA 1.0规范发布1991.12 CORBA 1.1规范发布1991 第一个遵循CORBA规范的商业产品进入市场1993.12 CORBA 1.2规范发布1994 CORBA 2.0 规范发布, 包括了CORBA互操作规范1995 遵循CORBA 2.0规范的商业产品进入市场1997.09 CORBA 2.1规范发布,包括了COM/CORBA互操作规范1998.02 CORBA 2.2规范发布,增加了POA,Java语言映射等1999.06 CORBA 2.3规范发布,增加了传值调用,Java到IDL的反向映射,DCOM/CORFBA互操作等,并对语言映射部分进行了调整2000.10 CORBA 2.4规范发布2001.09 CORBA 2.5规范发布2001.12 CORBA 2.6规范发布2002.05 CORBA 2.6.1规范发布2002.06 CORBA 3.0规范发布,增加了异步消息传输对象传值,Ja va到IDL反向映射,Internet 防火墙,最小CORBA,实时CORBA 等内容2008.01 CORBA 3.1规范发布2011.08 CORBA 3.1.1规范发布2011.11 CORBA 3.2规范发布参考网站:/spec/CORBA/图2.1.1CORBA规范参考网站截图2.2 CORBA规范的设计哲学CORBA允许在不同对象间尽可能透明地传递请求应用可以跨越不同的应用领域支持服务(例如,名址映射)位于CORBA之外CORBA具有平台无关性可以工作于不同的操作系统和网络环境下客户和服务器可以位于不同的平台上CORBA具有编程语言无关性可以支持多种编程语言(面向对象及非面向对象的语言)客户和服务器可以使用不同的编程语言开发3. OmniORB:3.1 什么是OmniORBOmniORB是由AT&T剑桥实验室开发的一个免费ORB产品,该产品的3.0版完全遵循CORBA 2.3规范,4.x版本遵循CORBA2.6规范,OmniORB 自1997年开始成为GNU公开许可证(GNU Publi c Licence)的免费软件。

最新稳定版本OmniORB4.1.6下载地址/project/showfiles.php?group_id=51 138&package_id=44914&release_id=6297083.2 OmniORB的体系结构3.3OmniORB4.1.X的特点(1)OmniORB支持的操作系统:Windows 32 and 64 bit with Visual C++ version 5.0 and above LinuxSolaris 2.{5,6,7,8} / Sun C++ version 4.2 and above, or GCC 2.95 and aboveMac OS XHPUX 11.00/ aC++HPUX 10.20/ aC++ (B3910 A.01.04)SGI Irix 6.x/ SGI C++ compiler 7.2Tru64 / Digital Unix 4.0D/ DEC C++ compiler version 6.0IBM AIX 4.2/ IBM C Set++ 3.1.4 and xlC 5.0 (Visual Age C+ + 5.0)IBM AIX 4.3/ IBM C Set++ 3.6.6 and xlC 5.0 (Visual Age C+ + 5.0)OpenVMS Alpha 6.2/ DEC C++ compiler 6.2/5.5 (UCX 4.1 EC O 8)OpenVMS Vax 6.1/ DEC C++ compiler 5.5 (UCX 4.0 ECO 1) NextStep 3.3/ gcc-2.7.2Reliant Unix 5.43/CDS++Phar Lap's Real Time ETS KernelSCO Unixware 7Fujitsu Siemens BS2000(2)OmniORB支持的语言:C++、Python(3)OmniORB依附于CORBA2.6规范(4)支持与其他CORBA ORB的互操作(5)支持IPv6(6)支持GIOP和IIOP协议1.0、1.1、1.2版本(7)抽象接口支持(8)本地接口支持(9)C++ mapping1.1版本支持(10)抽象值传递(11)动态调用接口和动态Skeleton接口支持(12)完整名字服务OmniNames(13)Unix系统socket传输支持(14)支持安全Socket层传输互操作(15)灵活线程管理(16)支持wchar,wstring 和字符集协商(17)long long类型, long double类型, 定点类型数据支持.3.4 OmniORB4.1.4的编程过程简介:图3.4.1OmniORB编程过程示意图3.4.1 OmniORBIDL文件的书写和编译3.4.1.1 OmniORB接口定义语言(IDL)简介OMG IDL语言(Interface Definition Language)是一种独立于编程语言、下层网络和具体实现的数据类型和服务接口描述语言OMG IDL语言借鉴了C++语言的语法,去掉了其中涉及实现语义的内容,同时添加了若干适用于分布式系统的特征OMG IDL语言基本数据类型:short,long,long long (signed/unsigned)float,double,long doublechar,wchar,boolean,octetOMG IDL语言构造类型:struct,union,enum,sequence,string,wstring,arrayAny对象引用3.4.1.2OmniORB IDL的书写方法XXX.idl:#ifndef __XXX_IDL__#define __XXX_IDL__module XXX{interface ServiceA{boolean CallServiceRoutineA ( in long para1,inout long para2,out long retpara );string CallServiceRoutineB ( inout long para1,inout long para2);};};#endifModule相当于C++中namespace,Interface相当于C++中的Class,bo olean CallServiceRoutineA ( in long para1,inout long para2, out long retpara )和string CallServiceRoutineB ( inout long para1, in out long para2);相当于C++中的函数,注意参数中定义输入输出类型(in,out,inout)默认为In模式图3.4.2 IDL语言与C++语言数据类型对应图3.4.1.3 OmniORBIDL文件的编译方法首先配置相应OmniORB环境并编写IDL文件打开命令提示行,在IDL文件的路径下输入omniidl –bcxx IDL文件名.idlIDL经omniidl.exe编译后生成.hh文件和.cc文件3.4.2 OmniORB对象实现利用idl生成的框架类编写servant类编写main函数从ORB初始化开始考虑POA的策略,简单的程序可以使用默认的RootPOA创建servant并注册处理对象引用(本地实现方法、IOR实现方法、名字服务实现方法)进入主循环阻塞方式:orb->run()非阻塞方式:orb->work_pending()orb->perform_work()3.4.3 OmniORB客户端程序的编写用IDL生成stub代码以及类型定义头文件在客户的main函数中,初始化orb,获得orb对象获得对象引用(本地实现方法、IOR实现方法、名字服务实现方法),并调用_narrow向下转换调用对象的方法如果使用DII,则需要用到请求对象,并处理参数如果不用_var类型的话,释放orb和对象引用3.5 OmniORB4.1.4在Windows环境下的配置过程:1).从/project/showfiles.php?group_id=51138&pac kage_id=44914&release_id=629708下载相匹配的win32版本.我用的是Visual Studio 2008,所以下载omniORB-4.1.4-x86_win32-vs9.zip。

相关主题