从DLL运行SignalR服务器

时间:2017-11-23 08:34:37

标签: c# wpf dll signalr signalr-hub

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

到目前为止,它工作得很好,但我想知道我是否可以在WPF应用程序可以使用和控制的DLL中以某种方式设置服务器。这将减少整个解决方案,使其更加优雅imo。

非常感谢任何想法!

2 个答案:

答案 0 :(得分:1)

我有类似于你的经历。我在web api应用程序上托管了signlar服务器。 Windows窗体应用程序作为客户端连接到signlar服务器,并且控制台应用程序通过发布到web api的端点并在api内部发送数据,数据被brodacasted到连接的客户端。 (在我的情况下,我有一个方向数据传输)

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

就我所知,我无法看到将信号器服务器与其他应用程序分开的任何缺点,如果你在单独的物理机器上工作,也许我会告诉它如果重要的话会有网络延迟为了你。

所以,分而治之!

答案 1 :(得分:1)

  

到目前为止,它工作得很好,但我想知道我是否可以在WPF应用程序可以使用和控制的DLL中以某种方式设置服务器。

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

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

教程:SignalR自我主持人: https://docs.microsoft.com/en-us/aspnet/signalr/overview/deployment/tutorial-signalr-self-host