2009-12-04 107 views
10

似乎有很多對DCOM的敵意,我很想理解爲什麼。對於仍然使用C++寫入Win32 SKD的公司,是否有真正的理由不在當前或未來的開發中使用DCOM? Windows的某些未來版本不會支持它嗎?它太脆弱,不能經常工作嗎?與其他技術相比,實施太複雜了嗎?這是怎麼回事?DCOM有什麼問題?

+0

everything;)(只是在開玩笑) – 2009-12-04 14:42:29

回答

2

那麼,DCOM是COM的一個分佈式版本,COM本身非常複雜,並且很容易在無意中做錯事情(參見this recent question及其答案)。有了DCOM,你就有更多的方法來傷害自己。

除此之外,它的工作原理,例如一個好的方式來託管在一個獨立的進程中的COM組件。

+1

如果你理解指針和引用計數器,我實際上會發現COM是相當易於理解和簡單化的。 – Charles 2009-12-04 14:51:38

+0

相信我,IUnknown成員函數只是開始。然後來公寓,併發和其他可能導致可怕痛苦的東西。 – sharptooth 2009-12-04 15:10:39

+0

那麼你會推薦一個需要溝通的本地win32 SDK服務和客戶端應用程序?是的,DCOM很複雜,但填補這些需求的技術卻不是什麼? – Charles 2009-12-04 15:15:41

1

我在90年代後期實現了一個使用DCOM的大型系統。雖然它工作得很好,但有幾個問題。對於初學者來說,它使用不可預知的端口號進行通信。它不可擴展,並且使用WCF比使用DCOM好得多。

+0

不幸的是,我們僅限於Win32 SDK - 不允許.NET。我知道,我知道但我沒有制定規則 – Charles 2009-12-04 14:49:48

+0

我仍然相信你可以使用Web服務 - 我非常確定C++有SOAP包。 – 2009-12-04 16:45:56

2

如果您嘗試構建客戶端服務器應用程序並希望通信跨越網絡邊界(例如Internet),則DCOM可能因防火牆而出現問題。

我已經在其上使用DCOM分佈非常成功的服務器應用程序的工作,我們讓系統處理最複雜的創建COM +服務器應用程序和導出應用程序代理。在這種情況下,只要我們所有的版本都同步起來,它就可以很好地工作。

+0

我忘記提及我們的客戶端和服務器是同一臺機器的本地服務器,它們都是由我們編寫並部署在一起的,所以沒有網絡或同步問題。 – Charles 2009-12-04 14:55:39

0

我覺得勢頭已經轉移到SOAP和其他Web服務技術,因爲它是:

  • 輕鬆地在防火牆的存在
  • 無廠商鎖定

我部署系統我從來沒有使用DCOM,所以我不能評論它的總體質量或健身狀況。

+0

我想我應該提到我的用途將是本地DCOM - 客戶端和服務器在同一臺機器上。將所有內容轉換爲ASCII格式,然後用更多的ASCII標籤進行封裝,然後解析ASCII結果是非常不夠的。 – Charles 2009-12-04 14:53:39

+0

啊,我聽到你的聲音。是的,SOAP有它自己的問題。 – CBFraser 2009-12-04 15:03:58

3

我不喜歡COM/DCOM,因爲"Catastrophic failure"是在錯誤信息的歷史上最無用的錯誤消息。

+0

這將是用戶的「感覺良好」信息。這樣他們知道他們做得對。 – Jrud 2009-12-04 14:45:29

+2

ERROR_ALREADY_EXISTS歸納起來。 – ActiveTrayPrntrTagDataStrDrvr 2014-01-09 12:37:51

6
  1. 安全模型。特別是當計算機不在同一個域中(或根本不在域中)時。
  2. 爲Visual Basic(原始,不是.NET)建模的自動接口,過時並且不適合從其他語言使用。

如果你只想用C++開發並部署在受控網絡中,它可能仍然是一個不錯的選擇。

+2

跨本地操作系統邊界(另一臺機器上的任何內容)的安全問題無法得到足夠的重視。 「管理」DCOM安全性是完全不可能的。 (祝你好運,試圖追查錯誤或解釋錯誤信息。) – 2013-03-11 09:57:36