`
ruilin215
  • 浏览: 1143047 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

服务组件体系结构 C++ API 简介

阅读更多
熟悉将用于 Apache Tuscany SCA for C++ 的 API。您将通过本文了解该 API 的主要组成部分,以便快速入门。

  构建并连接简单的 C++ 服务组件

  关于 Tuscany

  Apache Tuscany 是正处于孵化期的 Apache Software Foundation 项目。此项目的目标之一是获得实现以下服务组件体系结构(Service Component Architecture,SCA)规范的 C++ 运行时:

  •   SCA 组装模型 (SCA Assembly Model)
  •   SCA C++ 客户机和实现 (SCA C++ Client and Implementation)
  •   在本文中,我们将详细说明采用 C++ 针对 Apache Tuscany C++ 运行时开发和部署服务组件的步骤。

  介绍

  Tuscany C++ 服务组件体系结构 (SCA) 运行时允许使用标准 C++ 代码构建 SCA 组件,并将其部署到 SCA 运行时可以查找和加载的位置。为了实现此组件动态加载功能,运行时需要一系列描述文件,这些构件以及您自己的头文件一起用于生成代理和包装,以允许从其他组件或客户机代码采用与处理本地 C++ 对象类似的方式调用您的组件。

  我们将首先创建一个简单的 SCA 组件,然后创建第二个组件,并将二者连接到一起。

  我们使用 Microsoft Visual Studio 作为开发环境,但也可以使用命令行编译器和文本编辑器。您将了解如何设置 Studio 项目和开发应用程序。

  注意:Tuscany SCA 依赖于 Tuscany SDO 项目和 Apache Axis2/C 项目。在开始工作前,必须确保在您的 PATH 环境变量中设置了 Tuscany SCA/SDO 库和 Apache Axis 库。有关更多信息,请参见项目下载说明。

  Tuscany SCA C++ 运行时将需要知道模块和组件所部署到的位置。部署根目录使用环境变量 TUSCANY_SCACPP_SYSTEM_ROOT 进行标识。我们将马上设置此变量,以便能够从 Visual Studio 内运行我们的测试程序。如果您使用的是命令行,则在运行前都不需要设置这些内容。

  TUSCANY_SCACPP_SYSTEM_ROOT 指定运行时将用于寻找已部署模块和子系统的路径,我们将在稍后对此予以说明。根目录必须具有两个子目录,分别名为“modules”和“subsystems”。

  使用控制面板设置:TUSCANY_SCACPP_SYSTEM_ROOT=c:\mybasicsample。

  转到“控制面板”、“系统”,然后选择“高级”选项卡,然后单击“环境变量”按钮。单击“新建”按钮,并将“变量名”设置为 TUSCANY_SCACPP_SYSTEM_ROOT,将“变量值”设置为 c:\mybasicsample。然后单击“确定”,以设置此环境变量。

  创建名为 mybasicsample 的目录,其中包含两个子目录,分别名为 modules 和 subsystems。

  现在已经准备好,可以进行部署了。我们可能应该编写一些能够部署的东西。

简单回顾一下 SCA 规范(您已经读过了此规范——对吗?),就会记得 SCA 系统包含一个或多个子系统。每个子系统包含模块组件的列表。每个模块组件实际上是由模块实现的。在 C++ 中,存在一组描述性 XML 文件,用于在编译时生成服务代理和包装以及在运行时查找提供的服务。在开始进行开发前,有必要对这些文件进行一下了解。描述子系统的文件必须命名为 sca.subsystem,且必须保存在自己的子目录中,其位于根目录中的 subsystems 目录下。sca.subsystem 文件描述子系统中涉及哪些模块组件。模块组件可以视为子系统的简单部件,模块组件具有名称,且同时指示实现模块组件行为的模块:

  清单 1. 模块组件

<subsystem xmlns="http://www.osoa.org/xmlns/sca/0.9" name="MyServiceSubsystem">
<moduleComponent name="MyModuleComponent" module="FloatConverter" />
</subsystem>

  清单 1 告知 SCA 运行时,模块组件“MyModuleComponent”是由名为“FloatConverter”的模块实现的,因此我们必须构建此模块。

  sca.subsystem 文件实际上是运行时构件,编译时没有用处。其他文件(组件类型文件和 sca.module 文件)对“FloatConverter”模块进行描述,以便能在运行时找到它。这些文件还帮助代码生成器为服务构建包装和代理。我们将在下面的开发过程中更为详细地讨论这些文件。

  现在让我们回到这一过程的开头。我们希望将 C++ 类作为服务部署,并将服务放入名为“FloatConverter”的模块中。以下步骤将说明如何完成此任务。

  首先,尽管可能有存在冗余的风险(很多人肯定之前已经进行过此工作了),我们将创建一个示例 C++ 应用程序。

  注意:在开始开发过程前,您必须下载 SCA/SDO 代码并对其进行构建,或下载二进制版本,以便稍后告知项目在何处查找 SCA 运行时。设置两个环境变量,分别名为 TUSCANY_SCACPP 和 TUSCANY_SDOCPP,指向 SCA 和 SDO 项目的部署目录,在这两个目录下存在相应的 bin、lib 和 include 目录。

  首先,我要创建一个抽象基类,用于表示我们要公开的服务。这与定义 Java 接口等价。我们在此处创建的头文件将由客户机应用程序用于解释可用的服务接口。

  以下就是这个类,位于名为“Example.h”的头文件中:

……

查看原文

分享到:
评论

相关推荐

    rapi相关(包括rapi.h,rapi.dll,rapi.lib)

    开发基于RAPI的应用程序需要对Windows CE或Windows Embedded Compact的体系结构有深入理解,以及熟练掌握C或C++编程。开发者还需要安装相应的SDK(软件开发工具包),其中包含了必要的开发工具和文档,以帮助完成R...

    Linux C_C++后端服务器架构开发1

    这门课程旨在帮助学员建立一个全面的Linux C/C++后端服务器开发体系,从基础到高级,从理论到实践,通过学习可以掌握高性能服务器设计、网络编程、组件设计、中间件开发、性能分析以及分布式架构等关键技能。...

    Windows CE 体系结构与应用开发

    《Windows CE 体系结构与应用开发》是一本深入探讨Windows CE操作系统核心以及其在嵌入式软件开发中的应用的专业书籍。Windows CE作为一个微型版本的Windows操作系统,被广泛应用于各种嵌入式设备,如掌上电脑、工业...

    Android 体系结构介绍

    ### Android 体系结构详解 #### 一、概述 Android 是一个基于 Linux 的开源移动设备操作系统,它由 Google 维护并主导开发。Android 不仅是一个操作系统(Operating System, OS),还包括中间件(Middleware)和...

    C#Sample .NET体系结构

    ### C#与.NET体系结构详解 #### 一、C#与.NET的关系 C#作为一种相对较新的编程语言,其重要性体现在以下两个方面: 1. **专门为.NET Framework设计**:C#是微软为了配合.NET Framework而专门设计的一种语言。.NET...

    borland c++ builder官方帮助文档

    《 Borland C++ Builder 官方帮助文档》是学习和精通Borland C++ Builder编程环境的重要...这份文档是Borland C++ Builder学习者的必备参考,对于理解C++ Builder的体系结构、设计原则以及最佳实践有着不可替代的作用。

    c语言编程 第3章 delphi体系结构的关键类.rar

    在本节中,我们将深入探讨C++编程与Delphi体系结构的关键类之间的联系,尽管标题中提到了"Delphi体系结构的关键类",但鉴于标签是"C++",我们可以假设这是关于C++中如何实现类似Delphi关键概念的讨论。Delphi是一种...

    Visual C++实践与提高-COM和COM+篇『PDF』

    8.1.2 OLE服务体系结构 8.1.3 链接与嵌入技术 8.1.4 现场激活技术 8.1.5 MFC对OLE文档的支持 8.2 创建现场激活OLE服务器——例程ScribbleOle 8.2.1 预览ScribbleOle程序 8.2.2 利用AppWizard创建OLE服务器工程 8.2.3...

    MFC类库详解及结构体系图

    而`MFC4_21.jpg`、`MFC6_0.jpg`、`MFC7_0.jpg`可能是不同版本MFC的结构体系图,展示了MFC类之间的继承关系和库的主要组成部分,对于理解和学习MFC的层次结构非常有帮助。 学习MFC,需要掌握其基本类的用法,理解...

    类extjs的c++界面库

    1. **组件体系**:如同ExtJS,该库可能包含了一系列预先封装好的UI组件,如窗口、菜单、按钮、表格等,开发者可以通过组合这些组件快速构建用户界面。 2. **布局管理**:借鉴自ExtJS的布局系统,这个C++库可能提供...

    C++ 程序设计语言 The C++ Programming.Language 4th Edition

    - **官方文档与API参考**:指导读者如何查阅官方文档和API手册,这对于深入理解和掌握C++至关重要。 总之,《C++程序设计语言》第四版不仅是一本全面介绍C++语言的教材,还是一本能够帮助读者深入理解C++语言精髓的...

    wince6.0体系结构

    下面将详细介绍Windows CE 6.0的体系结构及其关键知识点。 **1. 微核心架构** Windows CE 6.0采用微核心设计,将操作系统的核心功能最小化,只包含基本的系统服务,如内存管理、进程调度、中断处理等。这种设计提高...

    C++GUI Qt4编程源代码

    Qt4的核心在于其对象模型,它基于C++的面向对象特性,提供了一个事件驱动的体系结构。这个框架包括窗口系统、图形绘制、网络通信、数据库接口、XML处理、多线程支持等模块。通过Qt Creator IDE,开发者可以享受到...

    CORBA基础_C++corba开发_corba_

    CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是用于分布式计算的一种标准,它允许不同系统间的软件对象进行交互,就像它们在同一个进程内一样。在C++环境中进行CORBA开发可以帮助...

    Microsoft Visual C++2015运行库.rar

    这意味着无论目标计算机是哪种体系结构,都能确保Visual C++ 2015编译的应用程序能够正常运行。 5. **安装与更新**:这些redist文件通常作为独立的安装包提供,用于在用户机器上安装必要的运行时环境。它们可以自动...

    C++Builder精彩编程实例集锦

    【C++Builder精彩编程实例集锦】 C++Builder是一款由Embarcadero Technologies开发...另外,“爱书吧-2万本图书免费下载.url”可能是指向一个图书资源库的链接,提供更多学习资料,进一步丰富你的C++Builder知识体系。

    C++网络编程 卷1 卷2 ACE程序员指南 带详细目录

    - **ACE库API**:全面解读了ACE库的API,包括各种数据结构、服务类和工具函数。 - **编程实践**:提供了大量实例,展示如何在实际项目中使用ACE库解决问题。 - **调试和测试**:指导如何有效地调试ACE程序,以及...

Global site tag (gtag.js) - Google Analytics