0
A
回答
6
首先,值得一提的是COM是一項相當古老的技術。它顯着早於.NET,它有時提供相同的功能。然而,相比普通的DLL,它有幾個優點,例如:
- 它沒有功能接口,但面向對象之一。您創建對象而不是調用導出的函數。
- 它支持系統安全設置,因此您可以通過Windows安全設置來管理對COM類的訪問。
- 它跨越進程邊界 - COM服務器可以在用戶的進程中,也可以在一個單獨的進程中。
- 它穿越機器邊界,又名DCOM。
- 它跨越語言邊界。 COM的協議是二進制的,因此每種支持它的語言都可以使用COM組件,而不管這些組件的語言是什麼。
- 有許多語言支持COM,並且可以在其中輕鬆創建和使用COM對象。
這只是冰山一角。儘管過時,COM在Windows中被廣泛使用。對於你來說,使用這些日子是否合適的技術是另一回事 - 這實際上取決於你的具體需求。但是如果你是一名Windows程序員,無論如何,這絕對值得熟悉。即使你不生產任何COM產品,你很可能會消費一個COM產品。
1
您在各種情況下,如使用COM:
與MSXML3/4/6 XML API相互作用(消耗的COM對象);
嵌入Internet Explorer WebBrowser控件(使用COM對象);實現Explorer Shell擴展,如上下文菜單(編寫和使用COM對象);
實現拖放功能(寫入和消費);
使用基於Vista的文件打開/關閉對話框(消費);
使用基於Windows的功能區API(消費)。
相關問題
- 1. 爲什麼以及何時需要Azure?
- 2. 爲什麼我們需要使用prompt.start()?
- 3. 爲什麼我們需要使用ExitWindowsEx
- 4. 何時以及爲什麼我們應該使用類System.ComponentModel.Container?
- 5. 爲什麼我們需要時代?
- 6. 裝配需要什麼?爲什麼我們使用它們?
- 7. 爲什麼我需要使用超時?
- 8. 爲什麼需要一個null shared_ptr以及它如何使用?
- 9. 爲什麼我們需要同時使用Telerik控制
- 10. 爲什麼我們有類圖時需要使用ERD?
- 11. 爲什麼我們在使用CollapsingToolbarLayout時需要AppBarLayout?
- 12. 爲什麼我們需要公鑰簽名時需要HMAC?
- 13. 我們爲什麼需要,使用貓鼬有什麼好處
- 14. 模型中有什麼?爲什麼我們需要使用它
- 15. 當我們有點子時,爲什麼我們需要Anaconda?
- 16. 爲什麼需要「委託」?何時使用它以及如何應用它?
- 17. JAX-RS中需要@QueryParam(以及他們不在時需要做什麼)
- 18. 爲什麼/我們何時需要調用super.ViewDidLoad?
- 19. 爲什麼以及何時使用process.nextTick?
- 20. 爲什麼以及何時使用TreeMap
- 21. 爲什麼以及何時使用__noop?
- 22. 爲什麼以及何時使用LINQ?
- 23. C++中的堆棧。他們爲什麼以及何時使用?
- 24. 當我們已經有mapDispatchToProps時,爲什麼我們需要使用redux-thunk
- 25. 何時以及爲什麼需要一個「S」標誌被列
- 26. 何時以及爲什麼需要刪除事件?
- 27. 何時以及爲什麼需要釋放對象?
- 28. 當我們可以拋出TypeErrors時,爲什麼我們需要NaN值?
- 29. DavLockDB:我們需要什麼?
- 30. 何時以及爲什麼我們返回一個java類?
+1「即使你不生產任何COM產品,你很可能會消費一個。」 –