基於CAR構件的使用者自定義事件機制的研究

2022-10-18 04:36:16 字數 3750 閱讀 6618

摘要: 提出一種基於car構件的使用者自定義事件使用者自定義事件機制。該機制是一種適用於嵌入式系統的、使用者自定義的、實現客戶與構件間互動通訊的計算機執行環境的事件管理機制及裝置。

該機制可自動生成構件,生成構件具有公升級獨立性、構件互操作的簡單快速性、介面重用性、構件本地/遠端透明化、程式語言無關性等特性。該機制遮蔽了客戶程式呼叫構件物件過程中繁瑣的細節,大大簡化了客戶程式的實現。 關鍵詞:

car構件使用者自定義事件**

現有的構件技術中客戶與構件之間的通訊過程多為單向;客戶建立構件物件,然後客戶呼叫物件所提供的介面函式,在這樣的互動過程中,客戶總是主動的,而構件物件則處於被動狀態。對於乙個全面的互動過程,這樣的單向通訊往往不能滿足實際需要。 微軟提供的可連線物件技術可實現構件對客戶的呼叫。

但該技術需要使用者去實現客戶程式與構件物件的連線、事件的激發、接收器的編寫等;而且只能以介面為單位註冊,即不能為介面中每個成員函式分別註冊。另外,windows應用程式應用程式都必須有乙個訊息迴圈以處理訊息佇列中windows傳送過來的訊息。這樣每個應用程式都有乙個等待訊息的執行緒,當同時執行的程式較多時,占用系統資源比較大。

com技術主要解決的問題:不同**的構件實現互操作,構件公升級不影響其他構件、獨立於程式語言,構件在程序內、跨程序甚至跨網路執行的透明度。但呼叫com構件物件的過程相當繁瑣,不易操作。

本文提出一種基於car構件的使用者自定義事件機制, 該機制能夠實現構件端和客戶端客戶端的互動操作,跨平台的構件開發、執行環境和構件庫;其通過在作業系統上自動生成中介軟體(**構件),提供構件定位、呼叫、管理、中介軟體啟動生成、構件通訊的程序內、跨程序、跨網功能;並保證軟體互操作性、版本公升級獨立性,具有執行環境透明性、軟體協同開發、軟體容錯、可靠性、軟體復用、軟體公升級的能力;具有構件公升級的獨立性、簡單快速的構件互操作、介面重用、本地/遠端透明性、程式語言無關性的特性。該機制還可自動實現標準介面類封裝層,遮蔽呼叫com構件物件過程的繁瑣細節,從而簡化客戶程式的實現。 基於car構件的使用者自定義事件機制,其技術實現包括設定事件管理方(eventmanager)、事件傳送方(eventdispatcher)兩個方面,兩者通過介面建立關聯,其具體實施過程。

該機制包括事件管理方——客戶端以及事件傳送方——構件端。其中連線點物件記錄

了包含已註冊事件處理函式指標函式指標的接收器的介面指標。其實施過程包括:(1)註冊事件時儲存idispatch介面指標到連線點物件中;(2)註冊事件時把標識該連線的dwcookie儲存到eventhandler中;(3)激發事件時,利用所儲存的idispatch介面指標呼叫其invoke方法;(4)利用eventhandler所儲存的dwcookie登出事件。

事件傳送方組織不同引數構成可連線物件事件,可連線物件事件具有介面,使用者自定義事件函式介面註冊。具體地,事件傳送方在可連線物件事件內設定事件標識,事件管理方建立接收器,將事件函式指標打包設定在事件管理方的接收器內。接收器具有介面,通過註冊與可連線物件端連線,把可連線物件介面指標寫入對應的接收器內,並把包含事件處理函式指標的接收器所提供的介面指標設定在對應的可連線物件內。

在條件符合時,事件傳送方激發事件,通過接收器介面,事件管理方****函式,並解包,執行程式。事件管理方的接收器通過介面尋找事件標識,獲得該事件連線點物件的連線介面指標。其中事件處理函式引數中的第乙個引數包括該事件介面的類的智慧型指標,用於標識事件的傳送者;第二個及其後的引數與構件定義中的事件引數定義相同。

介面包括普通介面和事件介面。其中普通介面為入介面,用於向客戶端提供服務;事件介面為出介面,用於事件發生時**客戶端所註冊的事件處理函式。物件通過事件介面與客戶進行通訊,而每乙個介面有惟一的識別符號,構件若需新增新的功能,必須先定義新的介面描述。

當激發事件時,系統將按照處理函式的註冊順序呼叫各個事件處理函式。 另外,對於已註冊事件,在不需要該事件時可進行登出事件處理,取消該可連線物件事件對應的事件處理函式的連線。具體為可連線物件內取消接收器介面指標,接收器物件被刪除(它所儲存的事件處理函式指標和可連線物件指標也就沒了)。

為實現一對多或多對一的情況,事件傳送方內設定乙個以上可連線物件事件,每個事件對應乙個可連線物件;事件管理方內可建立乙個以上接收器。 為將同乙個事件處理函式註冊到不同物件的事件中,事件管理方接收器可與乙個以上的可連線物件建立關係;事件傳送方可連線物件可與乙個以上事件管理方接收器建立關係。可將同乙個事件對應的多個事件處理函式註冊,也就是乙個事件可對應多個事件處理函式,用於分別執行同一事件的不同註冊請求。

為更好地管理可連線物件狀態,可連線物件設定有過載處理,用於作為可連線物件處於可呼叫狀態的「開或關」,管理可連線物件是

是否能夠被呼叫。 在事件管理方第一次註冊某可連線物件時,呼叫過載處理,也就是將可連線物件的呼叫狀態設定為「開」;在事件管理方最後一次登出可連線物件時,呼叫過載處理,將可連線物件的呼叫狀態設定為「關」;沒有過載處理時,執行空操作。其中,可連線物件設定連線計數器,用於統計該可連線物件所建立連線的數量,每註冊一次,計數器加1;登出一次,計數器減1。

當計數器數量為零時,呼叫過載處理,將可連線物件的呼叫狀態設定為「關」。 事件傳送方內設有介面指標容器,用於儲存可連線物件事件的描述資訊以及介面指標。事件管理方內的接收器註冊時,通過介面指標容器尋找所需要的可連線物件事件。

這樣具體的尋找方式為列舉方式,逐一尋找事件標識,再連線指標將具體事件對應的事件標識傳入,獲得該事件連線點物件的連線介面指標。 事件管理方設有與應用程式連線的管理介面,用於接收應用程式的呼叫,應用程式通過該介面把事件處理函式的指標傳入事件管理方,事件管理方再去註冊該事件處理函式。因為事件管理方的註冊、**等**是自動生成的,所以需要這個介面與應用程式互動。

事件傳送方分發事件,事件管理方實現事件處理函式指標的儲存、與原物件端的連線、**函式的過程,兩者通過介面建立通訊。其中建立通訊應包括使用者自定義的介面註冊,具體步驟;根據註冊資訊進行事件激發的步驟,具體步驟;用於登出事件處理函式的登出步驟,具體步驟機制的客戶註冊事件處理函式將完成以下操作: 步驟1:

獲得事件管理方介面指標; 步驟2:通過事件管理方介面建立接收器物件(eventhandler),儲存事件處理函式的指標到該物件中; 步驟3:利用源物件提供的連線點容器介面中的尋找連線指標函式,找到與該事件對應的連線點物件; 步驟4:

通過連線點物件提供的連線點指標介面中的advise函式,把事件接收器提供的管理方介面註冊到源物件端; 步驟5:註冊時獲得標識該連線的dwcookie,儲存到接收器物件中。 ,構件激發事件將完成以下操作:

步驟1:列舉與該事件對應的連線點物件中的每個連線; 步驟2:把事件的引數打包,並對每個連線呼叫其idispatch介面中的invoke函式,以激發事件; 步驟3:

接收器物件把傳過來的invoke的引數解包,並通過其儲存的函式指標呼叫事件處理函式。 ,客戶登出事件處理函式將完成以下操作: 步驟1:

通過事件處理函式的指標和事件的eid(event id 事件標識)找到對應的接收器物件

; 步驟2:獲得接收器物件儲存的標識該連線的dwcookie; 步驟3:,找到與該事件對應的連線點物件;

步驟4:通過連線點物件提供的iconnectionpoint介面中的unadvise函式,傳入dwcookie作引數,登出事件處理器提供的idispatch介面; 步驟5:釋放接收器物件。

基於car構件的使用者自定義事件機制實現了跨平台的構件開發和執行環境,該機制安全可靠,容錯性好,並且小型高效。該機制可運用於嵌入式作業系統圖形系統,作業系統只在有事件發生時**使用者程式的事件處理函式,不需要訊息迴圈。使用者程序可以沒有執行緒,作業系統在有事件發生時,再啟動執行緒執行事件處理函式,從而大大提高了作業系統的效率。

elastos的圖形系統即採用該機制。 該機制還可用於嵌入式系統的驅動程式。使用者程式或作業系統把事件處理函式註冊到用事件機制編寫的裝置驅動程式構件中。

當有硬體中斷時,驅動程式直接**使用者程式或作業系統的事件處理函式。這樣就可以省去用執行緒定期查詢裝置狀態的資源,也使程式編寫變得更簡單。

自定義數字格式的準則

若要建立自定義數字格式,首先應從選擇某一內建數字格式開始。然後,可以更改該格式的任意 部分,從而建立自己的自定義數字格式。數字格式最多可包含四個 部分,各個部分用分號分隔。這些 部分按先後順序定義正數 負數 零值和文字的格式。正數 負數 零 文字 例如,可以使用這些 部分建立以下自定義格式 藍色 0...

自定義工作流的功能分析

聯盟 的定義,工作流就是 一類能夠 完全或者部分自動執行的經營過程,它根 據一系列過程規則 文件 資訊或任務能 夠在不同的執行者之間進行傳遞與執 行 通俗地理解,工作流就是把原本通過 口頭或紙面等傳統途徑進行流轉的工作,搬到計算機網路上實現。舉個簡單的例子 用車申請 傳統的方法是用車人填寫 申請單,...

商易財務軟體自定義報表的使用說明

原文位址 在商易財務軟體中單擊 財務分析 自定義報表 自定義報表共三種,分別為 系統報表 rpt檔案 excel報表 xls檔案 和wps報表 et檔案 系統報表 系統報表是財務軟體預設的報 式,使用者可以修改其取數公式或顯示內容。如下圖所示 在系統報表中,選擇要顯示的報表及會計期間,然後單擊 確定...