可以在没有 Web 浏览器客户端的情况下使用 SignalR 吗?

Can SignalR be used without a web browser client?

我正在开发一个项目,使用同步前端来处理异步进程,使 Web 调用看起来是同步的,并且正在探索使用 SignalR 将它们联系在一起。

我们托管了一个带有异步 WCF 端点的服务,适用于我们的大多数客户。他们向我们发送数据,我们对其进行处理,但在处理数据后他们没有得到回应。我们的环境是多层的,并且在设计上是异步的。

但是,需要托管一个同步前端,我们服务的调用者可以在通过我们的环境完成对数据的操作后收到响应。

我们需要允许客户端打开到我们的 WCF 服务的连接、传输数据并等待响应。这个想法是让 WCF 服务为客户端及其数据创建一个唯一标识符,并将此数据交给异步环境进行处理。同时,WCF 服务将打开到中央 HUB 的连接并等待指示特定数据已完成处理的响应。然后 HUB 会用状态响应 WCF 服务,WCF 服务会响应原始客户端。

我正在为此目的探索 SignalR,主要有两个原因:

根据我所读到的有关 SignalR 的所有内容,它使用 javascript 和 RPC 与客户端通信,而且我见过的所有实现都将 Web 浏览器作为客户端。在此实现中,客户端是一个 .NET 程序集;具体来说,WCF 服务。这可行吗,还是我应该追求不同的技术?

我提供了一个高级序列图来帮助说明该过程。 Synchronous Fronted Call

SignalR 基本上是通过各种网络技术(HTTP 轮询、网络套接字等)进行双向异步通信的映射

有适用于 C#、Java、iOS 以及可能其他语言的 SignalR 客户端库。您不仅限于浏览器客户端。 (我相信 SignalR nuget 包包含一个 C# 客户端库,尽管我已经有一段时间没有使用它了。)