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

时间:2015-10-07 22:39:19

标签: wcf web signalr signalr-hub signalr.client

我正在开展一个项目,以便使用同步前端实现异步流程,以使Web调用显示为同步,并且正在探索使用SignalR将它们连接在一起。

我们使用WCF端点托管服务,该端点是异步的,适用于大多数客户端。他们向我们发送数据,然后我们处理数据,而不会在处理完数据后得到响应。我们的环境是多层的,并且是设计异步的。

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

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

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

  • 我喜欢SignalR使用的连接技术协议。它重量轻,可以根据不同的条件使用几种不同的技术。
  • 它可以很好地管理和区分客户端连接,从而可以轻松地将数据发送到单个客户端。这消除了我们在异步过程完成时必须尝试区分单个客户端连接到WCF服务的需要。

我读过有关SignalR的所有内容,它使用javascript和RPC与客户端进行通信,我见过的所有实现都有一个Web浏览器作为客户端。在此实现中,客户端是.NET程序集;特别是,WCF服务。这是可行的,还是我应该采用不同的技术?

我已经包含了一个高级序列图来帮助说明这个过程。 Synchronous Fronted Call

1 个答案:

答案 0 :(得分:2)

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

有可用于C#,Java,iOS和其他可能的SignalR客户端库。您不仅限于浏览器客户端。 (我相信SignalR nuget包中包含一个C#客户端库,虽然我使用它已经有一段时间了。)