【VC++开源代码栏目提醒】:本文主要为网学会员提供“CORBA辅助编程工具 - 计算机教材”,希望对需要CORBA辅助编程工具 - 计算机教材网友有所帮助,学习一下!
喜欢就收藏把、 2.1.4 CORBA辅助编程工具ORB作为分布式对象计算的中间件利用它的可复用基础架构infrastructure极大地简化了分布式应用程序的开发并且通过应用层的IIOP协议解决了在分布异构平台上对象之间进行互操作的问题成为事实上的工业标准。
同时ORB平台也为基于构件的软件开发提供了良好的运行支撑环境特别是解决了构件之间动态互连的问题这对构件组装具有重要意义。
但是ORB程序的开发比较繁琐需要手工完成许多重复的、易出错的工作如编译IDL文件生成Stub和Skeleton、编写ORB初始化
代码、声明ORB变量、修改对象实现的框架并填写实现内容、编写服务器运行
代码以及修改其它可视化开发环境的设置或者自己编写Makefile等等。
因此良好的程序开发辅助环境或工具有助于提高CORBA应用实现者的开发效率。
本课题实现的CORBA辅助开发工具的主要出发点是增强现有ORB产品的开发环境同时通过自动生成ORB的连接
代码来为构件组装工具ABCTool提供在ORB上的支持实现前面描述的规约/组装构件模型到实现模型的映射。
2.1.4.1工具概述 辅助开发工具的主要目标是简化CORBA程序的开发并对ABCTool提供支持。
CORBA的接口定义语言IDL分离了接口的定义与实现进而有效分割了客户程序与服务器程序的开发但也因此为客户端实现者与服务器端实现者提供了不同的视图导致两种程序开发流程上有较大的差异。
所以我们的工具相应地分为客户端辅助开发工具和服务器端辅助开发工具两部分这样既提供了不同的逻辑视图也便于实现不同的可自动化编程机制。
同时通过IDL文件保证两种工具的使用可分可合。
服务器端辅助工具的主要功能是根据用户提交的Server端和CORBA环境相关的信息自动生成特定于具体CORBA实现的
代码框架以及Makefile文件尽可能地隐蔽和CORBA环境相关的
代码使得用户能够专注于实现应用逻辑的
代码同时提供必要的集成开发环境使开发者能够方便地和已有的
代码框架进行交互构造出符合要求的Server端应用程序。
客户端辅助工具的主要功能包括从存储接口信息的接口池中读取接口信息并提供图形化的接口信息显示根据用户的要求自动生成Stub、ORB初始化
代码和接口调用
代码代理用户还可以使用拖放drag-and-drop的方式插装代理调用语句引入外部可视化编程工具中开发的界面
代码并将其与ORB代理集成以及自动生成编译集成后程序的Makefile文件。
辅助开发工具与ABCTool的集成是通过IDL文件来进行的。
如前所述在ABCTool中可以从构件类型或复合构件中生成相应的IDL描述。
当工具生成的EJB系统是作为一个CORBA服务来运行时使用这个服务的客户端程序可以通过由该系统得到的IDL描述用客户端辅助工具来生成实用系统服务的连接
代码而当工具所要组装的系统中使用到非EJB构件的时候例如是用遗产系统中的构件可以为这个构件生成IDL描述然后利用服务器端辅助工具为其生成CORBA的包装
代码这样新系统就可以通过ORB来调用构件的服务了。
从而我们使用辅助工具为ABCTool组装工具提供了在ORB上的支持使得组装工具更具有普适性。
2.1.4.3 服务器端辅助工具的实现 .1 CORBA服务程序的一般开发流程 一般来说一个基本的Server应用程序应该包括下列部件 所提供的服务的IDL描述 IDL中的每个接口的实现类的声明及实现 静态IDL Skeleton 动态Skeleton接口DSI可选 Server主函数 相应的Server端程序开发的一般步骤 a 写出本Server对Client提供的操作的IDL描述并以IDL文件的形式来记录和存储。
IDL文件是文本格式的文件。
b 用IDL编译器对IDL文件进行编译生成Client端的静态Stub和Server端的静态Skeleton以及相应的头文件还可以生成实现类的
代码框架。
c 填充实现类框架实现应用逻辑。
d 开发Server主函数。
其中主函数主要完成下列工作 创建实现类对象实例。
调用CORBA::BOA::impl_is_ready完成ORB及BOA初始化工作进入消息循环等待处理Client端发来的请求。
e 编译链接生成可运行文件。
可见开发基于CORBA的应用程序过程是复杂和烦琐的需要大量的手工操作并了解CORBA的相关知识。
服务器端辅助工具从自动生成
代码框架和屏蔽于应用无关的信息入手为用户提供了一个友好的开发环境。
.2系统功能与体系结构 服务器端辅助工具的主要功能为根据Server端和CORBA环境相关的信息生成特定于具体CORBA实现的
代码框架以及Makefile文件尽可能地把和CORBA环境相关的
代码和特定于应用的
代码隔离同时提供必要的集成开发环境使开发者能够方便地和已有的
代码框架进行交互构造出符合要求的Server端应用程序。
服务器端辅助工具系统体系图如下 基本
代码框架以及Makefile的生成集成开发环境接口信息的获取基本Server信息基于CORBA的Server应用程序Make用户交互图4.1 服务器端辅助工具系统体系示意图 其中首先是用户通过手动方式填写Server信息然后开发工具根据Server信息以及相应的接口信息和CORBA环境信息生成
代码框架最后进入集成开发环境由用户填充已生成的
代码框架构造出完整的Server应用程序并进行编译。
.3系统设计 .3.a Server信息 Server信息是整个工具的核心数据结构其中记录了开发者所关心的所有和Server应用程序相关的信息所包含的各种信息可以分为几大部分 IDL文件信息 对于基于CORBA的Server端应用程序来说最核心的信息是该Server的IDL文件信息。
它包括下面几方面的内容 本Server向外提供的服务的IDL描述必须 本Server向Client发出回调Call Back所需的Client端的回调接口的IDL描述可选 本Server需要请求的其他Server服务接口的IDL描述可选 由于本Server需要请求的其他Server可能不只一个对于它们中的每一个而言如果它需要向本Server发回调请求本Server应该为它提供相应的回调接口IDL描述可选 IDL编译选项信息 IDL编译选项是IDL编译器在对IDL文件进行编译时针对不同的编译及
代码生成要求所设置的一些开关。
不同的CORBA实现都有自己专有的IDL编译器因此在IDL选项的功能和格式上各不相同。
但是通过分析能够总结出各种IDL编译选项中的一些具有共性的开关设置例如对象实现采用BOA方式还是TIE方式、是否为IDL文件中所包含的其他IDL文件生成
代码等。
CORBA高层服务信息 一个Server在自己提供服务的同时可能需要一些CORBA高层服务的支持例如NamingService、Event Service、Object Transaction Service等因此就需要保存相关的信息。
在目前工具中实现了对Naming Service的支持 对于Naming Service的使用主要保存的信息是名空间的结构信息以及名字和实际对象的绑定信息。
平台信息 平台信息包括两方面的内容 本Server基于哪一个具体的CORBA产品。
本Server采用的编程语言环境以及底层操作系统运行环境。
目前已经完成的开发工具所支持的CORBA产品是IONA公司的Orbix。
所支持的语言开发环境有Windows NT或Windows98下的Microsoft Visual C和Solaris下的CC编译链接环境。
在工具中加入平台信息主要目的是为使开发工具自身能够更好地扩展尽可能多地支持各种CORBA实现平台以及编程语言环境。
Make信息 在对已经构造好的Server应用程序源
代码进行编译链接的时候需要采用Makefile来对其中的文件依赖关系以及编译链接过程进行控制。
一般的CORBA实现都需要开发者手动编制Makefile。
这项工作对于开发者来说是很复杂烦琐且容易出错的主要是因为 基于CORBA的Serve应用程序本身结构比较复杂 CORBA环境的引入增加了正确设置编译链接选项的复杂性 基于上述考虑在设计开发工具时Makefile的自动生成以及开发者在开发环境中与Makefile信息的交互就成了开发工具的一个非常重要的功能。
而影响Makefile生成的除了一般性的Server信息之外还有一些特定于具体编程语言及运行环境的可以由开发者定制的信息。
这些信息可以归结为三大类 目标类 这类信息有最终的Server可运行文件名、链接时所需的目标文件以及库文件等。
选项类 这类信息有Debug/Release版、与库文件的链接方式动态/静态、是否支持多线程等。
环境类 这类信息有头文件的包含路径C源文件以及IDL文件、库文件的搜索路径等。
其他信息 其他的一些信息还有 Server应用程序的项目名。
一个完整的Server应用程序称为一个项目它包含了所有和该Server相关的信息。
代码框架的生成以及集成开发环境的交互都围绕该项目来进行。
Server应用程序项目所在的工作目录。
关于实现类具体信息的三元组序列。
.3.b
代码框架的生成
代码框架的生成是工具的核心功能建立在所获得的Server信息的基础主要包括以下四个部分 实现类框架 在已有的Orbix的IDL编译器生成的实现类
代码框架的基础上根据Server信息对它们进行改造和定制。
把原来很多需要开发者手动进行的改造和定制工作利用开发工具自动完成生成符合开发者要求的实现类框架使得用户只需填入相关的应用逻辑。
主函数 根据相关的Server信息确定需要包含哪些头文件以及如何定义缺省的实现类对象实例并生成Main函数的框架。
Makefile 根据相关的Server信息确定对Server应用程序进行编译链接时的选项以及文件依赖关系自动生成可编译的Makefile。
为NamingService自动生成的
代码段 开发工具对NamingService所提供支持就是根据开发者提交的NamingContext图以及NamingContext图中的Name和实际对象的绑定关系自动生成Server程序所需的绑定
代码。
从而开发者可以在集成开发环境中根据自己的需要通过NamingContext图来对Name-Object绑定关系进行动态地创建、修改。
.3.c 集成开发环境 在
代码框架生成之后用户就可以在集成开发环境中在这样一个框架结构上加入特定于应用需求的实现
代码了。
和一般的编程语言集成环境类似本系统的集成开发环境基本的功能有 源
代码的编辑 Server信息的进一步扩充如添加并编辑Naming Context Graph以及相关
代码的生成可选 应用程序的编译链接用Makefile 由于开发工具辅助的是基于CORBA的Server端开发过程所以集成开发环境在功能上也有所侧重和取舍主要是体现一下的原则 1.可能地隐藏所有开发者不需要关心的CORBA编程细节。
这包含两方面的内容 ①隐藏Stub/Skeleton源
代码文件。
②隐藏源
代码文件内特定于具体CORBA产品的
代码。
该原则的意义在于避免了开发者有意无意地破坏正确的程序结构或者因为对CORBA编程细节的不熟悉造成错误从而保证整个Server应用程序在结构上的一致性和完整性以及正确性。
2.尽可能地为开发者提供良好的图形界面、灵活方便的交互方式为开发者的开发过程提供辅助。
这一原则主要体现在工具对
代码框架和NamingService的图形化显示和修改上。
2.1.4.4 客户端辅助工具的实现 .1 CORBA客户端程序实现的一般流程 a 获取服务器方所提供对象接口的IDL描述。
b 用IDL编译器由具体的ORB产品提供对IDL文件进行IDL编译编译后就可以生成Client端的stub和Server端的静态Skeleton必要的头文件。
c 根据得到的stub利用CORBA的连接机制调用服务器方的服务. .2 系统功能与体系结构 客户端辅助工具与服务器端辅助工具在功能与体系上有较大的差异。
首先客户端辅助开发工具的主要功能为 与现有的可视化开发工具集成目前工具主要提供了和
VC的集成。
现有的大多数ORB产品在可视化开发特别是客户端的图形界面开发上没有好的工具提供而流行的开发工具对ORB的支持又不够当用户想在其中进行CORBA开发的时候不但设置复杂而且还很容易造成程序上的冲突。
本工具现在提供了对
VC的支持可以在用
VC编写的
代码中加入使用CORBA的
代码并自动生成与
VC兼容的makefile。
在开发环境中查看接口信息和调用接口在开发环境中为用户提供图形方式查看接口信息一方面可以免去学习IDL语言的代价另一方面也可以让客户端的程序人员可以直接面对自己所熟悉的语言的语法和数据结构而不是抽象的IDL描述。
同时用户也可直接操作图形界面来调用接口。
自动生成初始化
代码用ORB编程每次都需要经过IDL编译—添加必要的头文件—添加与ORB相关的
代码这样几个步骤为了简化用户工作工具可以自动完成这些工作。
自动生成调用代理并支持用拖放drag-and-drop方式插装代理调用CORBA的对象服务需要使用CORBA的连接机制首先得到远程对象的引用而后使用。
工具可以根据用户的需要自动生成调用
代码即对象调用代理并支持用户使用拖放的方式在编辑的
代码中插入调用代理。
客户端辅助工具的系统体系图如下 接口池 接口浏览器 接口信息 源
代码浏览器 界面生成工具 Visual C 对象调用代理1 对象调用代理2 对象调用代理3 ...... 插装 引入 注册文件 注册 代理浏览器 Makefile .3 系统设计 客户端辅助工具从逻辑上分为三个包。
接口浏览器包、源
代码处理包和输出包。
它们分别完成各自相对独立的功能并且互相之间存在依赖关系。
a 接口浏览器包主要负责与IFR服务器的交互以及将从IFR服务器中读出的接口信息保存在浏览器窗口的树形结构中 用户指定IFR服务器所在主机后连接到IFR服务器并读取该服务器上的所有接口信息将结果保存在本地的数据结构中。
将本地保存结果按接口信息在IFR服务器中的树形结构显示在窗口中。
不同的接口信息服务器、接口、属性、操作和参数以不同的图标加以区别。
当用户选择接口信息显示区域中的不同实体时在属性显示区域中以列表的形式显示不同的信息。
b 源
代码处理包主要负责与外来工具中生成的
代码进行交互包括对源
代码文件的常规处理如打开、保存、关闭文件、在源
代码中用拖放方式插入
代码行等。
c 输出包主要负责生成本地代理的一些工作包括自动生成IDL文件、自动编译生成客户端所需的Stub和生成代理。
根据输出的结果输出包的结构主要分成三部分 客户端Stub生成:主要工作是从接口信息本地结果中提取用户所需接口的信息并生成IDL文件。
然后用IDL编译器编译IDL文件生成Stub这一步原来需手工完成。
客户端代理生成:对于基本ORB编程来说将根据用户选择的接口和用户输入的接口所在服务器主机生成与该交口交互的所有代理
代码包括修改和读取接口属性、调用接口所有操作。
代理以.h文件的形式存在。
Makefile文件生成:根据用户输入的可执行文件名称生成可编译ORB
代码的Makefile文件。
综上所述CORBA辅助编程工具从简化用户的工作入手为服务器端和客户端两个方面的开发提供了图形化显示相关信息、自动生成
代码框架和调用代理、生成makefile以及一些相应的辅助功能为CORBA应用程序的实现提供了方便快捷的开发环境同时也对ABCTool在CORBA上的扩展提供了很好的支持。
上一篇:
期货程序化交易之文华指标公式源码
下一篇:
科研管理杂志简介