8

在 WCF 上使用 COM 开发组件时,可以获得哪些深刻的优势?有什么可以用 COM 而不是 WCF 来完成的吗?

4

6 回答 6

8

不,它还没有死,但它已经死了,这是肯定的。您会看到仍有许多使用/需要 COM 的遗留系统,这向我们保证它将与我们一起使用几年,但从长远来看不会。

至于 WCF,可能有一些 COM 可以做而 WCF 不能做的边缘情况,但更重要的是,与遗留的东西相关的是,几乎每种语言都有 COM 绑定,您可以放在 Windows 堆栈上,但是 WCF 绑定还没有为所有人准备好(语言)

于 2008-11-18T06:23:06.007 回答
8

取决于您要挖掘的系统深度。COM 永远不会“消亡”,就像非托管语言永远不会一样。

长话短说,如果您为 Vista+ 开发桌面应用程序,您可能不需要再费心使用 COM。

于 2008-11-18T06:27:17.137 回答
5

我不认为COM已经死了。如果你看一下 Vista,它使用了很多 COM 架构/技术。Vista 中的所有东西都是 COM Dll/Exe。我觉得与 XP 相比,Vista 使用了太多的 COM。

如果我们想在 Vista 中扩展任何东西,我们必须使用 COM 实现接口。

于 2008-11-18T15:39:58.270 回答
4

有几个不同的方面:

  1. 将在多台计算机上运行并与多台计算机交互的组件(作为服务)
  2. 仅在本地运行的组件,并通过 ABI 与多个供应商实现的组件交互。
  3. 由单个供应商创作的组件,无需与第三方组件交互。
  4. 来自多个供应商的组件以源代码形式提供,可以编译到单个应用程序中。

(ABI = 应用程序二进制接口。COM 是 ABI 的一个示例。)

对于方面 1,COM 几乎已经死了。

方面 2 仍然需要 COM,并且将继续需要。Windows Imaging Component 是这种可扩展性的一个很好的例子,它允许任何人实现新的图像编解码器。.Net 在这方面是一个强有力的竞争者。

对于方面 3,COM 仍然值得考虑,但这是每个软件供应商做出的决定。内部使用的组件开发商可能有一天会作为产品出售。.Net 似乎也是一个不错的选择。

For aspect 4, one can simply adapt and combine the source codes from many open-source projects. There is no need for COM, or any ABI.

COM as an unmanaged ABI is, unfortunately, difficult to defend against bugs because the code and data are in the same memory space, and the stack is used for both data and execution call stack. Any exploitable hole in one COM component can be used to cause instability in any other COM components loaded into the same address space.

于 2010-06-30T09:23:59.420 回答
0

如果我没记错的话,.NET 旨在取代 COM 和 WFC 等技术。是否有理由(除了遗留代码)选择 COM 或 WFC 而不是 .NET?

于 2008-11-18T07:12:57.170 回答
0

The COM is dead, long live the COM.

Windows 8 follows an interesting curve.

http://kennykerr.ca/2011/10/18/the-road-to-windows-8/

http://msdn.microsoft.com/en-us/library/windows/apps/hh699871.aspx

于 2012-11-06T23:55:05.243 回答