运行 来自 DLL 的 SignalR 服务器

Run SignalR server from DLL

对于我的项目,我需要两个程序之间的 API 进行通信(特别是 WPF 桌面应用程序和使用 Unity 开发的 UWP 应用程序)。我目前拥有的是一个 SignalR 服务器,它 运行 两个程序都作为客户端订阅,因此它们可以相互交谈。

到目前为止一切正常,但我想知道我是否可以以某种方式在 WPF 应用程序可以使用和控制的 DLL 中设置服务器。这将精简整个解决方案并使其更加优雅。

非常感谢任何想法!

我和你有过类似的经历。我在网络 api 应用程序上托管了 signlar 服务器。 windows 表单应用程序作为客户端连接到 signlar 服务器,控制台应用程序通过发布到网络端点发送数据 api 并且在 api 内部,数据被广播到连接的 client/s. (在我的例子中,我有单向数据传输)

我认为创建一个独立的信号服务器(在 iis 上托管或自己托管)是正确的选择。
首先,你的代码很整洁,你可以独立于其他项目维护代码。您的应用程序将不依赖于另一个应用程序,因此如果您的 wpf 或 uwp 应用程序崩溃,您将不会受到影响,另一方面,您的信号服务器也会关闭,如果信号服务器应该始终启动并且 运行.

据我所知,我看不出将 Signalr 服务器与其他应用程序分开有任何缺点,如果您在单独的物理机器上工作,也许我会告诉您网络延迟很重要为你。

所以,分而治之!

So far that's working pretty well but I was wondering if I could somehow set up the server in a DLL that the WPF app could consume and control.

您可以在从 WPF 应用程序引用的 class 库中实现 SignalR 服务器。这称为自托管 SignalR 服务器。

MSDN 上有一个示例确实使用控制台应用程序来托管服务,但您可以在 WPF 应用程序中执行相同的操作:

教程:SignalR 自托管: https://docs.microsoft.com/en-us/aspnet/signalr/overview/deployment/tutorial-signalr-self-host