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