1. 程式人生 > >服務元件體系結構 C++ API 簡介

服務元件體系結構 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”的標頭檔案中:

……

檢視原文

相關推薦

服務元件體系結構 C++ API 簡介

熟悉將用於 Apache Tuscany SCA for C++ 的 API。您將通過本文了解該 API 的主要組成部分,以便快速入門。   構建並連線簡單的 C++ 服務元件   關於 Tuscany   Apache Tuscany 是正處於孵化期的 Apache Sof

【圖文詳細 】Flume 資料採集元件—— 體系結構/核心元件

4、Flume 體系結構/核心元件    4.1、概述  Flume 的資料流由事件(Event)貫穿始終。事件是 Flume 的基本資料單位,它攜帶日誌資料(字 節陣列形式)並且攜帶有頭資訊,這些 Event 由 Agent 外部的 Source 生成,當

面向微服務體系結構評審中需要問的三個問題-咖啡雜談:Java、新聞、故事和觀點

面向微服務的體系結構如今風靡全球。這是因為更快的部署節奏和更低的成本是面向微服務的體系結構的基本承諾。 然而,對於大多數試水的公司來說,開發活動更多的是將現有的單塊應用程式轉換為面向微服務的體系結構,這可能是許多層面上阻礙和衝突的根源。 雖然Greenfield (未開發的)面向微服務的體系結構實現可以堅持對

雜談:面向微服務體系結構評審中需要問的三個問題

面向微服務的體系結構如今風靡全球。這是因為更快的部署節奏和更低的成本是面向微服務的體系結構的基本承諾。 然而,對於大多數試水的公司

螞蟻金服 mPaaS 服務端核心元件體系概述:移動 API 閘道器 MGS

根據《開篇 | mPaaS 服務端核心元件體系概述》,我們已經初步瞭解 mPaaS 平臺後端各元件的核心架構體系。 而在 mPaaS 服務端眾多元件中,移動 API 閘道器 MGS 是連線移動客戶端與服務端的元件產品。它簡化了移動端與服務端的資料協議和通訊協議,從而能夠顯著提升開發效率和網路通訊效率,是整個

.NET微服務體系結構中為什麼使用Ocelot實現API閘道器

為什麼要使用API閘道器而不是直接通訊?在微服務架構中,客戶端應用程式通常需要使用

Oracle 數據庫 體系結構 (二):服務結構

header 創建 共享服務器 pga 保存 設置 最大的 img 內存結構 目錄 前言 Oracle 內存結構 Oracle 進程結構 文章總結 前言 上一篇文章體現了 Oracle 數據庫的一些基本結構和存儲結構,這篇文章將會講到Oracle的服務器結構,實

ARMV8體系結構簡介

ARMV8體系結構簡介 1.前言 本文的主要內容來源於ARMV8白皮書v5,對ARMV8做一個概述。包含如下的內容: 首先從背景談起,講述ARM的發展歷程; 之後介紹ARMV8體系結構的基本特徵; 介紹A64指令集 介紹異常級別 介紹記憶體管理單元 介

使用TensorFlow C++ API構建線上預測服務

使用TensorFlow C++ API構建線上預測服務 執行環境:CentOS,TF-1.10 除了本機的tensorflow之外,仍需要安裝下面的tf。 原始碼安裝後,看到tensorflow/contrib/makefile/gen/lib/libtensorflow-co

Zookeeper C API之監視(Watch)、常量和結構

1、監視(Watch)簡介 Zookeeper C API的宣告和描述定義在檔案include/zookeeper.h中,大部分的常量、結構體宣告也定義在這個檔案中。 Zookeeper所有的讀操作(包括:getData()、getChildren()和exists())度可以設定Watch

開篇 | 螞蟻金服 mPaaS 服務端核心元件體系概述

mPaaS 是源自於支付寶客戶端 App 的移動開發平臺,為企業提供了移動開發、測試、運營及運維提供雲到端的一站式解決方案,mPaaS 能有效降低技術門檻、減少研發成本、提升開發效率,協助企業快速搭建穩定高質量的移動客戶端 App。 經過《mPaaS 客戶端架構解析》系列,我們已經對 mPaaS

dotnet core高吞吐Http api服務元件FastHttpApi

簡介 是dotNet core下基於Beetlex實現的一個高度精簡化和高吞吐的HTTP API服務開源元件,它並沒有完全實現HTTP SERVER的所有功能,而是隻實現了在APP和WEB中提供資料服務最常用兩個指令GET/SET,滿足在應用實現JSON,PROTOBUF和MSGPACK等基於HTTP的資料

計算機網路體系結構整理-第四單元網路服務質量控制

第四單元 網路服務質量控制 一、流量管理 Qos定義:服務質量(是用來解決網路延遲和阻塞的技術)關於一個或多個物件的集體行為的一組質量要求。為不同的應用程式、使用者或資料流提供不同的優先順序,或者保證資料流有一定效能水平。 Qos的基本測度:帶烤、延遲、丟包率、可用性、穩定性 服務級別約定SLA:1、

解讀經典-《C#高階程式設計》第七版-Chapter1-.Net體系結構-Page6-13

01 中間語言(IL) .Net中間語言(IL)的特性,很大程度上來自於要支援多語言互操作性。要支援多語言互操作性,是因為微軟想搞一個大事情,將它的老產品線VB和VC++,VJ++都裝入.Net架構中。要支援多語言互操作,就需要實現這些基本功能: 1) 繼承:一種語言的類能繼承另一種語言編寫的類。 2

Zookeeper C API之監視(Watch)、常量和結構

1、監視(Watch)簡介 Zookeeper C API的宣告和描述定義在檔案include/zookeeper.h中,大部分的常量、結構體宣告也定義在這個檔案中。 Zookeeper所有的讀操作(包括:getData()、getChildren()和exis

面向服務體系架構(SOA)和業務元件(BC)的思考

1. 什麼是業務元件(BC) 元件化、模組化是軟體開發中一個很重要的概念,基於面向服務體系架構(Service Oriented Architecture,SOA)下,如何實現元件化,有各種實現方式,下面通過對各種元件概念的對比,從技術角度提出業務元件(Bus

Openstack元件實現原理 — Nova 體系結構

目錄 前文列表 Nova體系結構 Nova主要有API、Compute、Conductor、Scheduler四個核心服務組成,這些服務之間通過AMQP訊息佇列來進行通訊。

常見軟體體系結構:B/S 、C/S

1 C/S l  C/S結構即客戶端/伺服器(Client/Server),例如QQ; l  需要編寫伺服器端程式,以及客戶端程式,例如我們安裝的就是QQ的客戶端程式; l  缺點:軟體更新時需要同時更新客戶端和伺服器端兩端,比較麻煩; l  優點:安全性比較好。 2 B

軟體體系結構—B/S和C/S架構

C/S架構是客戶端/伺服器端互動模式,是Client/Server的簡稱。它是早期常用的一種軟體架構,這種架構的軟體需要在使用者的電腦上安裝客戶端程式,下面通過一張圖來了解C/S架構客戶端與伺服器的互動過程。如圖1-1所示:圖1-1 C/S架構圖2.B/S結構B/S架構是瀏覽器/伺服器互動模式,是Browse