2012-12-12

用.Net寫COM元件的經驗談(二)背景知識篇

在.net開發COM元件的時候,必須對相關的背景知識加以了解,否則就會不明究理地遇上部署、註冊等等的問題,以下是我在摸索過程中常見的keyword及參考資源,適切的使用這些keyword,對於後續在搜尋時,可以得到較符合預期的結果。

【Managed Code】
代表受到 CLR (Common Languages Runtime) 的管理,泛指基於 .net framework 平台所開發的程式。

【UnManaged  Code / Native Code】
相對於Managed Code, 表示未受到 CLR 的管理,例如:Win32 API、C++、VB 6...。

【COM Interop】
可以將.net所寫的組件(Assembly)「偽裝」成一般的COM元件,提供Unmanaged Code使用,或者反回來在Managed Code裡引用非.net開發的COM元件。在 Managed Code 與 Unmanaged Code之間,比較簡單的互動即是透過COM元件處理,大多數的windows程式平台幾乎都支援。

【Registration Free(Reg-Free) COM】
免註冊型的COM元件;通常會需要產生 mainifest 檔案,裡面存放組件相關的metadata。

【COM Server/Client】
通常為了明確表示主客體,COM元件本身為Server角色、使用COM的程式相對來說就是Client,並非是實體的 Server & Client 表示。


最後,強烈建議一定要安裝 Microsoft All-In-One Code Framework 來尋寶,因為跟著微軟工程師撰寫的Sample Code,真的可以節省很多摸索、實作的時間。

以 COM Interop 來說,我依著國外網友的推薦,找到了 All-In-One COM Code Samples 這個大集合,裡面有各式各樣使用不同語言及技術撰寫COM Server/Client的範例,例如:「CSRegFreeCOMServer」是「使用C#寫免註冊的COM元件」、「CppRegFreeCOMClient」就是「在Native C++裡呼叫免註冊的COM元件」。

而且依照各專案下的 ReadMe.txt 的說明,Step-By-Step 就能做出一樣的東西,真是佛心來著的啊~~~

延伸閱讀

沒有留言:

張貼留言

引用 Topshelf 無法進行偵錯的經驗

Topshelf  是一個可以簡化撰寫 Windows Service 的套件,引用之後,我們只要當作撰寫一般 Console 的應用程式就可以。 只是近來撰寫上遇到無法進行Debug的狀況,在Visual Studio一進行偵錯可以看到Console 程式被執行,並顯示...