使用 .NET 获得快速 RPC 的最简单方法?

Posted

技术标签:

【中文标题】使用 .NET 获得快速 RPC 的最简单方法?【英文标题】:Easiest way to get fast RPC with .NET? 【发布时间】:2009-07-20 14:14:48 【问题描述】:

在 .NET 中获取 RPC 的最简单方法是什么?我看到有 .NET Remoting 和 WCF,根据 Wikipedia,WCF 是 .NET Remoting 的继承者。

到目前为止,我只尝试了远程处理,这似乎很简单——到目前为止,我也没有遇到应用程序速度的任何问题。 .NET 远程处理真的是让 RPC 工作的最佳方式,还是我应该研究 WCF(因为 .NET 远程处理将被停止使用?)?我只想与用 C# 编写的已知对象进行通信,所以我不需要任何这些 XML/SOAP/等。传输格式的东西。目标应用程序旨在分布在网络上,并且仅与自身的实例进行通信。在这种情况下,我只是想在某个地方连接到一个对象,而不必处理协议级别的问题。

【问题讨论】:

【参考方案1】:

您可以将 WCF 与二进制格式和 TCP 绑定一起使用。如果那(仍然)不够快,您将不得不查看自定义(非标准)技术。对于 1 台机器上的通信,您可以使用 IPC 协议(类似于或基于命名管道)。

事实上,Remoting 作为一种单独的技术正在消失。它正在被 WCF 同化。

【讨论】:

命名管道更快,尽管它们只是在进程位于同一台机器上时的选项。 (WPF 也有命名管道的绑定。) 我假设它是到另一台计算机,因为本地 RPC WCF 支持 IPC 协议,它应该提供与命名管道相同的速度。 他们不是。我已经运行了测试,WCF 至少慢了 3 倍。 @Rick 也许你才发现测量有多难。 我不欣赏你暗示我是某种业余爱好者。我建议你自己试试。【参考方案2】:

一旦我在某处阅读了关于 CP 的讨论,并且有人证明 WCF 使用管道(这使您只能在同一台机器上进行 IPC)比 .Net Remoting 和使用 tcp 时快得多- 它有点快。我无法确认所有情况都是如此,但你可以在谷歌上搜索一些基准,我见过的很少。在我看来,如果远程处理能够为您提供所需的一切,那么您可以坚持下去,至少现在是这样 :)。

【讨论】:

以上是关于使用 .NET 获得快速 RPC 的最简单方法?的主要内容,如果未能解决你的问题,请参考以下文章

没有 ASP.NET 的 C# JSON-RPC 网络服务器

Go 每日一库之 rpc

进行快速崩溃的最简单方法是什么?

在两个 DataFrame 之间获得 delta 的最简单方法

快速将约束分配给视图的最简单方法?

在 ASP.net 中将 BMP 转换为 PDF 的最简单方法是啥