複製鏈接
請複製以下鏈接發送給好友

二進制組件

鎖定
二進制組件,是在計算電子或機械設備中組裝在一起形成一個功能單元的一組元件所廣泛採用的一種數字。
中文名
二進制組件
外文名
Binary component
應    用
交通信息

二進制組件利用·Net開發IE二進制行為組件

概述了IE二進制行為組件的工作原理,根據其COM接口原始語義,針對·Net平台的特點進行了重新定義,在此基礎上闡述了利用·Net開發IE二進制行為組件的一般方法,並介紹了在Html頁面文件中使用IE二進制行為組件的方法。 [1] 

二進制組件使用·Net開發IE二進制行為組件的方法

二進制行為組件是COM技術實現的,若採用C++或ATL技術來開發,需要處理很多COM技術細節問題,難度相對較大。但是·Net的出現,使二進制行為組件的開發變得簡單。 由於·Net平台上的COMinterop機制可透 明地處理COM對象和·Net對象之間的交互,使得在·Net上開發IE二進制行為組件更加容易,因為COMinterop機制減輕了開發者處理COM技術細節的負擔,特別是事件的處理變得非常地直觀,這個優勢使得在·Net上開發IE二進制行為組件更加簡單和快速。
IE在有事件發生時會調用二進制行為組件的Notify( )方法,同時傳遞一個事件ID,表明發生了什麼事件,Documentready事件是在Html文檔已經加載完畢時發生的,這個時候很多對象比如document、 element等已經創建完畢,組件可以緩存這些對象以備今後使用,同時也可以做一些初始化的工作,但是最主要的工作是完成事件處理函數的綁定工作,一個定製的Html元素對象如果需要在IE中對鼠標事件或其它的事件作出響應,那麼就必須在這裏為需要響應的事件指定事件處理函數。 在這個例子中只為propertychange事件指定了事件處理函數。 由於。Net的COM-callable wrapper(CCW)自動實現了IDispatch和IEventSink接口,事件處理函數的指定變得非常簡單,這對於提高開發效率是很有幫助的。
mshtml2·IHtmlPainter·Draw( )方法是這個二進制行為組件中另一個比較重要的方法,這個方法由IE來調用,主要作用是在IE傳遞進來的設備上繪製位圖對象bitmap,可以採用所有的API來完成和繪圖有關的工作,因而可以實現較好的圖像效果。 由於位圖對象中只有一個線段,等效於在IE中畫了一個線段。每當Line行為組件更新了位圖對象成員bitmap後,就可調用InvalidateRegion( )方法通知IE調用mshtml2·IHtmlPainter·Draw( )方法來重新繪製線段,這個方法實際上完成的是Html元素標記的呈現工作。 [1] 

二進制組件二進制行為組件在Html頁面中的使用

可以利用Line行為組件來實現一個‘’銷售業績表‘’的Html頁面,這裏的銷售業績用柱形圖來表示,每個季度用一根粗線段表示銷售業績,不同季度的線段顏色不同。當鼠標移到某個年份上時,表示年份的字會變成紅色,同時柱形圖顯示當年的銷售業績。
要在Html頁面中使用二進制行為組件,首先要用<object>元素實例化相關類工廠組件,這個類工廠組件是由它的IID來指定的,然後用<?import>元素指明一個名字空間,在IE處理Html元素時,凡是在這個名字空間中的遇到用户自定義Html元素,都會調用這個類工廠組件去生成相應的二進制行為組件來完成該元素的解析任務。 [1] 

二進制組件組件技術的開放式控制器軟件

基於組件技術的開放式控制器的研究。主要工作是基於開放式系統的思想,探索在通用操作系統作為實時控制領域應用平台的基礎上,以二進制組件為實現技術的開放式數控軟件控制器的特點和實現方法。並且分析了以通用操作系統來實現實時任務應用時的一些基本方法。 [2] 

二進制組件二進制標準

COM技術可以實現二進制的兼容。對於任意平台(包括硬件和軟件),COM通過定義一個內存中虛函數表(vtable)和從虛函數表中調用函數的方法來實現。因此,任何能通過指針調用函數的編程語言(C,C++等)都可以用來編寫組件。按照同一二進制標準編寫的組件可以互相操作,而且Vtable共享可以減少對內存的需求。 [2] 

二進制組件接口

COM組件模型中,每個組件可以有一個或多個接口,組件間和組件與應用程序之間只能通過接口進行互操作。COM接口是與組件對象進行通訊的抽象協議,是一種能提供語義相關的操作(方法)的各個軟件組件間的一種強類型的約定。組件通過提供接口來暴露它對外界提供的功能,涉及到六個問題:
1、一個接口不是類:類可以代表構成組件對象的具體的可以實例化的類型,而接口卻不能進行實例化,因為接口不執行任何操作。組件系統的實現(imPlementation)是支持一個或多個接口的具體的數據類型,由它為接口的每個抽象操作提供精確的語義解釋。而類是被命名的實現。在COM中,是把接口(inte而ee),實現(imPlementation),類(elass)看作三個不同的概念。
2、一個接口不是一個組件對象:接口僅僅是一個相關的函數組,它是客户程序和組件對象之間用於通訊的二進制標準。組件對象可以用任何具有能表示內部狀態的、能提供指向接口成員函數指針的編程語言來實現。
3、客户程序只能通過指針同接口進行作用:通過兩級指針調用,隱藏了內部實現的各方面細節。使用者是看不到組件對象數據的(這恰好同C++對象指針正是COM採用的這種接口調用的方法,實現了接口的繼承,並可以由此來繼承組件的行為規範,以避免在實現繼承時出現的基類細節泄漏的問題。在使用時,用户可以將組件對象看作一個透明體,不需考慮內部實現這樣就實現了真正的封裝。在COM模型中,封裝技術允許COM提供能實現本地/遠程透明的、高效的二進制標準。
4、組件對象可以實現多個接口:當一個類為不同的事務提供服務時,這些不同的功能就可以通過不同的接口來實現。
5、接口是強制定義:每個接口必須都分配有接口標識符(llD),從而消除任何產生衝突的可能性。這裏有兩層含義:當生成了一個新接口,必須為這個接口生成新的標識符(IID)。當使用一個接口時,必須通過接口的標識符(IID)來請求接口的指針。
6、接口是不變的:接口一經定義就不能再改變了;所以COM的接口是沒有版本的。如果由於功能的增加或改變舊接口的語義來實現的新接口,必須重新生成一個新的接口,都要有新的唯一的標識符(IID)。 [2] 
參考資料
  • 1.    古權.利用.Net開發IE二進制行為組件:交通信息與安全,2006 , 24 (1) :90-94
  • 2.    陳永生.基於組件技術的開放式控制器軟件研究:北京工業大學,2002