《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 基于CAR構件的用戶自定義事件機制的研究

基于CAR構件的用戶自定義事件機制的研究

2008-07-09
作者:葉 蓉1,2,陳 榕1

??? 摘 要: 提出一種基于CAR構件的用戶自定義事件" title="用戶自定義事件">用戶自定義事件機制。該機制是一種適用于嵌入式系統的、用戶自定義的、實現客戶與構件間交互通信的計算機運行環境的事件管理機制及裝置。該機制可自動生成構件,生成構件具有升級獨立性、構件互操作的簡單快速性、接口重用性、構件本地/遠程透明化、編程語言無關性等特性。該機制屏蔽了客戶程序調用構件對象過程中繁瑣的細節,大大簡化了客戶程序的實現。
?? ?關鍵詞: CAR構件? 用戶自定義事件? 回調

?

??? 現有的構件技術中客戶與構件之間的通信過程多為單向;客戶創建構件對象,然后客戶調用對象所提供的接口函數,在這樣的交互過程中,客戶總是主動的,而構件對象則處于被動狀態。對于一個全面的交互過程,這樣的單向通信往往不能滿足實際需要。
??? 微軟提供的可連接對象技術可實現構件對客戶的調用。但該技術需要用戶去實現客戶程序與構件對象的連接、事件的激發、接收器的編寫等;而且只能以接口為單位注冊,即不能為接口中每個成員函數分別注冊。另外,Windows應用程序" title="應用程序">應用程序都必須有一個消息循環以處理消息隊列中Windows發送過來的消息。這樣每個應用程序都有一個等待消息的線程,當同時運行的程序較多時,占用系統資源比較大。
??? COM技術主要解決的問題:不同來源的構件實現互操作,構件升級不影響其他構件、獨立于編程語言,構件在進程內、跨進程甚至跨網絡運行的透明度。但調用COM構件對象的過程相當繁瑣,不易操作。
??? 本文提出一種基于CAR構件的用戶自定義事件機制, 該機制能夠實現構件端和客戶端" title="客戶端">客戶端的交互操作,跨平臺的構件開發、運行環境和構件庫;其通過在操作系統上自動生成中間件(代理構件),提供構件定位、調用、管理、中間件啟動生成、構件通信的進程內、跨進程、跨網功能;并保證軟件互操作性、版本升級獨立性,具有運行環境透明性、軟件協同開發、軟件容錯、可靠性、軟件復用、軟件升級的能力;具有構件升級的獨立性、簡單快速的構件互操作、接口重用、本地/遠程透明性、編程語言無關性的特性。該機制還可自動實現標準接口類封裝層,屏蔽調用COM構件對象過程的繁瑣細節,從而簡化客戶程序的實現。
??? 基于CAR構件的用戶自定義事件機制,其技術實現包括設置事件管理方(EventManager)、事件發送方(EventDispatcher)兩個方面,兩者通過接口建立關聯,其具體實施過程如圖1所示。該機制包括事件管理方——客戶端以及事件發送方——構件端。其中連接點對象記錄了包含已注冊事件處理函數指針" title="函數指針">函數指針的接收器的接口指針。其實施過程包括:(1)注冊事件時保存IDispatch接口指針到連接點對象中;(2)注冊事件時把標識該連接的dwCookie保存到EventHandler中;(3)激發事件時,利用所保存的IDispatch接口指針調用其Invoke方法;(4)利用EventHandler所保存的dwCookie注銷事件。

?

?

??? 事件發送方組織不同參數構成可連接對象事件,可連接對象事件具有接口,用戶自定義事件函數接口注冊。具體地,事件發送方在可連接對象事件內設置事件標識,事件管理方創建接收器,將事件函數指針打包設置在事件管理方的接收器內。接收器具有接口,通過注冊與可連接對象端連接,把可連接對象接口指針寫入對應的接收器內,并把包含事件處理函數指針的接收器所提供的接口指針設置在對應的可連接對象內。在條件符合時,事件發送方激發事件,通過接收器接口,事件管理方回調" title="回調">回調函數,并解包,執行程序。事件管理方的接收器通過接口尋找事件標識,獲得該事件連接點對象的連接接口指針。其中事件處理函數參數中的第一個參數包括該事件接口的類的智能指針,用于標識事件的發送者;第二個及其后的參數與構件定義中的事件參數定義相同。接口包括普通接口和事件接口。其中普通接口為入接口,用于向客戶端提供服務;事件接口為出接口,用于事件發生時回調客戶端所注冊的事件處理函數。對象通過事件接口與客戶進行通信,而每一個接口有惟一的標識符,構件若需添加新的功能,必須先定義新的接口描述。當激發事件時,系統將按照處理函數的注冊順序調用各個事件處理函數。
??? 另外,對于已注冊事件,在不需要該事件時可進行注銷事件處理,取消該可連接對象事件對應的事件處理函數的連接。具體為可連接對象內取消接收器接口指針,接收器對象被刪除(它所保存的事件處理函數指針和可連接對象指針也就沒了)。
??? 為實現一對多或多對一的情況,事件發送方內設置一個以上可連接對象事件,每個事件對應一個可連接對象;事件管理方內可創建一個以上接收器。
??? 為將同一個事件處理函數注冊到不同對象的事件中,事件管理方接收器可與一個以上的可連接對象建立關系;事件發送方可連接對象可與一個以上事件管理方接收器建立關系。可將同一個事件對應的多個事件處理函數注冊,也就是一個事件可對應多個事件處理函數,用于分別執行同一事件的不同注冊請求。
??? 為更好地管理可連接對象狀態,可連接對象設置有重載處理,用于作為可連接對象處于可調用狀態的“開或關”,管理可連接對象是否能夠被調用。
??? 在事件管理方第一次注冊某可連接對象時,調用重載處理,也就是將可連接對象的調用狀態設置為“開”;在事件管理方最后一次注銷可連接對象時,調用重載處理,將可連接對象的調用狀態設置為“關”;沒有重載處理時,執行空操作。其中,可連接對象設置連接計數器,用于統計該可連接對象所建立連接的數量,每注冊一次,計數器加1;注銷一次,計數器減1。當計數器數量為零時,調用重載處理,將可連接對象的調用狀態設置為“關”。
??? 事件發送方內設有接口指針容器,用于存儲可連接對象事件的描述信息以及接口指針。事件管理方內的接收器注冊時,通過接口指針容器尋找所需要的可連接對象事件。這樣具體的尋找方式為枚舉方式,逐一尋找事件標識,再連接指針將具體事件對應的事件標識傳入,獲得該事件連接點對象的連接接口指針。
??? 事件管理方設有與應用程序連接的管理接口,用于接收應用程序的調用,應用程序通過該接口把事件處理函數的指針傳入事件管理方,事件管理方再去注冊該事件處理函數。因為事件管理方的注冊、回調等代碼是自動生成的,所以需要這個接口與應用程序交互。
??? 事件發送方分發事件,事件管理方實現事件處理函數指針的保存、與原對象端的連接、回調函數的過程,兩者通過接口建立通信。其中建立通信應包括用戶自定義的接口注冊,具體步驟如圖2所示;根據注冊信息進行事件激發的步驟,具體步驟如圖3所示;用于注銷事件處理函數的注銷步驟,具體步驟如圖4所示。

?

?

?

?

??? 如圖2所示,機制的客戶注冊事件處理函數將完成以下操作:
??? 步驟1:獲得事件管理方接口指針;
??? 步驟2:通過事件管理方接口創建接收器對象(EventHandler),保存事件處理函數的指針到該對象中;
??? 步驟3:利用源對象提供的連接點容器接口中的尋找連接指針函數,找到與該事件對應的連接點對象;
??? 步驟4:通過連接點對象提供的連接點指針接口中的Advise函數,把事件接收器提供的管理方接口注冊到源對象端;
??? 步驟5:注冊時獲得標識該連接的dwCookie,保存到接收器對象中。
??? 如圖3所示,構件激發事件將完成以下操作:
??? 步驟1:枚舉與該事件對應的連接點對象中的每個連接;
??? 步驟2:把事件的參數打包,并對每個連接調用其IDispatch接口中的Invoke函數,以激發事件;
??? 步驟3:接收器對象把傳過來的Invoke的參數解包,并通過其保存的函數指針調用事件處理函數。
??? 如圖4所示,客戶注銷事件處理函數將完成以下操作:
??? 步驟1:通過事件處理函數的指針和事件的EID(Event ID 事件標識)找到對應的接收器對象;
??? 步驟2:獲得接收器對象保存的標識該連接的dwCookie;
??? 步驟3:利用源對象提供的IConnectionPointContainer接口中的FindConnectionPoint函數,找到與該事件對應的連接點對象;

??? 步驟4:通過連接點對象提供的IConnectionPoint接口中的Unadvise函數,傳入dwCookie作參數,注銷事件處理器提供的IDispatch接口;
??? 步驟5:釋放接收器對象。
??? 基于CAR構件的用戶自定義事件機制實現了跨平臺的構件開發和運行環境,該機制安全可靠,容錯性好,并且小型高效。
該機制可運用于嵌入式操作系統圖形系統,操作系統只在有事件發生時回調用戶程序的事件處理函數,不需要消息循環。用戶進程可以沒有線程,操作系統在有事件發生時,再啟動線程執行事件處理函數,從而大大提高了操作系統的效率。Elastos的圖形系統即采用該機制。
??? 該機制還可用于嵌入式系統的驅動程序。用戶程序或操作系統把事件處理函數注冊到用事件機制編寫的設備驅動程序構件中。當有硬件中斷時,驅動程序直接回調用戶程序或操作系統的事件處理函數。這樣就可以省去用線程定期查詢設備狀態的資源,也使程序編寫變得更簡單。
參考文獻
[1] Koretide.Elastos2.0Manual.http://www.koretide.com.cn/download/download.php?id=2,2006.
[2] PAN A.COM′s Principle and COM′s Application.The?Tsinghua Press,1999.
[3] ROGERSON D.Inside COM:Microsoft′s Component Object?Model.Microsoft Press,1999.
[4] ECKEL B.Thinking in C++(Second Edition).Prentice Hall,2002.
[5] Koretide.CAR′s Manual[M],2006.
[6] Koretide.Website[EB/OL].http://www.koretide.com.cn
[7] 陳榕,劉藝平.技術報告:基于構件、中間件的因特網操作系統及跨操作系統的構件、中間件運行平臺(863課題技術鑒定文件),2003.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久9热精品视频| 宅男噜噜噜66一区二区| 国产精品美腿一区在线看| 在线亚洲欧美专区二区| 亚洲国产另类精品专区| 国产区精品视频| 欧美国产日本| 国产精品综合久久久| 国产婷婷色一区二区三区四区| 激情欧美丁香| 国产精品久久一卡二卡| 亚洲欧美视频一区二区三区| 亚洲自拍啪啪| 欧美国产成人在线| 狠狠色综合播放一区二区| 亚洲免费高清视频| 亚洲美女视频| 欧美国产视频在线| 欧美视频一区二区三区在线观看| 免费欧美高清视频| 欧美日韩美女| 欧美性感一类影片在线播放| 欧美国产激情二区三区| 亚洲欧美综合国产精品一区| 美女999久久久精品视频| 亚洲欧美韩国| 亚洲在线黄色| 亚洲国产91精品在线观看| 欧美日韩三级电影在线| 国产欧美精品一区二区色综合| 一区二区精品在线| 亚洲国产精品悠悠久久琪琪| 夜色激情一区二区| 国产精品进线69影院| 韩日在线一区| 亚洲最新在线视频| 国产乱人伦精品一区二区| 欧美亚洲一区二区在线观看| 精品动漫3d一区二区三区免费| 欧美日韩亚洲一区在线观看| 亚洲经典在线看| 亚洲久久成人| 久久精品国产清自在天天线| 国内成人精品一区| 欧美日韩一区二区视频在线| 夜夜嗨av一区二区三区免费区| 久久这里只有精品视频首页| 亚洲黄色片网站| 亚洲一区视频在线观看视频| 欧美一区二区三区视频| 国产精品日日做人人爱| 久久国产婷婷国产香蕉| 国内精品久久久久久久影视麻豆| 国产精品久久一级| 性欧美暴力猛交另类hd| 久久久99国产精品免费| 亚洲在线不卡| 国产伊人精品| 中文久久乱码一区二区| 亚洲美女视频网| 国产精品日韩欧美一区| 国产精品久久久久久久久婷婷| 国产一区二区三区久久久| 欧美成人精品福利| 日韩一级欧洲| 亚洲天堂网站在线观看视频| 国产综合久久久久影院| 欧美激情亚洲视频| 狠狠入ady亚洲精品经典电影| 欧美日本中文字幕| 欧美日韩三区| 欧美韩日视频| 亚洲美女黄色| 免费在线观看成人av| 国产精品狼人久久影院观看方式| 久久久久网址| 欧美日韩高清一区| 久久成人国产精品| 亚洲国产精品高清久久久| 亚洲免费一区二区| 欧美视频精品在线| 久久精品国亚洲| 欧美日韩一区免费| 激情久久中文字幕| 国产欧美日韩另类视频免费观看| 亚洲人精品午夜在线观看| 久久久伊人欧美| 精品动漫3d一区二区三区免费版| 久久久久国产一区二区| 久久久久成人精品| 亚洲网站视频福利| 麻豆成人在线| 亚洲国产精品久久久久| 亚洲一区在线免费观看| 欧美国产日韩免费| 激情五月综合色婷婷一区二区| 亚洲网站在线播放| 国产精品久久久久久久app| 激情国产一区| 久久九九热re6这里有精品| 午夜欧美大片免费观看| 久久久亚洲国产美女国产盗摄| 国产精品高清免费在线观看| 国产精品三区www17con| 亚洲午夜高清视频| 校园春色国产精品| 国产亚洲综合性久久久影院| 欧美aaaaaaaa牛牛影院| 久久久91精品国产一区二区精品| 亚洲欧美日韩一区二区| 欧美日韩国产一中文字不卡| 美女露胸一区二区三区| 日韩午夜在线视频| 亚洲精品一区二区三| 国产老肥熟一区二区三区| 国产精品成人一区二区网站软件| 欧美欧美午夜aⅴ在线观看| 老鸭窝亚洲一区二区三区| 亚洲无玛一区| 中日韩美女免费视频网址在线观看| 一区二区三区免费在线观看| 亚洲天堂久久| 国产亚洲欧美日韩一区二区| 久久夜精品va视频免费观看| 久久综合给合久久狠狠色| 欧美黄色一级视频| 欧美日韩久久久久久| 亚洲成色777777在线观看影院| 国语对白精品一区二区| 欧美一区二区三区免费在线看| 亚洲一区网站| 欧美日韩在线播放一区| 久久久久久久高潮| 亚洲午夜精品| 久久一日本道色综合久久| 久久亚洲免费| 国产亚洲在线| 欧美日韩综合另类| 欧美亚洲综合另类| 亚洲一卡二卡三卡四卡五卡| 欧美一级片在线播放| 亚洲激情自拍| 国产精品久久久久久久午夜片| 欧美一级专区| 欧美性猛交xxxx乱大交蜜桃| 老色鬼精品视频在线观看播放| 国产乱人伦精品一区二区| 91久久夜色精品国产九色| 欧美三级精品| 欧美日韩中文字幕综合视频| 国产欧美精品久久| 欧美日韩国产在线播放| 欧美一区二区视频网站| 亚洲欧美日韩精品久久| 一区二区自拍| 91久久精品久久国产性色也91| 欧美一站二站| 国产精品99久久久久久有的能看| 欧美成人精品一区二区三区| 欧美影院成年免费版| 中国成人黄色视屏| 国产精品日韩在线播放| 国产情侣一区| 国产一区日韩一区| 久久国产加勒比精品无码| 欧美日韩国产高清视频| 亚洲资源av| 久久超碰97人人做人人爱| 欧美中文字幕在线播放| 欧美日韩视频不卡| 樱桃成人精品视频在线播放| 久久精品夜色噜噜亚洲aⅴ| 狠狠色伊人亚洲综合成人| 亚洲一区日韩| 亚洲国产欧美一区二区三区同亚洲| 日韩视频精品| 欧美性做爰猛烈叫床潮| 欧美日韩在线播放三区| 久久人人爽爽爽人久久久| 亚洲欧美在线免费观看| 亚洲国产天堂久久综合网| 99精品国产在热久久婷婷| 国产毛片久久| 在线精品高清中文字幕| 欧美一区二区视频97| 亚洲男女自偷自拍图片另类| 亚洲自拍偷拍福利| 国产亚洲视频在线观看| 浪潮色综合久久天堂| 欧美在线资源| 伊人精品成人久久综合软件| 国产一区二区三区最好精华液| 欧美精品日日鲁夜夜添| 免费在线视频一区| 欧美日韩免费| 久久久免费av| 国产伊人精品| 欧美了一区在线观看| 国产亚洲欧美一区在线观看| 欧美黑人国产人伦爽爽爽| 亚洲精品欧洲| 国产亚洲欧洲一区高清在线观看| 久久精品五月婷婷| 久久在线视频在线| 欧美日韩影院| 欧美一区二视频在线免费观看| 国产女主播一区二区| 99re6这里只有精品视频在线观看| 另类亚洲自拍| 国产精品美女久久久| 在线观看成人小视频| 韩日午夜在线资源一区二区| 国产人妖伪娘一区91| 日韩视频一区二区| 亚洲电影有码| 国产精品一区二区a| 国产欧美精品日韩区二区麻豆天美| 欧美日韩视频不卡| 欧美久久一区| 亚洲欧美在线x视频| 激情亚洲一区二区三区四区| 欧美成人精精品一区二区频| 久久精彩视频| 亚洲激情一区二区| 欧美激情一区在线观看| 在线日韩电影| 久久久久久穴| 香蕉成人啪国产精品视频综合网| 亚洲欧美一级二级三级| 久久色在线观看| 欧美日韩免费| 99ri日韩精品视频| 日韩视频在线一区二区三区| 亚洲视频日本| 亚洲桃色在线一区| 国产一区二区看久久| 欧美黄色aa电影| 国产精品专区h在线观看| 亚洲一区欧美二区| 午夜宅男欧美| 欧美欧美天天天天操| 欧美人成网站| 一本色道久久88综合亚洲精品ⅰ| 国产精品xxx在线观看www| 亚洲欧美另类在线观看| 娇妻被交换粗又大又硬视频欧美| 99国内精品久久久久久久软件| 国产精品日本| 亚洲成人自拍视频| 亚洲久色影视| 欧美激情按摩在线| 欧美在线视频播放| 欧美精品色网| 欧美二区在线播放| 国产精品va在线播放我和闺蜜| 欧美中文在线视频| 亚洲精品乱码久久久久久按摩观| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲精品乱码久久久久| 亚洲午夜激情在线| 亚洲人成毛片在线播放| 亚洲高清av在线| 国产精品豆花视频| 洋洋av久久久久久久一区| 久久综合色播五月| 亚洲精品护士| 亚洲片国产一区一级在线观看| 在线免费观看日韩欧美| 性色一区二区| 国产精品成人av性教育| 国产欧美va欧美不卡在线| 欧美激情第五页| 欧美伊人影院| 欧美激情按摩在线| 99re6热只有精品免费观看| 狠狠色狠狠色综合日日91app| 亚洲精品在线观| 欧美日韩p片| 国产日韩av高清| 日韩一二三区视频| 国一区二区在线观看| 欧美福利视频一区| 亚洲欧美成人在线| 亚洲视频第一页| 国产欧美日韩高清| 欧美激情精品久久久久久大尺度| 欧美三区免费完整视频在线观看| 欧美成人午夜剧场免费观看| 久久综合五月天婷婷伊人| 欧美—级高清免费播放| 老牛国产精品一区的观看方式| 一区二区欧美在线| 久久视频在线视频| 亚洲制服av| 亚洲视频一二三| 国产一区二区高清不卡| 黄色日韩在线| 老司机久久99久久精品播放免费| 久久人人爽人人| 日韩视频精品在线观看| 久久一区中文字幕| 国产精品久久久久久五月尺| 蜜臀av国产精品久久久久| 欧美一区二区啪啪| 欧美一级视频精品观看| 亚洲欧美日韩另类精品一区二区三区| 久久成人免费电影| 国产精品久久久久久久久久妞妞| 亚洲最快最全在线视频| 日韩一区二区电影网| 国产一区二区三区久久悠悠色av| 欧美精品自拍偷拍动漫精品| 欧美在线播放高清精品| 久久一区二区精品| 国产精品国产亚洲精品看不卡15| 91久久嫩草影院一区二区| 国产欧美在线看| 国内欧美视频一区二区| 欧美成人精品激情在线观看| 国产精品乱子久久久久| 欧美特黄a级高清免费大片a级| 国产女主播在线一区二区| 亚洲精品国偷自产在线99热| 久热re这里精品视频在线6| 亚洲国产成人精品女人久久久| 亚洲欧美成aⅴ人在线观看| 国产欧美一区二区色老头| 亚洲人成在线观看一区二区|