gpt4 book ai didi

c# - 使用 TCP 绑定(bind)将非托管 C++ 连接到 WCF

转载 作者:搜寻专家 更新时间:2023-10-31 01:03:19 25 4
gpt4 key购买 nike

我有一个用 C# 编写的 WCF 服务器,并使用 netTCPBinding 与客户端通信。现在我希望我的非托管 c++ 客户端连接到同一个 WCF 服务器。这可能吗? C++ 客户端是否可以具有与 C# 客户端相同的功能?如果可能的话,我该怎么做?我阅读了一些有关在 C++ 客户端和 C# 服务器之间创建桥接 dll 的内容,但是该教程很旧并且 Visual Studio 2013 Express 中缺少所有模板。

最佳答案

看看 Windows WEB 服务 API:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd430435%28v=vs.85%29.aspx - 主页

http://msdn.microsoft.com/en-us/library/windows/desktop/ee354195%28v=vs.85%29.aspx - 代码示例

本文展示了如何在 native C++ 代码和 C# WCF 之间建立连接:

http://www.codeproject.com/Articles/38535/A-first-look-at-the-Windows-Web-Services-API

请注意,托管 WCF 和 native 客户端之间的互操作性受到限制。托管 WCF 公开了一些特性,如异常编码、回调接口(interface)、托管对象序列化,这些特性不受 native WWS API 支持。您需要使用简单的二进制通信协议(protocol)并在两侧手动进行二进制序列化(如有必要)。一种方法(异步)WCF 调用可以作为 WWS API 中的 void 方法实现。而不是回调接口(interface)在两侧使用服务器/客户端对。我建议您使用简单的高级 WWS 服务模型,而不是相当复杂的 channel 层。

根据我的个人经验:在测试 WWS - WCF 互操作性之后,我决定纯粹在 WWS SDK 中实现通信级别,并通过 PInvoke 为 C# 代码公开此功能。仅当我需要与我无法更改的现有 WCF 服务进行通信时,我才会使用 WWS - WCF 互操作性。

另一种方法:将 .NET 支持添加到 native C++ 项目。现在您可以通过传统的 .NET 方式使用 WCF。例如,您可以添加对与 WCF 一起使用的 C# 类库的引用,并从 C++ 代码中调用它。

关于c# - 使用 TCP 绑定(bind)将非托管 C++ 连接到 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25420629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com