一種用於集成環境的多層軟體總線結構的製作方法
2023-05-09 00:12:16 3
一種用於集成環境的多層軟體總線結構的製作方法
【專利摘要】一種用於集成環境的多層軟體總線結構,所述結構包括多層總線和插件;多層總線由若干處於不同層次的總線組成,這些總線按照樹的拓撲結構組織在一起:最底層有且只有一條總線,稱為全局總線,其他各層次的總線都稱為局部總線,以全局總線為樹根,形成多層的樹狀結構;插件是集成環境中被集成的軟體的封裝,以服務的形式將被集成軟體的功能加入集成環境中。本發明所提出的多層總線結構實現了總線協議的可擴展性,能夠通過增加新的局部總線,對總線協議進行擴展,以針對新類型工具進行更加高效、緊密的集成。
【專利說明】一種用於集成環境的多層軟體總線結構
【技術領域】
[0001]本發明涉及一種軟體體系結構,該體系結構採用了多層總線的設計,底層的總線為插件集成提供基本的動態加載、數據訪問支持,上層的總線則針對特定類型的插件提供相應的數據類型支持和運行控制支持。這一體系結構,既能夠保證工具集成系統的可擴展性,又簡化了系統實現的難度,有效地解決了各類軟體工具的集成問題。
【背景技術】
[0002]計算機軟體工具已被廣泛應用於各種產品研製流程中,一個產品研製流程中往往可能使用若干不同的軟體工具,這些工具之間的數據和控制交互需要人工完成,這引入了較大的工作量和潛在的質量問題,因此有必要將這些工具進行集成,實現自動化的工具間數據和控制交互。軟體總線技術是一種被廣泛使用的工具集成技術,不同的工具按照統一的規範連接到同一軟體總線上,實現數據的統一管理和工具的自動調用,提高產品研製的效率。
[0003]然而,在產品研製流程中使用的軟體可能來源不同、功能不同、操作方式不同、所使用的數據抽象層次和描述方式不同,定義統一的總線規範來對這些不同的工具進行統一的操作,並對工具的輸入輸出數據進行統一的描述,是非常困難的。為解決這一問題,本發明提出了一種多層總線的結構,底層總線提供基本的工具集成支持,上層總線則針對不同類型的工具提供專門的支持,通過這種方式解決上述問題。
[0004]目前工業界已發布並實現了若干用於軟體工具集成的軟體總線,例如IBM的Websphere、Oracle的Oracle Service Bus,其目的主要是將各自企業提供的軟體以Web服務的形式開放,以便企業自身開發人員以及第三方開發人員能夠方便的使用企業提供的軟體功能,構建、定製客戶所需的系統。這些軟體總線具有一定的可擴展性,通過統一的協議將不同工具集成在一起。但這些軟體總線都是基於Web服務的,工具間的通信效率較低,適用於分布式的工具集成,而不適用於軟體開發平臺、建模平臺、圖形處理平臺這類對響應速度和數據傳輸速度要求較高的情境;這些總線只支持工具的擴展,而不支持協議的擴展,而為了能夠支持不同種類工具的擴展,制定了複雜的通信協議(或互操作規範),也使得開發人員的學習成本較高。
[0005]另一類廣泛應用的工具集成技術是插件技術。插件是實現原系統平臺不具備的功能的程序,其只能運行在程序規定的系統平臺下,而不能脫離指定的平臺單獨運行,因為插件需要調用原系統提供的函數庫或者數據。在各種開源或商業軟體中,如開源的Eclipse項目、微軟的Visual Studio、IBM的Rational DOORS等系統中,都應用了插件技術,以便用戶能夠根據需要對原系統進行擴展和定製。本質上,插件所依賴的系統平臺即作為軟體總線,插件要按照系統平臺的要求進行開發,調用系統平臺提供的接口訪問相關資源,對功能進行擴展。插件技術多用於單機運行的軟體,工具調用效率和數據傳輸速度比較高。但這種方式不便於被集成工具間的通信,同時,也無法實現總線協議的擴展,因而所支持的工具種類受到了限制。[0006]本發明提出的多層總線結構以全局總線作為基礎,支持工具的擴展和總線的擴展,利用不同層次的局部總線實現對不同類型工具的高效集成。
【發明內容】
[0007]本發明解決的問題是:克服現有技術的不足,提供一種可擴展的、適用於對功能不同、所使用數據不同的工具進行集成的多層總線結構,以全局總線作為基礎,支持工具的擴展和總線的擴展,利用不同層次的局部總線實現對不同類型工具的高效集成。
[0008]本發明解決方案,該體系結構採用了多層總線的設計,底層的總線為插件提供基本的動態加載、數據訪問支持,上層的總線則針對特定類型的插件提供相應的數據類型支持和運行控制支持。這一體系結構,既能夠保證工具集成系統的可擴展性,又簡化了系統實現的難度,有效地解決了各類軟體工具的集成問題。
[0009]為達到上述目的,本發明的技術方案如下。
[0010]1.多層總線與插件的組織方式
[0011]多層總線是一種新型的軟體總線,由若干處於不同層次的總線組成,這些總線按照樹的拓撲結構組織在一起:最底層有且只有一條總線,稱為全局總線,其他各層次的總線都稱為局部總線,以全局總線為樹根,形成多層的樹狀結構。每一條總線上都可以直接連接多條局部總線,稱為該總線的子總線;每條局部總線有且只有一條與其直接連接的下層總線,稱為該總線的父總線。全局總線為所有類型的插件的集成和互操作提供基本的支持。而每一條局部總線針對一類插件的集成和互操作提供有針對性的支持以提高插件集成和互操作的效率。上一層總線所支持的插件的集和為其父總線所支持插件的子集,因此,子總線是其父總線的具體化。
[0012]全局總線與其子總線直接連接;局部總線與其父總線和子總線直接連接。總線之間通過上述連接進行數據傳遞和功能調用。
[0013]全局總線提供基本數據類型和基本操作類型的定義,以這些基本數據類型和基本操作類型為參數,實現插件間的數據傳遞或功能調用;全局總線還規定插件所必須實現的基本接口,通過這些接口,全局總線能夠按照基本操作的定義來調用插件的功能,或實現與插件的數據傳遞。
[0014]局部總線則根據一類插件的具體功能和輸入輸出數據,定義這類插件公用的擴展數據類型和擴展操作類型;並提供局部總線編程接口,以這些擴展數據類型和擴展操作類型為參數,實現該類插件間較高效的功能調用和數據傳遞;此外,局部總線還規定連接局部總線的插件應實現的擴展接口,通過這些擴展接口,局部總線能夠按照擴展操作的定義來調用插件的功能,或實現與插件的數據傳遞。
[0015]全局總線定義的基本數據類型和基本操作類型適用於描述所有類型插件的輸入輸出數據和操作,而所有局部總線所定義的擴展數據類型和擴展操作類型是基本數據類型和基本操作類型的子類,是對基本數據類型和基本操作類型的具體化,描述了一類數據或操作更多的語法和語義信息;同樣,局部總線中子總線所定義的擴展數據類型和擴展操作類型也是其父總線所定義類型的子類,比父總線定義的類型描述更具體的語法和語義信肩、O
[0016]插件是集成環境中被集成的軟體的封裝,以服務的形式將被集成軟體的功能加入集成環境中。一個插件提供一個或多個功能,每個功能對應插件所封裝的被集成軟體的一個功能。各插件都連接在多層總線上,通過多層總線進行插件間的數據傳遞和功能調用,並獲得集成環境提供的服務。
[0017]而插件與多層總線的連接具體是插件與多層總線中的某一條總線的連接實現的,該總線稱為插件的「直連總線」;反之,稱插件是其直連總線的「直連插件」。一般來說,插件應連接在與其類型匹配的最上層總線上,從而充分利用多層總線提供的針對該類型插件的支持。無任何局部總線支持的插件類型,可以直接連接在全局總線上。
[0018]插件與其直連總線間可以直接進行數據傳遞和功能調用,並通過其直連總線與其他總線、插件進行間接的數據傳遞和功能調用。
[0019]全局總線只能以基本數據類型和基本操作類型作為參數,實現兩個插件間的功能調用或數據傳遞時,兩個插件必須進行一對一的參數數據解析;局部總線根據工具的輸入輸出類型定義更豐富的數據類型和操作類型,並直接按照這些數據類型和操作類型進行參數的傳遞;此外,局部總線還能夠定義更豐富的插件功能調用方式,便於實現插件間的緊密集成。
[0020]2.插件信息的收集
[0021]一個插件提供一個或多個服務,作為供其他總線或插件調用的基本單位。在一個總線上,所有插件都具有一個唯一標識;一個插件上,所有服務具有一個唯一標識。同時,每個總線也具有一個全局的唯一標識。通過這些標識,可以對插件、服務進行查找。
[0022]在系統初始化時,全局總線和各局部總線各自掃描系統中存在的插件,根據插件的接口信息,識別直連插件,形成各自的直連插件列表和服務列表。
[0023]之後,從頂層總線開始,各層次總線將獲取子總線上連接的插件,形成總線上面直接或間接連接的所有總線的列表。
[0024]3.插件間的調用
[0025]當一個插件要調用其他插件的功能時,需要向其直連總線發送調用請求。發送調用請求是通過調用插件調用請求接口實現的,所有總線都提供格式相同的插件調用請求接口。直連總線首先從直連插件列表中查找對應的插件。若找到,則加載並調用該插件;若未找到,則向上一層總線發送操作請求,由上一層總線接手插件的查找和調用的任務;如此反覆,直到找到插件並調用成功。
[0026]從另一角度,當總線接收到插件調用請求並確定該插件直接或間接連接在自身時,首先查看插件是否在自身的直連插件列表中:若在,則直接調用;若不在,則向對應的子總線發送插件調用請求,再由子總線處理,直到找到插件的直連總線,由其實現對插件的調用。
[0027]當一個插件調用請求從上層總線轉發到下層總線時,上層總線要按照下層總線的數據格式對調用請求附帶的參數進行封裝,再進行發送。例如,全局總線上只定義了字符串和文件路徑兩種數據格式,如果全局總線上一層的局部總線要想全局總線轉發調用請求,必須將請求附帶的參數轉換成字符串或者保存為文件,再將字符串或文件路徑作為調用參數轉發給全局總線。
[0028]而當一個插件調用連接到統一總線上的插件時,則無需上述轉換。
[0029]反之,當一個通信請求從下層總線轉發到其子總線時,子總線需要對通信請求附帶的數據進行解包,通過文本解析、反射技術,將下層總線傳來的基本數據類型的數據轉換為子總線定義的更具體的擴展數據類型,從而便於進行後續處理。
[0030]圖2描述了兩個插件間調用的過程。圖中插件A與插件B都連接在局部總線X上,而插件C連接在局部總線Y上。局部總線X、局部總線Y都連接在全局總線上。插件A要調用插件B的服務BI時,首先向局部總線X發送調用請求,局部總線X在直連插件列表中找到插件B,並直接調用插件B的服務BI。而插件B要調用插件C的服務Cl時,需要向局部總線X發送調用那個請求。插件C沒有連接在局部總線X上,因此,局部總線X將調用請求的參數封裝後,將調用請求轉發給全局總線,全局總線再向局部總線Y轉發該調用請求。最後,插件C的直連總線,即局部總線Y,直接調用插件C的服務Cl,從而實現整個調用過程。
[0031]本發明與現有相比的優點在於:本發明所提出的多層總線結構實現了總線協議的可擴展性,能夠通過增加新的局部總線,對總線協議進行擴展,以針對新類型工具進行更加高效、緊密的集成。
【專利附圖】
【附圖說明】
[0032]圖1是多層總線結構示意圖;
[0033]圖2是多層總線結構下插件間調用過程示意圖;
[0034]圖3是兩層總線實例結構圖。
【具體實施方式】
[0035]以下以一個高可信嵌入式軟體集成開發環境編碼部分的多層總線為例,對本發明做進一步說明。
[0036]實例對象為高可信嵌入式軟體集成開發環境的多層總線,包括全局總線以及編碼階段局部總線和測試階段局部總線。其中編碼階段局部總線上連接代碼編輯器、編譯器兩個插件;測試階段局部總線則連接著嵌入式系統仿真運行環境插件。
[0037]1.全局總線
[0038]全局總線定義「參數」、字符串和路徑這三種基本數據類型,定義調用服務這一種基本操作。
[0039]「參數」為最基本的數據類型,所有參數數據類型繼承自此數據類型,在編程實現中可採用Object (Java、C#)、CObject (MFC)來作為參數的數據結構實現。
[0040]字符串類型即一個字符串,繼承自「參數」類型。路徑類型則是一個特殊的字符串,繼承自字符串類型。
[0041]服務調用的基本操作是插件或總線調用適配器功能的基本接口,需要三個輸入參數:插件的標識、服務標識、輸入參數列表。
[0042]2.編碼階段局部總線
[0043]編碼階段局部總線定義「原始碼」、「目標碼」這兩種擴展數據類型(從數據結構上看,擴展數據類型為基本數據類型的子類);同時定義代碼編輯、代碼編譯兩種擴展操作(從數據結構上看,擴展操作對應數據結構為基本操作數據結構的子類)。
[0044]針對每類數據定義一個固定的描述方式,及所謂的公共數據模型,如下:
[0045](I)原始碼數據結構定義:[0046]
【權利要求】
1.一種用於集成環境的多層軟體總線結構,其特徵在於:所述結構包括多層總線和插件; 多層總線由若干處於不同層次的總線組成,這些總線按照樹的拓撲結構組織在一起:最底層有且只有一條總線,稱為全局總線,其他各層次的總線都稱為局部總線,以全局總線為樹根,形成多層的樹狀結構;每一條總線上都能夠直接連接多條局部總線,稱為該總線的子總線;每條局部總線有且只有一條與其直接連接的下層總線,稱為該總線的父總線;全局總線為所有類型的插件的集成和互操作提供基本的支持,而每一條局部總線針對一類插件的集成和互操作提供有針對性的支持以提高插件集成和互操作的效率;上一層總線所支持的插件的集和為其父總線所支持插件的子集,子總線是其父總線的具體化;全局總線與其子總線直接連接;局部總線與其父總線和子總線直接連接,總線之間通過上述連接進行數據傳遞和功能調用; 插件是集成環境中被集成的軟體的封裝,以服務的形式將被集成軟體的功能加入集成環境中;一個插件提供一個或多個功能,每個功能對應插件所封裝的被集成軟體的一個功能;各插件都連接在多層總線上,通過多層總線進行插件間的數據傳遞和功能調用,並獲得集成環境提供的服務;插件與多層總線的連接具體是插件與多層總線中的某一條總線的連接實現的,該總線稱為插件的「直連總線」;反之,稱插件是其直連總線的「直連插件」;插件應連接在與其類型匹配的最上層總線上,充分利用多層總線提供的針對該類型插件的支持,無任何局部總線支持的插件類型,可以直接連接在全局總線上; 插件與其直連總線間直接進行數據傳遞和功能調用,並通過其直連總線與其他總線、插件進行間接的數據傳遞和功能調用。
2.根據權利要求1所述的 一種用於集成環境的多層軟體總線結構,其特徵在於:所述全局總線,提供基本數據類型和基本操作類型的定義,以這些基本數據類型和基本操作類型為參數,實現插件間的數據傳遞或功能調用;全局總線還規定插件所必須實現的基本接口,通過這些接口,全局總線能夠按照基本操作的定義來調用插件的功能,或實現與插件的數據傳遞; 所述局部總線則根據一類插件的具體功能和輸入輸出數據,定義這類插件公用的擴展數據類型和擴展操作類型;並提供局部總線編程接口,以這些擴展數據類型和擴展操作類型為參數,實現該類插件間較高效的功能調用和數據傳遞;此外,局部總線還規定連接局部總線的插件應實現的擴展接口,通過這些擴展接口,局部總線能夠按照擴展操作的定義來調用插件的功能,或實現與插件的數據傳遞; 全局總線定義的基本數據類型和基本操作類型適用於描述所有類型插件的輸入輸出數據和操作,而所有局部總線所定義的擴展數據類型和擴展操作類型是基本數據類型和基本操作類型的子類,是對基本數據類型和基本操作類型的具體化,描述了一類數據或操作更多的語法和語義信息;同樣,局部總線中子總線所定義的擴展數據類型和擴展操作類型也是其父總線所定義類型的子類,比父總線定義的類型描述更具體的語法和語義信息;全局總線只能以基本數據類型和基本操作類型作為參數,實現兩個插件間的功能調用或數據傳遞時,兩個插件必須進行一對一的參數數據解析;局部總線根據工具的輸入輸出類型定義更豐富的數據類型和操作類型,並直接按照這些數據類型和操作類型進行參數的傳遞;此外,局部總線還能夠定義更豐富的插件功能調用方式,便於實現插件間的緊密集成。
3.根據權利要求1所述的一種用於集成環境的多層軟體總線結構,其特徵在於:所述各插件都連接在多層總線上,通過多層總線進行插件間的數據傳遞和功能調用,並獲得集成環境提供的服務的實現如下: (1)在初始化時,多層總線中的各條總線各自掃描系統中存在的插件,根據插件的接口信息,識別直連插件,形成各自的直連插件列表和服務列表;之後,從最上層總線開始,各層總線將獲取子總線上連接的插件和服務信息,形成總線上直接或間接連接的所有插件的列表; (2)當一個插件要與其他插件進行功能調用或數據傳遞時,需要向其直連總線發送通信請求,發送通信請求時通過通信接口實現的,所有總線都提供各式相同的通信接口 ;該插件的直連總線首先查找目標插件是否是其直連插件,若是,則加載並調用該插件進行通信,也即進行對應的功能調用或數據傳遞;若不是,則向上一層總線發送操作請求,由上一層總線接受進行通信請求的發送任務;如此反覆,直到找到目標插件,並進行功能調用或數據傳遞; (3)當總線接收到通信請求時,首先檢查目標插件是否直接或間接連接到自身;若否,則不做響應。若是,檢查目標插件是否是自身的直連插件:若是,則直接進行功能調用或數據傳遞;若否,則向所有子總線轉發該通信請求,再由子總線進行處理,直到找到目標插件的直連總線,尤其實現對插件的通信。
4.根據權利要求3所述的一種用於集成環境的多層軟體總線結構,其特徵在於:所述各插件通過多層總線發送調用數據時,需要依據數據傳輸過程中所經歷的各層總線的數據類型定義對數據進行封裝; 當一個通信請求從上層總線轉發到其父總線時,上層總線需要按照父總線的數據類型定義對通信請求附帶的數據進行封裝,再進行發送;` 反之,當一個通信請求從下層總線轉發到其子總線時,子總線需要對通信請求附帶的數據進行解包,通過文本解析、反射技術,將下層總線傳來的基本數據類型的轉換為子總線定義的較具體的擴展數據類型,從而便於進行後續處理。
【文檔編號】G06F13/40GK103714035SQ201310751618
【公開日】2014年4月9日 申請日期:2013年12月31日 優先權日:2013年12月31日
【發明者】楊孟飛, 郭向英, 顧斌, 趙雷, 陳睿, 郝偉, 盛莊, 黃晨, 沈沛 申請人:北京控制工程研究所