我有一个 WPF 客户端-服务器应用程序。现在我有这样的场景,比如客户端将连接到服务器,服务器会定期向客户端推送数据。我对我应该选择什么技术和方式来通知客户有点困惑。
SignalR 最适合我认为的 Web 应用程序,而且我有桌面应用程序。使用 WCF 服务,我们可以通过 Duplex 通道和回调实现推送通知。那么您能否指导我使用 SignalR 或 WCF 服务的优缺点?
谢谢
我有一个 WPF 客户端-服务器应用程序。现在我有这样的场景,比如客户端将连接到服务器,服务器会定期向客户端推送数据。我对我应该选择什么技术和方式来通知客户有点困惑。
SignalR 最适合我认为的 Web 应用程序,而且我有桌面应用程序。使用 WCF 服务,我们可以通过 Duplex 通道和回调实现推送通知。那么您能否指导我使用 SignalR 或 WCF 服务的优缺点?
谢谢
以下是我的经验观察:
SignalR 优点:
SignalR 缺点:
双工优点:
双工缺点:
顺便说一句,存在用于 JavaScript、桌面和 Silverlight 项目的 API 来使用 SignalR 服务。
SignalR 不仅仅是关于网络的。SignalR 服务器端代码不关心其客户端的技术,您只需要在客户端有实现者。
如果我们将推送数据隔离到客户端,我强烈推荐 SignalR,因为它在这方面比 WCF 简单得多,我对 WCF 有一些问题,我想你自己也有一些问题。我在这里找到了一个简单的控制台/Web 应用程序示例。
一般来说,像这里这样的 Duplex WCF 和使用 Callback对我来说似乎很乱,服务器端有很多配置,这就是我认为 SignalR 更简单的原因。
此外,您不能将双工(AFAIK)与javascript和objective-c一起使用。
我认为您已经获得了关于它们中的每一个的大量数据点。但是选择 SignalR 将为您提供比开发工作更多的优势,在大多数情况下,开发工作是选择技术时的主要决策障碍。
您无需担心 API 开发/测试等,可以专注于您自己的项目实施。
希望能帮助到你!
SignalR 现在可以轻松地与来自 javascript、.NET 和 WinForms 和 WPF 的多个客户端一起使用,甚至可以与 C++ 客户端一起使用;使用自托管的 .NET 信号器服务器 (OWIN) 是拥有向多个客户端推送/接收/广播的独立服务器的好方法。唯一可能更容易的是 ZeroMQ 使用其发布订阅方法。
到目前为止没有人提出的一点:
如果您只想定期更新新数据,最好只使用 WCF 和客户端的轮询机制,而不是使用双工 WCF 或信号器。