基于COM的輕量級組件技術的簡單實現
0 引言
本文引用地址:http://www.j9360.com/article/157135.htm在軟件開發中,組件是一些小的二進制可執行程序,它們可以給應用程序、操作系統以及其他組件提供服務。實際應用中主要采用COM技術開發軟件組件。這是由Microsoft提出的一種組件標準,它定義了組件程序之間進行交互的標準。標準的COM技術主要用于Microsoft Windows平臺,是windows操作系統和各種應用軟件的結構基礎,其突出優點是軟件之間直接通過二進制接口進行通訊。
開發自定義的COM組件就如同開發動態的、面向對象的API。多個COM對象可以鏈接起來形成應用程序或組件系統。組件可以在運行時刻,并在不被重新鏈接或編譯應用程序的情況下被卸下或替換掉。
一是源代碼級跨平臺,可以在LINUX和WINDOWS上使用;
二是像容器一樣的管理組件DLL/SO;
三是功能組件化。
在工控系統組態過程中,通常存在著人際界面軟件開發周期長,維護困難,升級不便等缺點,為了增強組態軟件的行業競爭力,希望從軟件開發模式上改變當前系統軟件的缺陷,同時為了適應系統軟件跨平臺的需要,根據COM標準組件技術,并結合QT、以及組態人機界面軟件自身的特點,可以實現輕量級組件技術。本文所述的輕量級組件技術就是以COM標準為基礎的,并根據實際的應用環境做了某些改變。
1 輕量級組件各部分的協作關系
跨平臺輕量級組件技術可以COM標準為基礎來實現,可先定制Com庫,并確定編寫組件的規范。
輕量級組件技術使用的是分層結構,該結構通??煞譃榭蛻舳?、Com庫、組件端三個層。圖1所示是其輕量級組件的結構圖。其中,組件端用于提供功能和接口;COM庫負責組件和客戶端的通信,客戶端則通過Com庫創建組件,并調用組件接口。
它們三部分一般通過接口進行通信,其具體過程如圖2所示。
在實際應用中,Com庫一般可由圖3所示兩部分構成。實際上,圖3中的Comku是一個動態庫,負責提供最核心的功能:ExtensionSystem靜態庫是對Comku的封裝,為了使用方便,它同時提供了生成插件接口的宏以及CPluginManager類中的接口函數。下文中如不特別指明,Com庫均表示單一的動態庫。
整個組態的人機界面軟件是在QT中實現的,因此組件的核心庫也需要使用QT來實現。QT是一個多平臺的C++圖形用戶界面應用程序框架。它可以提供給應用程序開發者建立藝術級的圖形用戶界面所需的所有功能。QT是完全面向對象的、很容易擴展、且可支持源代碼的級跨平臺。直接在QT環境中實現輕量級組件技術,以達到跨平臺的目的。實際上,組件庫本身并不依賴于QT環境。
2 Com庫的原理及功能
對于使用了輕量級組件技術的應用程序,Com庫主要用來管理插件DLL、創建和銷毀組件指針,它像容器一樣,可以保存當前應用程序中用到的插件信息和接口信息,并在用戶需要的時候返回正確的插件接口指針。
評論