将 SignalR 用于桌面应用程序是否正确?

Is it correct to use SignalR for desktop applications?

SignalR 是否适合 windows 桌面应用程序 (winforms/wpf)?

将 SignalR 与 windows 桌面应用程序一起使用有哪些优点和缺点?

是否有任何性能方面的考虑?

我想在服务器和很多客户端之间建立实时连接。连接将保持不变。

Is SignalR suitable for windows desktop applications (winforms/wpf)?

signalr.net的答案是:

SignalR can be used to add any sort of "real-time" web functionality to your ASP.NET application.

(正如其他人所说,它可以自托管,所以no need for IIS

所以答案似乎是。它是服务器端 API。但今天是您的幸运日,因为 SignalR 的下载不仅显示了服务器端 API,而且还显示了一个名为 Microsoft.AspNet.SignalR.Client45 的客户端 API 以在您的应用程序中使用。它适用于 WPF、WF 甚至控制台应用程序。

即使没有,SignalR 也只是 WebSockets protocol 的包装器,它是 HTTP 协议的一部分,几乎可以在任何平台上使用。下载还包含 iOS 和 Xamarin 示例。

What are the advantages and disadvantages using SignalR with windows desktop applications?

从服务器接收实时通知。

Is there any performance problems?

这是一个很难回答的问题,因为没有参考点。相比之下性能好还是不好?一般来说,我认为您不必为此担心太多。 API 本身很快,它可能会阻止您需要执行其他操作的缓慢拉取请求。

在具有服务器和许多客户端的设置中:如果您需要 "push" 从服务器到某些客户端的通知,那么 SignalR 非常适合使用。

我使用 WPF 客户端。

在任何客户端应用程序中使用 SinglarR hub 是绝对正确的,WPF,windows phone,UWP,iOS,Android,包括 HTML. Microsoft 已经在许多平台上创建了客户端库。

说到托管 SignalR,那么你肯定可以在 WPF 应用程序中托管你的 SingalR 服务器(集线器),但你需要一个理由:

原因可能是:

  • IIS 不可用
  • 你事先不知道APP会在哪里 使用。您只需要 运行 一个应用程序,它会通知其他应用程序
  • 性能 - IIS 增加了一些性能开销。

顺便说一句,SignalR 和 OWIN 是新 ASP.NET 5 的灵感来源。您现在可以在 WPF、控制台应用程序或 windows 服务应用程序中托管您的 ASP.NET 应用程序没有 IIS,甚至 Linux.

http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host

当您构建具有 signalr 功能的网站时,您有一个 signalR 服务器(站点托管在该服务器上)和一个 signalr 客户端,javascript 客户端在浏览该站点的 Web 浏览器中运行。

自古以来,Web 浏览器曾经(现在仍然是)......好吧,......桌面应用程序......

因此您拥有使用 SignalR 连接到网站(网络服务器)的桌面应用程序(网络浏览器)。

因此,将 signalR 用于桌面应用程序不仅是正确的,而且这就是它的用途。我真的不知道如果某个时候不在桌面应用程序中使用 signalR 会有什么用,因为坦率地说,用户坐在桌面(或智能设备)前,并且不会'不存在 "in the cloud"(除非你是来自 Matrix 的 Neo)。使用 signalR,您可以从桌面环境(Web 浏览器或其他桌面应用程序,例如控制家中灯光的应用程序,或在打印机中打印内容的应用程序)中呈现的服务器获得 "real-time" 反应。