【问题标题】:Modern .NET equivalent for COM interopCOM 互操作的现代 .NET 等效项
【发布时间】:2014-06-03 15:09:41
【问题描述】:

在两个 .NET 应用程序之间实现 COM 互操作类型的集成(即用于自动化目的的 Excel 类型)的现代等效物是什么?

例如,如果您通过 COM 公开 .NET 应用程序 API,则可以在您的 COM 客户端中获取对该应用程序的运行时引用,并获取事件回调、调用方法等。

在两个 .NET 应用程序之间是否有适合这种情况的现代技术?我知道有 .NET Remoting 或 WCF(即通过命名管道) - 有什么更新/更好的吗?

【问题讨论】:

  • COM Interop 仍然是现代技术。您可以使用dynamic 来简化与COM interop 的工作。
  • 我想你回答了你自己的问题。 WCF 是 .NET 的新 COM。然而,COM 仍然会更快一些,具体取决于您在做什么,并且仍然具有相关性并且在现代使用中。它的兼容性也更广泛。
  • ty,如果你想回答这个问题,我会继续接受它

标签: .net wcf com


【解决方案1】:

IMO,使用 WCF 在 同一台 计算机上的两个桌面应用程序之间进行通信会有点过头了。

我宁愿使用ROT 或简单地使用RegisterActiveObject/RevokeActiveObject 来注册服务器应用程序对象。然后,相应地,我将使用 ROT 或 GetActiveObject 从客户端应用程序获取此对象的 COM 代理。

为了通信,我会使用一些标准的 COM 接口,COM IPC 编组器可以在不注册类型库的情况下编组(不需要RegAsm)。例如,IOleCommandTarget 或自定义调度接口(@98​​7654330@,它映射到非双 IDispatch)。

与 WCF 相比,这可以用最少的开发工作和运行时开销来完成。

【讨论】:

  • 老实说,与 WCF 相比,我真的不明白这是“最小的开发”。这是一个巨魔答案吗?
  • @Aron:“这是一个 troll 答案吗?” 不。我所描述的 C# 代码可能适合您正在查看的屏幕。那么,这是一个巨魔评论吗?这是您需要考虑的事情:stackoverflow.com/a/22934295/1768303
  • ChannelFactory/ServiceHost 的等效代码也是如此(我假设我们正在打折接口)。但 WCF 的优势在于投射更少。
  • @Aron,那么 WCF 在同一桌面上本地运行的两个应用程序之间进行通信的优势究竟是什么?
  • 我的意思是您声称(“与 WCF 相比,这可以通过最少的开发工作和运行时开销来完成。”)它比 WCF 容易得多。然而,COM 显然植根于本机编程。至于运行时开销,如果这是一个问题,您应该使用 MMF。
猜你喜欢
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多