?

插件體系結構軟件的原理和實現

2010-04-12 06:28
科技傳播 2010年18期
關鍵詞:配置文件管理器體系結構

陳 翥

成都飛機設計研究所,四川 成都 610041

0 引言

隨著計算機技術的發展,軟件體系結構和開發方法也在發生著重大變化。為了高效率地進行軟件開發,并且開發出高質量的產品,人們一直在尋求更好的軟件體系結構和開發方法。插件式軟件體系結構和開發方法正得到越來越多的應用,當前有很多成功的軟件產品采用此種體系結構來開發。插件式體系結構是一種非常靈活的組件式結構,它把程序的功能分散在插件中來完成,插件是獨立于系統可獨立開發的程序模塊,它能夠動態地插入到系統中,并且插件可以被自由地插入、刪除和替換。因此,它有著相當突出的優點:能夠提高軟件開發的并行性和開發效率,降低設計開發難度,縮短開發周期,增強應用程序的可運行性、可測試性和可維護性。

成都飛機設計研究所現擁有OA、經費管理、P3E等多個應用系統,由于各應用系統之間流程未能集成,造成流程的中斷,故考慮通過RTX進行不同應用系統流程間的消息推送。在不影響RTX正常使用的前提下,開發人員充分利用插件體系結構技術,自主開發了“應用系統轉發消息插件”。本文以RTX“應用系統轉發消息插件”開發為例,分析插件體系結構軟件的設計原理與實現過程。

1 插件體系結構原理

插件體系結構是近年發展起來的一種軟件體系結構,其本質在于不修改軟件主體的情況下對軟件功能進行擴展與加強,當插件的接口公開后,任何公司或個人都可以制作自己的插件來解決一些操作上的不便或增加新的功能,也就是實現真正意義上的“即插即用”軟件開發。體系結構見圖1:

圖1

插件軟件結構將待開發的目標軟件分為兩部分,一部分為程序的主體或主框架,可定義為平臺;另一部分為功能擴展或補充模塊,可定義為插件。平臺所完成的功能應為一個軟件系統的核心和基礎,這些基本功能即可為用戶使用,也可為插件使用,就是又可以把平臺功能分為兩個部分,內核功能和插件處理功能。平臺的內核功能是整個軟件的基礎,一個軟件的大部分功能應由內核功能完成。平臺的插件處理功能用于擴展平臺和管理插件,為插件操縱平臺和與插件通信提供標準平臺擴展接口。插件所完成的功能是對平臺功能的擴展與補充。

為了實現插件結構的軟件設計需要定義兩個標準接口,一個為由平臺所實現的平臺擴展接口;另一個為插件所實現的插件接口。這里需要說明的是:平臺擴展接口完全由平臺實現,插件只是調用和使用,插件接口完全由插件實現,平臺也只是調用和使用。平臺擴展接口實現插件向平臺方向的單向通信,插件通過平臺擴展接口可獲取主框架的各種資源和數據。插件接口為平臺向插件方向的單向通信,平臺通過插件接口調用插件所實現的功能。

2 插件體系結構的實現

那么用什么樣的方法和技術實現插件(程序插件),從目前已有這方面軟件的設計方法來看,一種是使用傳統DLL方法的實現;另一種是使用COM方法的實現。

不管用那種方式實現,平臺與插件之間必須事先定義好接口規范。對于第一種方式而言,接口規范是一系列的函數,這些函數由插件DLL引出,由平臺來調用;對于第二種方式,接口規范是COM接口,插件是一個COM組件。

第二種方式在第一種方式的基礎上解決了跨進程、跨平臺的問題。它是一種更規范、更先進的方式,RTX也采用了這種實現方式。為此開發人員圍繞RTX插件體系結構、RTX插件的管理機制、RTX接口等方面進行了深入的研究。

2.1 RTX體系結構

RTX是騰訊公司推出的基于客戶服務器架構的企業級即時通信平臺,為滿足企業多樣化的需求,無論在服務器端還是客戶端都提供了二次開發的接口體系,為用戶在RTX平臺上開發特定的軟件功能提供了便利。本文僅以RTX客戶端(以下簡稱RTXC)為例來說明插件體系結構的實現方式RTXC的體系結構如圖1。

RTXC平臺指的是騰訊公司發布的RTX客戶端軟件,它包括了兩部分,一是RTXC的內核功能,即RTXC的基本功能部分;二是RTXC與插件交互相關的功能,包括插件的發現、加載、啟用、卸載等功能。

RTXC插件則是由用戶開發,實現了IRTXCPlugin接口的COM組件,它實現用戶需要的一些特殊功能,作為RTXC功能的擴充部分。

RTXC由平臺與插件兩部分組成,平臺不依賴于插件而存在,沒有插件它也能單獨運行。但插件卻需要依賴于平臺,只有它被平臺加載后才能發揮作用。另外,插件是否被啟用并不是由插件本身決定,而是由RTX客戶端用戶來決定。最后,被用戶啟用的插件還需要通過平臺進行實例化才能真正的發揮最用。

2.2 RTX插件管理機制

對于插件體系結構的應用程序,平臺的插件管理功能是必不可少的,它包括了插件的注冊、加載、啟用、停用、卸載等功能。為了實現插件的動態加載,平臺必須解決兩個問題,一是平臺必須知道要加載的插件放在什么地方;二是平臺必須自動確定那些插件需要被加載、啟用、停用、卸載。

在RTXC中,專門提供了一個插件管理器來進行插件的管理,該插件管理器由COM組件RTXPluginMgr來具體實現。對于插件存放位置的問題,RTX的解決方案是將插件統一的存放到應用程序的特定目錄下,即…/TECENT/RTXC/PLUGINS/插件名稱。對于插件加載的問題,RTX將每個插件的配置信息存放到文件RTXPlugins.xml中,并根據配置文件中每個插件的標志位AutoLoad來決定對該插件的處理方式。如果允許加載,就到配置文件中Identifier標識的位置去加載插件。

2.2.1 未安裝插件

當用戶未安裝插件時,PLUGINS目錄下沒有任何內容,配置文件RTXPlugins.xml的內容也只有簡單的兩行:

如果RTX在這種狀態下啟動,插件管理器自動讀取配置文件內容后將不做任何操作。

2.2.2 安裝插件后

安裝插件后,RTX會自動的將插件安裝到…/TENCENT/RTXC/PLUGINS/MESSAGESENDPLUGIN路徑下,同時在配置文件中注冊應用系統裝發消息插件的內容,此時RTXPlugins.xml文件的內容如下:

-

Name = “應用系統轉發消息”

Description = “應用系統轉發消息插件”

AutoLoad = “1”

Identifier=“Tencent.RTX.MessageSendPlugin”>PluginsMessageSendPluginMessageSendPlugin.dll

如果RTX在這種狀態下啟動,插件管理器自動讀取配置文件后發現有應用系統轉發消息插件的信息,根據標志位AutoLoad=“1”,確定該插件應該加載到RTX中并啟用,然后到配置文件中指定的路徑去加載插件MessageSendPlugin.dll。

2.2.3 啟用插件

當用戶啟用插件時,RTX自動將配置文件中該插件的標志位AutoLoad設為1。下次啟動RTX時,RTX插件管理器將根據此加載該插件。

2.2.4 停止插件

當用戶停止插件時,RTX自動將配置文件中該插件的標志位AutoLoad設為0。下次啟動RTX時,RTX插件管理器將根據此加載該插件,但不啟用。

2.2.5 卸載插件

當用戶卸載插件時,RTX自動將配置文件中該插件的標志位AutoLoad設為2。下次啟動RTX時,RTX插件管理器將根據此從RTX平臺上刪除該插件。即刪除插件的安裝和配置信息。

2.3 RTX接口

在插件體系結構中,接口在平臺于插件之間的通信起著至關重要的作用。RTX中涉及到兩類接口,一類時由平臺定義,但由插件實現,提供給平臺調用的插件接口(見表1);另一類是由平臺定義并實現,提供給插件調用的平臺擴展接口(見表2)。

表1 插件接口

表2 平臺擴展接口

2.4 應用系統轉發消息插件的設計與實現

通過RTX轉發應用系統消息需要記錄每次消息轉發的全過程,同時要考慮消息接收人離線不能接收本次消息的狀況。針對這種需求,應用系統轉發消息插件設計了6種消息命令,分別標識6種狀態。

1)CMD_MESSQGE_SEND:發送方將轉發的應用系統消息發送給服務器;

2)CMD_DB_MESSAGE_SEND:服務器記錄本次消息的情況,并將消息轉發給未離線的接收方;

3)CMD_MESSAGE_LOGIN:通知服務器該賬號上線;

4)CMD_OFFLINE_MESSAGE_SEND:服務器接收到上線消息后,查詢該賬號的離線后;的消息記錄,如有則發送該賬號的離線消息記錄給該賬號;

5)CMD_MESSAGE_QUERY:發送方向服務器發送查詢本賬號歷次消息記錄的請求;

6)CMD_MESSAGE_HISTORY_SEND:服務器收到查詢消息記錄請求后,查詢數據庫記錄后返回該賬號的歷史消息信息。

在應用系統轉發消息插件的實現中,除了實現了插件最基本的接口IRTXPlugin外,還實現了于RTX TAB頁相關的接口,讓該插件的圖標能出現在RTX下方TAB頁上供用戶實現歷史消息查詢操作。為了保證數據傳輸的可靠性和快捷性,該插件采用RTX內部通道來發送消息,調用了IRTXCRoot、IRTXCData等RTX提供的擴展接口。

3 結論

插件體系結構是一種開放的體系結構,由于它具有功能無限擴展性,為延長商業軟件的壽命起到了很重要的作用。RTX正是采用這種機制,充分利用第三方和用戶的力量不斷為其進行功能擴充,增強了RTX的生命力。

[1][美]DONBOX著.COM本質論.潘愛民,譯.北京:中國電力出版社,2001.

[2]RTX2006ClientSDK.chm.騰訊公司.

猜你喜歡
配置文件管理器體系結構
Windows文件緩沖處理技術概述
忘記ESXi主機root密碼怎么辦
基于粒計算的武器裝備體系結構超網絡模型
打印機設置
作戰體系結構穩定性突變分析
基于DODAF的裝備體系結構設計
基于云計算的航天器控制系統自組織體系結構
高集成度2.5A備份電源管理器簡化鋰離子電池備份系統
在Win 7下利用憑據管理器提高訪問速度等
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合