999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2010-04-12 06:28:42
科技傳播 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.騰訊公司.

猜你喜歡
用戶功能系統
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關于非首都功能疏解的幾點思考
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: 国产小视频免费观看| 92午夜福利影院一区二区三区| 国产91麻豆免费观看| 四虎影院国产| 国产91麻豆免费观看| 九九视频在线免费观看| 国产极品嫩模在线观看91| 色网站免费在线观看| 亚洲色图在线观看| 国产成人无码Av在线播放无广告| 国产精品大白天新婚身材| 欧美视频二区| 久久久久人妻一区精品色奶水| 国产在线视频二区| 九九热这里只有国产精品| 国产精品妖精视频| 国国产a国产片免费麻豆| 性欧美在线| 野花国产精品入口| 手机在线国产精品| 久久精品只有这里有| 中文字幕在线永久在线视频2020| 91福利免费视频| 国产综合日韩另类一区二区| 91免费国产在线观看尤物| 亚洲国产精品人久久电影| 国产三级a| 欧美日韩国产在线人| 国产一区亚洲一区| 九九免费观看全部免费视频| 亚洲国产日韩在线观看| 亚洲人网站| 免费A级毛片无码无遮挡| 亚洲福利片无码最新在线播放| 亚洲一区二区三区在线视频| 国产高清无码麻豆精品| 在线视频亚洲色图| h视频在线播放| 亚洲精选高清无码| 国产亚洲欧美在线视频| 国产成年无码AⅤ片在线| 欧美精品亚洲精品日韩专区| 性色在线视频精品| 久久综合九色综合97网| 久久久久亚洲精品无码网站| 日韩无码视频专区| 欧美日韩激情在线| 亚洲无码高清一区| 国产在线高清一级毛片| 老司机精品久久| 亚洲精品手机在线| 男女男免费视频网站国产| 久久久精品久久久久三级| 欧美精品黑人粗大| 99视频国产精品| 国产精品亚洲一区二区三区在线观看| 国产综合网站| 国产成人狂喷潮在线观看2345| 久久久久久国产精品mv| 狠狠色丁香婷婷| 亚洲天堂网在线观看视频| 国产精品性| 亚洲一区二区三区麻豆| 色综合天天视频在线观看| 亚洲高清无码久久久| 欧美v在线| 一级毛片在线播放免费观看| 少妇精品网站| 国产毛片片精品天天看视频| 久久久久青草大香线综合精品 | av午夜福利一片免费看| 欧美亚洲综合免费精品高清在线观看 | 亚洲欧洲自拍拍偷午夜色无码| 成人在线第一页| 成人午夜免费观看| 成人福利在线视频| 亚洲成A人V欧美综合| 伊人久久久久久久| 精品第一国产综合精品Aⅴ| 日韩无码精品人妻| 日韩在线观看网站| 无码免费的亚洲视频|