【问题标题】:How to connect a C++ COM To a WCF Service如何将 C++ COM 连接到 WCF 服务
【发布时间】:2011-03-11 07:48:55
【问题描述】:

我正在寻找一种将 COM+ 遗留应用程序连接到 WCF 服务的方法,这几天我一直在研究这个问题,我很幸运能找到任何有用的信息,谁能指出我正确的方向关于这个?

我需要旧的 COM+ 组件来调用新的 C# WCF 服务,所以我需要某种 COM 中的代理 组件来抽象与服务的通信.

在此先感谢,我非常感谢任何帮助。

【问题讨论】:

  • 是的,可以在 C# 中创建一个代理,然后在 c++ 上使用它,有没有办法做到这一点?谢谢!
  • 请更准确地了解您的需求。您需要现有的 COM+ 代码来调用服务,还是需要服务来调用您的 COM+ 代码?
  • 我需要旧的 COM+ 组件来调用新的 C# WCF 服务

标签: c++ wcf com proxy


【解决方案1】:

我假设您的意思是您有 WCF 服务,并且运行 WCF 服务的代码需要调用您的旧应用程序并将该数据发送进/出 WCF 服务,对吗?如果是这种情况,那么您问题的 WCF 方面实际上是无关紧要的。

您要解决的是如何让您的 .NET 应用程序将 COM 与您的旧应用程序对话。

查看:Introduction to COM InteropCOM Interop Tutorials

您需要为您的 COM 组件生成类型库,在您的 C# 项目中引用它们和 System.Runtime.InteropServices,然后您可以跨过旧应用程序代码的 COM 边界进行调用。例如,如果您搜索 COM Interop Tutorial,还有很多其他示例和教程。


编辑

我想了更多关于你的问题。您需要通过创建一个“看起来”就像您的旧服务器(所有相同的 COM+ 接口等)的服务器来实现代理,然后将请求(通过制作新请求)转发到您的 WCF 服务。 You can do this in C#。我whiteboarded (archive) 从你原来的白板上得到了基本的想法。

【讨论】:

  • 您好,其实是反过来的,我希望遗留应用程序调用 WCF 服务,所以我需要在 COM 上有一个通信代理来执行对 WCF 服务的调用。跨度>
  • 没问题,你遇到过同样的问题吗?
  • 好吧,我想您可以使用我的回答作为起点来构建您的代理,对吧?您需要一些 .NET 代码来通过 COM 与您的旧版应用程序通信,然后将该数据转换为 WCF 服务上的调用?
  • 如果不是这样,我不明白你试图移动的数据的方向性。也许你可以画一个图表? dabbleboard.com/…
  • 这来自一个问题,我们有一个桌面应用程序的适配器,所以你有客户端正在与这个适配器通信,然后与大型机通信,这个问题的限制是我们不能改变客户端桌面代码,所以我们唯一可以改变的是与 WCF 服务通信的实际适配器,我看看你提供的文档,谢谢!
【解决方案2】:

WCF 服务名字对象可以为您的 WCF 服务自动生成 COM 代理。您的 C++ 代码可以直接调用此代理,而无需您编写任何 C# 代理代码或显式 COM 互操作代码。

查看http://msdn.microsoft.com/en-us/library/ms729739(VS.85).aspx了解详情。

我特别推荐此功能,主要是因为我在 Microsoft 拥有该功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 2011-08-24
    • 2017-07-28
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多