ACE+TAO 开源编程笔记/整合
在过去的 10 年里,我在 CORBA 技术方面的使用包括 Orbit、JacOrb 和 ACE+TAO。在这三种技术中,ACE+TAO 最有用,因为它在平台之间最具可移植性,并且功能最丰富。CORBA 的承诺当然是你输入一些 IDL,通过 IDL 编译器运行它,然后生成一个大部分已编写的客户端服务器应用程序。正如你在前面的示例中看到的,这对于现有规范来说基本上是一个目标。这适用的唯一领域是 RPC 风格的应用程序。对于所有其他内容,你(程序员)负责执行大量与网络无关的 CORBA 内部编程。也许,在遥远的将来,这个规范可以扩展到可以从 IDL 访问许多所需功能的程度。话虽如此,不必担心编程的网络方面还是很好的。能够依赖 POA 来管理对象也很不错,即使这只是对 STL 和 Boost 中发现的现代 C++ 模板模式的略微改进。
这种特定委员会设计的规范实现的缺陷不应该以任何方式贬低其实质性的优势,最显著的是其相对于其他技术的性能和相对的编程容易程度,同样是相对于可比技术而言。例如,ACE+TAO 网站上提供的一篇白皮书详细介绍了使用 TAO 的 CORBA 相对于 Microsoft 的 .Net 协议 的性能优势,速度快 40 倍,而对 J2EE 性能和特性的比较(如果有点过时)通常有利于 CORBA。
正如本书中的示例所说明的那样,使用 TAO 的 CORBA 实现一个编程环境来分发对象和事件证明,以分布式方式执行大多数任务并不难。使用 TAO 的 CORBA 进行健壮、可配置、无错误的实现使其更加理想,当您考虑到使用此技术作为您各种编程项目的粘合剂的性能优势时,CORBA 很可能开始作为大多数需求的首选中间件技术。
为了制作本书中的示例,我使用了 KDevelop 作为编程 IDE。我在 Linux 上使用它,然后使用 Microsoft 的 Visual C++ 用于 MS 环境。一般来说,我会先在 Linux 下进行所有开发,因为在 Linux 下开发和部署服务要容易得多。这并不是说你不应该在 Ms Windows 下测试这些示例。您在 Windows 下会遇到的问题包括通常缺少对基于服务器的应用程序的支持。如果您在 TAO 发行版中的 ACE 目录下查看,有一个 Microsoft 服务器的示例,我相信我在过去使用过它。
如果您要使用 KDevelop 或类似的 autotools 基于 IDE,那么您需要将相应的库放在项目的 LDFLAGS 行中。如果您的 IDE 不支持用于设置此项的 GUI 字段,那么编辑您的 Makefile.AM 文件,以便 `<您的项目名称>`_LDFLAGS 变量包含以下内容:**-lTAO_PortableServer -lTAO_CosNaming -lTAO_AnyTypeCode -lACE -lTAO**,加上您可能需要的任何数据库库。