注册新用户 | 登入
 
 
 

常见问题
文章

培训
Orbacus 培训
CORBA 培训

技术诀窍
支持中心
CORBA Utilities

 
     
     
     
 

CORBA Utilities 2.1

CORBA Utilities 软件包是实用的 C++ 和 Java 类集合,它极大的简化了 CORBA 应用程序的开发和部署。已知这些工具可以用于以下 CORBA 实现:

  • Orbix/C++ 5.1、6.0 和 6.1
  • Orbix/Java 5.1、6.0 和 6.1
  • ORBacus/C++ 4.1.x
  • ORBacus/Java 4.1.x
  • TAO 1.3 和 1.4
  • OmniORB 4.0.3

将它们迁移到其它 CORBA 实现并非难事。

下载 CORBA Utilities 软件包(560KB .zip 文件)

以下内容是对软件包中每个工具的简要介绍。

使 Orbix 管理更加简单
  Orbix 是通过 itadmin 工具的子命令执行的。每个子命令都可以执行一小部分工作,因此用户通常需要执行多个 itadmin 命令来完成一个有用的工作单元(例如将 Orbix 服务器注册到“实现仓库 (IMR)”或更新配置变量。itadmin 还具有自己的内嵌脚本编写语言。因此可以使用该语言编写能够执行完整 itadmin 命令序列以实现一项任务的脚本。本论题中讨论了多个基于任务的有用 itadmin 脚本:

  • orbix_srv_admin 可用于执行多个与 Orbix 服务器相关常用管理任务(例如将 Orbix 服务器注册到 IMR,以及为服务器初始化或更新配置值)。
  • orbix_set_config_vars 可以为应用程序初始化并更新配置值,但是无法与 IMR 进行交互。因此,该脚本包含了 orbix_srv_admin 的功能子集。该脚本通常用于未使用 IMR 部署的客户应用程序或服务器。
  • orbix_notify_service 将“通知服务”注册到 Orbix。在使用 itconfigure 工具手册配置 Orbix时,可以选择创建一个“通知服务”。但是,有些组织不想建立会导致吞吐量增加的额外“通知服务”实例。使用该工具可以轻松完成任务。
  • orbix_ns_fixed_port 可以重新配置“命名服务”以使其可以侦听固定的端口。

轻松创建 POA 层级结构
  许多用户认为 CORBA POA 规范强大而复杂。POA 规范实际上功能强大,概念简单。但是,让人失望的是冗长的 API 却使 POA 规范的核心概念含混不清。就是这些含混的 API 让 POA 规范背上了过于复杂的名声。

  本文档讨论了一个称为 PoaUtility 的类,它可以提供一个用于 POA API 的简化包装程序。包装程序 API 只包含两个操作,它具有向前由原始 POA API 的十多个操作提供的功能和灵活性。PoaUtility 类没有隐含 POA 的概念。事实正好相反: 通过用较少数量的高级别操作替代大量的低级别操作,包装程序可以让开发人员更容易地发现 POA 的简捷与精练。

用于导入和导出 CORBA 对象参考的建议
  例如 CORBA 服务器可以将对象参考“导出”到“命名服务”、一个文件或是其它位置。CORBA 客户机在能够调用 CORBA 服务器之前必须导入对象参考。

  问题是大多数 CORBA 应用程序是通过“命名服务”等技术用硬编码的方式导入/导出对象参考。如果 CORBA 应用程序能够更为灵活,可以在运行时而不是编译时对如何导入/导出对象参考作出决定,会取得更好的效果。本文讨论了两个工具函数 importObjRef()exportObjRef(),它们都可以提供这种灵活性。可以使用这些工具函数使 CORBA 应用程序具有更强的灵活性,同时还能够简化应用程序的操作。

C++ CORBA 应用程序的可移植性
  可移植对象适配器 (POA) 规范定义了由 CORBA 产品提供的完整 API 集合。这意味着开发人员应该能够编写可以通过多个 CORBA 供应商的产品实现轻松重新编译的 CORBA 应用程序。

  该目标是通过 Java 映射的方式实现的。但是,C++ 映射具有一项恼人的移植性障碍: 它不会定义与表头文件相关的 CORBA 名称。这一问题的实际影响是在开发人员将应用程序移植到不同的 CORBA 产品时,必须味与 CORBA 相关的表头文件更改 #include 语句。

  初看上去,着似乎并不是什么大问题。但是,这样的 #include 语句将出现在大多数源代码文件中。如果不可移植的代码只集中在为数很少的文件中,而不是分布在大量源代码文件中,一致应用程序并不是一件难事。本文讨论了一个简单有效的方法,可以用它来简化恼人的不可移植 #include 语句的移植问题。

corbaloccorbaname URL
  大多数人都对用用于访问网页和文件的 URL(例如 "http://...")很熟悉。CORBA 对 corbaloccorbaname 的支持已经很成熟了,它们是两个类似于 URL 的结构,可以将其用于指定与 CORBA 的联系方式。一篇简短的论文用通俗易懂的方式解释了 corbaloccorbaname 的工作原理。

Windows 技巧
  大多数在 Windows 平台上进行开发的人士都使用诸如 Microsoft Visual Studio 等集成开发环境 (IDE) 完成工作。但是,但是命令行仍是一些任务的最佳处理方式。但是,Windows 命令窗口的默认设置使用很不方便。这里提供了一些优化命令窗口的技巧。

C++ 中的类属同步策略
  为通常难于实现移植(因为有许多低级别的 API)的多线程应用程序编写同步代码。

  因为无论是 C 还是 C++ 都无法提供标准的类库,因此存在移植问题。因此,大多数操作系统都提供自己的专用同步 API。许多公司和个人都已经成功了解决了这一问题,他们编写(并移植)了一个移植层,用于隐含底层操作系统专用 API。虽然这些可移植层的库解决了移植问题,但是它们提供的仍是低层次 API。因此,它们并未简化同步代码的编写。

  根据作者的经验,在大多数情况下在多线程应用程序中使用同步代码时,都会陷入一些使用套路,或者是我们成为“类属同步策略”(GSP) 中。我们在本文中说明了如何编写一个能够直接为这些常用 GSP 提供支持的 C++ 类库。我们还说明了如何使用这些 GSP 大幅度简化编写这些线程安全类的工作。

 

 

 

LINUX

     
  IONA Technologies 2006 | 与我们联系 | 法律声明和隐私策略 | 站点地图 | IONA网站管理员