組件對像模型(COM)樣本
COM是一項非常強大的技術,可以根據面向對象的設計組裝軟件。請參閱此處的文檔以獲取更多詳細信息。
COM的主要缺點之一是設置COM組件所需的初始樣板。 ATL是一組有助於製造樣板的庫,但具有自身的複雜性。
這裡的樣本提供了骨骼代碼,該骨骼代碼將對COM設置和註冊進行重大功能,以便開發人員可以僅專注於業務邏輯,而不是擔心基礎架構。它不使用ATL 。取而代之的是,它使用簡單的普通C ++代碼,以便開發人員在需要時可以理解並調試基礎骨架。
使用的術語
- COM服務器是提供業務邏輯的對象。
- COM客戶端是通過COM服務器公開的任何接口訪問COM服務器的代碼。
- COM客戶端和COM服務器之間的相互作用是通過封裝進行的,需要代理式dll。
- 請參閱此處的文檔以獲取更多詳細信息。
這個項目
這是有關此樣本中各個目錄的摘要。
- comsample -proxy :ProxyStub dll。要添加一個新接口,只需在項目中添加一個新的IDL文件即可。
- COMSAMPLESERVER :支持激活COM服務器內部操作以及處理外的支持(在OS提供的DLL代理,即dllhost.exe)。
- comsamplyservice :支持在當地系統服務中激活COM服務器。
- comsampleclient :示例com客戶端,呼叫並測試上面提到的com服務器。
創建和註冊新的COM組件
使用此模型,創建新的COM組件非常容易。
- 添加您的界面:
- 將接口的新IDL文件添加到comsampleproxy項目中。請參閱示例文件 /compampleproxy/icomtest.idl。
- 實施您的COM類:
- 對於替代激活中的過程中的激活或處理外:將類實現添加到comsampleserver項目中。請參閱示例comsampleserver/ccomservertest.cpp。現在,轉到comsampleserver/dll.cpp,只需將您的類條目添加到“ g_classes”中。
- 有關在當地系統服務中的程序之外激活:將您的類實現添加到comsamplyservice項目中。請參閱示例comsamplyservice/ccomserviceTest.cpp。現在,轉到comsampleservice/main.cpp,只需將您的類條目添加到“ G_Classes”中。
- 註冊您的com組件:
- 將comsample -proxy.dll複製到目標機器上。從提升提示中運行: regsvr32 comsampleproxy.dll 。
- 對於替代激活中的過程中的激活或處理外:將comsampleser.dll複製到目標機器上。從提升提示中,運行: regsvr32 comsampleserver.dll 。
- 要在當地系統服務中進行程序外激活:將comsamplyservice.exe複製到目標計算機上。從高架命令提示符中,運行: comsampleService.exe /registerserver 。
就是這樣!
商標
該項目可能包含用於項目,產品或服務的商標或徽標。 Microsoft商標或徽標的授權使用應受到Microsoft的商標和品牌準則的約束。在此項目的修改版本中使用Microsoft商標或徽標不得引起混亂或暗示Microsoft贊助。任何使用第三方商標或徽標都遵守這些第三方政策。