30

我有一个 WPF 客户端-服务器应用程序。现在我有这样的场景,比如客户端将连接到服务器,服务器会定期向客户端推送数据。我对我应该选择什么技术和方式来通知客户有点困惑。

SignalR 最适合我认为的 Web 应用程序,而且我有桌面应用程序。使用 WCF 服务,我们可以通过 Duplex 通道和回调实现推送通知。那么您能否指导我使用 SignalR 或 WCF 服务的优缺点?

谢谢

4

5 回答 5

23

以下是我的经验观察:

SignalR 优点:

  • 易于启动,学习曲线较低。您可以轻松运行从网络上找到的示例
  • 异常处理(例如连接断开、超时)嵌入在 API 中

SignalR 缺点:

  • 只支持HTTP协议

双工优点:

  • 除 HTTP 外,还支持 TCP。如果您知道您的客户端类型并且您的系统在封闭网络中工作,这可能会大大提高性能。此外,通过 TCP 工作比 HTTP 增加了更多的连接稳定性

双工缺点:

  • 更高的学习曲线 - 更难启动并拥有稳定的解决方案。想要验证吗?从 Web 下载双工和 SignalR 示例,看看您将花费多少时间来成功运行彼此。
  • 您需要处理所有异常情况(连接断开、超时等)
  • 我知道当你想长时间使用双工服务时,我不是唯一一个面临严重超时问题的人。我们需要定期进行服务调用以保持客户端连接处于活动状态。

顺便说一句,存在用于 JavaScript、桌面和 Silverlight 项目的 API 来使用 SignalR 服务。

于 2013-03-12T11:51:36.173 回答
6

SignalR 不仅仅是关于网络的。SignalR 服务器端代码不关心其客户端的技术,您只需要在客户端有实现者。

如果我们将推送数据隔离到客户端,我强烈推荐 SignalR,因为它在这方面比 WCF 简单得多,我对 WCF 有一些问题,我想你自己也有一些问题。我在这里找到了一个简单的控制台/Web 应用程序示例。

一般来说,像这里这样的 Duplex WCF 和使用 Callback对我来说似乎很乱,服务器端有很多配置,这就是我认为 SignalR 更简单的原因。

此外,您不能将双工(AFAIK)与javascript和objective-c一起使用。

于 2013-03-11T06:22:27.687 回答
3

我认为您已经获得了关于它们中的每一个的大量数据点。但是选择 SignalR 将为您提供比开发工作更多的优势,在大多数情况下,开发工作是选择技术时的主要决策障碍。

您无需担心 API 开发/测试等,可以专注于您自己的项目实施。

希望能帮助到你!

于 2013-03-19T04:03:29.317 回答
2

SignalR 现在可以轻松地与来自 javascript、.NET 和 WinForms 和 WPF 的多个客户端一起使用,甚至可以与 C++ 客户端一起使用;使用自托管的 .NET 信号器服务器 (OWIN) 是拥有向多个客户端推送/接收/广播的独立服务器的好方法。唯一可能更容易的是 ZeroMQ 使用其发布订阅方法。

于 2015-10-03T23:01:40.653 回答
1

到目前为止没有人提出的一点:

  • SignalR 1.0.1 在服务器和客户端上需要 .NET 4。根据您的目标客户端和服务器的版本,这可能是需要考虑的重要因素。

如果您只想定期更新新数据,最好只使用 WCF 和客户端的轮询机制,而不是使用双工 WCF 或信号器。

于 2013-03-15T02:48:31.493 回答