• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      插件體系結(jié)構(gòu)軟件的原理和實(shí)現(xiàn)

      2010-04-12 06:28:42
      科技傳播 2010年18期
      關(guān)鍵詞:配置文件管理器體系結(jié)構(gòu)

      陳 翥

      成都飛機(jī)設(shè)計(jì)研究所,四川 成都 610041

      0 引言

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

      成都飛機(jī)設(shè)計(jì)研究所現(xiàn)擁有OA、經(jīng)費(fèi)管理、P3E等多個(gè)應(yīng)用系統(tǒng),由于各應(yīng)用系統(tǒng)之間流程未能集成,造成流程的中斷,故考慮通過RTX進(jìn)行不同應(yīng)用系統(tǒng)流程間的消息推送。在不影響RTX正常使用的前提下,開發(fā)人員充分利用插件體系結(jié)構(gòu)技術(shù),自主開發(fā)了“應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息插件”。本文以RTX“應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息插件”開發(fā)為例,分析插件體系結(jié)構(gòu)軟件的設(shè)計(jì)原理與實(shí)現(xiàn)過程。

      1 插件體系結(jié)構(gòu)原理

      插件體系結(jié)構(gòu)是近年發(fā)展起來的一種軟件體系結(jié)構(gòu),其本質(zhì)在于不修改軟件主體的情況下對軟件功能進(jìn)行擴(kuò)展與加強(qiáng),當(dāng)插件的接口公開后,任何公司或個(gè)人都可以制作自己的插件來解決一些操作上的不便或增加新的功能,也就是實(shí)現(xiàn)真正意義上的“即插即用”軟件開發(fā)。體系結(jié)構(gòu)見圖1:

      圖1

      插件軟件結(jié)構(gòu)將待開發(fā)的目標(biāo)軟件分為兩部分,一部分為程序的主體或主框架,可定義為平臺;另一部分為功能擴(kuò)展或補(bǔ)充模塊,可定義為插件。平臺所完成的功能應(yīng)為一個(gè)軟件系統(tǒng)的核心和基礎(chǔ),這些基本功能即可為用戶使用,也可為插件使用,就是又可以把平臺功能分為兩個(gè)部分,內(nèi)核功能和插件處理功能。平臺的內(nèi)核功能是整個(gè)軟件的基礎(chǔ),一個(gè)軟件的大部分功能應(yīng)由內(nèi)核功能完成。平臺的插件處理功能用于擴(kuò)展平臺和管理插件,為插件操縱平臺和與插件通信提供標(biāo)準(zhǔn)平臺擴(kuò)展接口。插件所完成的功能是對平臺功能的擴(kuò)展與補(bǔ)充。

      為了實(shí)現(xiàn)插件結(jié)構(gòu)的軟件設(shè)計(jì)需要定義兩個(gè)標(biāo)準(zhǔn)接口,一個(gè)為由平臺所實(shí)現(xiàn)的平臺擴(kuò)展接口;另一個(gè)為插件所實(shí)現(xiàn)的插件接口。這里需要說明的是:平臺擴(kuò)展接口完全由平臺實(shí)現(xiàn),插件只是調(diào)用和使用,插件接口完全由插件實(shí)現(xiàn),平臺也只是調(diào)用和使用。平臺擴(kuò)展接口實(shí)現(xiàn)插件向平臺方向的單向通信,插件通過平臺擴(kuò)展接口可獲取主框架的各種資源和數(shù)據(jù)。插件接口為平臺向插件方向的單向通信,平臺通過插件接口調(diào)用插件所實(shí)現(xiàn)的功能。

      2 插件體系結(jié)構(gòu)的實(shí)現(xiàn)

      那么用什么樣的方法和技術(shù)實(shí)現(xiàn)插件(程序插件),從目前已有這方面軟件的設(shè)計(jì)方法來看,一種是使用傳統(tǒng)DLL方法的實(shí)現(xiàn);另一種是使用COM方法的實(shí)現(xiàn)。

      不管用那種方式實(shí)現(xiàn),平臺與插件之間必須事先定義好接口規(guī)范。對于第一種方式而言,接口規(guī)范是一系列的函數(shù),這些函數(shù)由插件DLL引出,由平臺來調(diào)用;對于第二種方式,接口規(guī)范是COM接口,插件是一個(gè)COM組件。

      第二種方式在第一種方式的基礎(chǔ)上解決了跨進(jìn)程、跨平臺的問題。它是一種更規(guī)范、更先進(jìn)的方式,RTX也采用了這種實(shí)現(xiàn)方式。為此開發(fā)人員圍繞RTX插件體系結(jié)構(gòu)、RTX插件的管理機(jī)制、RTX接口等方面進(jìn)行了深入的研究。

      2.1 RTX體系結(jié)構(gòu)

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

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

      RTXC插件則是由用戶開發(fā),實(shí)現(xiàn)了IRTXCPlugin接口的COM組件,它實(shí)現(xiàn)用戶需要的一些特殊功能,作為RTXC功能的擴(kuò)充部分。

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

      2.2 RTX插件管理機(jī)制

      對于插件體系結(jié)構(gòu)的應(yīng)用程序,平臺的插件管理功能是必不可少的,它包括了插件的注冊、加載、啟用、停用、卸載等功能。為了實(shí)現(xiàn)插件的動態(tài)加載,平臺必須解決兩個(gè)問題,一是平臺必須知道要加載的插件放在什么地方;二是平臺必須自動確定那些插件需要被加載、啟用、停用、卸載。

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

      2.2.1 未安裝插件

      當(dāng)用戶未安裝插件時(shí),PLUGINS目錄下沒有任何內(nèi)容,配置文件RTXPlugins.xml的內(nèi)容也只有簡單的兩行:

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

      2.2.2 安裝插件后

      安裝插件后,RTX會自動的將插件安裝到…/TENCENT/RTXC/PLUGINS/MESSAGESENDPLUGIN路徑下,同時(shí)在配置文件中注冊應(yīng)用系統(tǒng)裝發(fā)消息插件的內(nèi)容,此時(shí)RTXPlugins.xml文件的內(nèi)容如下:

      -

      Name = “應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息”

      Description = “應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息插件”

      AutoLoad = “1”

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

      如果RTX在這種狀態(tài)下啟動,插件管理器自動讀取配置文件后發(fā)現(xiàn)有應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息插件的信息,根據(jù)標(biāo)志位AutoLoad=“1”,確定該插件應(yīng)該加載到RTX中并啟用,然后到配置文件中指定的路徑去加載插件MessageSendPlugin.dll。

      2.2.3 啟用插件

      當(dāng)用戶啟用插件時(shí),RTX自動將配置文件中該插件的標(biāo)志位AutoLoad設(shè)為1。下次啟動RTX時(shí),RTX插件管理器將根據(jù)此加載該插件。

      2.2.4 停止插件

      當(dāng)用戶停止插件時(shí),RTX自動將配置文件中該插件的標(biāo)志位AutoLoad設(shè)為0。下次啟動RTX時(shí),RTX插件管理器將根據(jù)此加載該插件,但不啟用。

      2.2.5 卸載插件

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

      2.3 RTX接口

      在插件體系結(jié)構(gòu)中,接口在平臺于插件之間的通信起著至關(guān)重要的作用。RTX中涉及到兩類接口,一類時(shí)由平臺定義,但由插件實(shí)現(xiàn),提供給平臺調(diào)用的插件接口(見表1);另一類是由平臺定義并實(shí)現(xiàn),提供給插件調(diào)用的平臺擴(kuò)展接口(見表2)。

      表1 插件接口

      表2 平臺擴(kuò)展接口

      2.4 應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息插件的設(shè)計(jì)與實(shí)現(xiàn)

      通過RTX轉(zhuǎn)發(fā)應(yīng)用系統(tǒng)消息需要記錄每次消息轉(zhuǎn)發(fā)的全過程,同時(shí)要考慮消息接收人離線不能接收本次消息的狀況。針對這種需求,應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息插件設(shè)計(jì)了6種消息命令,分別標(biāo)識6種狀態(tài)。

      1)CMD_MESSQGE_SEND:發(fā)送方將轉(zhuǎn)發(fā)的應(yīng)用系統(tǒng)消息發(fā)送給服務(wù)器;

      2)CMD_DB_MESSAGE_SEND:服務(wù)器記錄本次消息的情況,并將消息轉(zhuǎn)發(fā)給未離線的接收方;

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

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

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

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

      在應(yīng)用系統(tǒng)轉(zhuǎn)發(fā)消息插件的實(shí)現(xiàn)中,除了實(shí)現(xiàn)了插件最基本的接口IRTXPlugin外,還實(shí)現(xiàn)了于RTX TAB頁相關(guān)的接口,讓該插件的圖標(biāo)能出現(xiàn)在RTX下方TAB頁上供用戶實(shí)現(xiàn)歷史消息查詢操作。為了保證數(shù)據(jù)傳輸?shù)目煽啃院涂旖菪?,該插件采用RTX內(nèi)部通道來發(fā)送消息,調(diào)用了IRTXCRoot、IRTXCData等RTX提供的擴(kuò)展接口。

      3 結(jié)論

      插件體系結(jié)構(gòu)是一種開放的體系結(jié)構(gòu),由于它具有功能無限擴(kuò)展性,為延長商業(yè)軟件的壽命起到了很重要的作用。RTX正是采用這種機(jī)制,充分利用第三方和用戶的力量不斷為其進(jìn)行功能擴(kuò)充,增強(qiáng)了RTX的生命力。

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

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

      猜你喜歡
      配置文件管理器體系結(jié)構(gòu)
      提示用戶配置文件錯(cuò)誤 這樣解決
      應(yīng)急狀態(tài)啟動磁盤管理器
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      Windows文件緩沖處理技術(shù)概述
      忘記ESXi主機(jī)root密碼怎么辦
      基于粒計(jì)算的武器裝備體系結(jié)構(gòu)超網(wǎng)絡(luò)模型
      作戰(zhàn)體系結(jié)構(gòu)穩(wěn)定性突變分析
      基于DODAF的裝備體系結(jié)構(gòu)設(shè)計(jì)
      基于云計(jì)算的航天器控制系統(tǒng)自組織體系結(jié)構(gòu)
      鄢陵县| 综艺| 安仁县| 武穴市| 鲁甸县| 长丰县| 新田县| 商水县| 县级市| 阳信县| 武宣县| 武胜县| 丹东市| 正宁县| 酉阳| 深圳市| 拜泉县| 阜新市| 宣恩县| 鄯善县| 黄龙县| 禹城市| 图木舒克市| 绥棱县| 麻城市| 榆树市| 湖口县| 湾仔区| 山西省| 平塘县| 会东县| 辉南县| 玉屏| 绥滨县| 大同县| 湟源县| 朝阳区| 新巴尔虎左旗| 平原县| 台前县| 拜泉县|