【发布时间】:2014-08-01 12:15:52
【问题描述】:
我有一个 c# dll,它需要通过网络将一个非常复杂的对象发送到一个非托管 c++ 进程。我知道有很多方法可以做到这一点,但想知道是否有人可以推荐最合适的方法。需要注意的重点:
- 如果 c++ 进程未收到数据,通知 c# 进程至关重要。最好我想要一种尽可能可靠的数据传输方法。
- 不幸的是,我还面临着尽快交付数据包的压力,因此最终需要在可靠性和性能之间进行一些权衡。
- 表示数据的 c# 对象可能会发生变化。这是我们无法控制的第三方对象。理想情况下,我需要在 c++ 进程中使用一些动态机制来处理这些更改,并尽可能减少影响。最坏的情况是我们必须在每次对象数据更改时重新编译代码。
- 如果可能,我宁愿避免使用第三方库。
任何帮助将不胜感激。
【问题讨论】:
-
对于您的 #1,请尝试 ØMQ,它将为您节省大量工作以使连接正常运行。
-
投票结束,因为您有两个相互竞争的标准(可靠性/性能),但没有说明如何在它们之间进行选择 - 因此答案可能主要基于意见。
-
这样的问题不都是某种程度的观点吗?可靠性和性能之间总是需要权衡取舍,因此好的答案需要在两者之间找到平衡点也就不足为奇了。
-
这是一个非常常见的要求。这就是我用 C++ 编写的浏览器将您的问题从用 C# 编写的 SO 服务器获取到我的屏幕上的方式。您不太可能在这里使用 HTML :) 但是有很多替代方案,例如 XML 或 protobuf,它们可以在任何一种语言中工作。故意不使用库是非常低效的。
标签: c++ .net c#-4.0 network-programming