C# 用于跨进程/机器通信的WCF替换
我正在开发一个C#应用程序,其中包含多个windows服务,这些服务需要相互通信以传递数据。这些服务可能在同一台计算机上,但可能是远程的。为此,我考虑过使用WCF,但似乎WCF太重,并且有很多额外的配置,对我来说,这些配置似乎是不必要的(.NET3.5是这里的一个要求,我知道.NET4简化了这一点)C# 用于跨进程/机器通信的WCF替换,c#,wcf,C#,Wcf,我正在开发一个C#应用程序,其中包含多个windows服务,这些服务需要相互通信以传递数据。这些服务可能在同一台计算机上,但可能是远程的。为此,我考虑过使用WCF,但似乎WCF太重,并且有很多额外的配置,对我来说,这些配置似乎是不必要的(.NET3.5是这里的一个要求,我知道.NET4简化了这一点) 因此,我的问题是,除了提供此功能的已弃用的.NET远程处理之外,WCF的最佳替代品是什么?您可能需要研究ZeroMQ,它非常轻量级且有效,并且具有良好的C#绑定。(抱歉,在我的手机上键入此内容,您现
因此,我的问题是,除了提供此功能的已弃用的.NET远程处理之外,WCF的最佳替代品是什么?您可能需要研究ZeroMQ,它非常轻量级且有效,并且具有良好的C#绑定。(抱歉,在我的手机上键入此内容,您现在必须自己用谷歌搜索。)我使用PInvoke访问Windows RPC运行时已经将近8年了。就运输而言,它速度快且非常可靠。当与protobuf csharp port这样的快速序列化程序结合使用时,所产生的通信是坚如磐石且可靠的 因此,要从头开始构建,这需要三个部分:
代码:抱怨配置似乎有点小气。至于性能,NetTCP绑定在3.5中可用,因此也不确定您关心的是什么。我更好奇的是,是否有替代方案,如果有,它们可能是什么。搜索谷歌总是让我回到WCF。这是来自于一个通常编写Java程序的人,所以我习惯了RMI、EJB等。我得出了或多或少相同的结论。我发现WCF的配置很复杂,文档也不完整,在一次打击下,我还发现它速度非常慢,而且有点不愿意释放内存。可能是我设置错误,但它的性能不如我所希望的,而且修复在无数配置选项中也不明显。我最终编写了自己的轻量级远程处理框架,我希望有一天能够获得开源的批准。实现它绝非易事。除非你碰到这些问题,否则我会坚持使用WCF,直到它被证明是有问题的。这看起来像是我正在寻找的替代方案,谢谢你的信息@安德鲁·兰茨维克,也请看:哈!你的帖子证实了我对WCF的所有怀疑,但从未抽出时间来测量。你的解决方案很有趣。。。绝对是一个值得超过+1的答案。非常感谢。非常有用。您的log4netxsd也非常有用。所以也谢谢你。@csharptest.net谢谢你分享图书馆,很棒的工作。我正试图找出如何处理长期运行的操作。Execute()调用是同步的,理论上我可以重构库来拆分调用/返回序列。是否有“事件”或服务器->客户端调用的内置方法?我查阅了Shirley和Rosenberry的“Microsoft RPC编程指南”,找不到确切的ZeroMQ轻量级。ZeroMQ非常好,只要您不关心响应,也不担心消息被扔到地板上。与所有队列一样,只能存储这么多积压工作。ZeroMQ在保证交付和请求/响应配置方面的性能特别差。文档在哪里?