44

SignalR 和 Reactive Extensions 一样吗?你能解释为什么或为什么不?

4

1 回答 1

95

不,它们绝对不是一回事。

Reactive Extensions 是一个库,用于创建和组合可观察的数据或事件流(实际上非​​常相似)。它基本上对客户端-服务器连接或其他事情一无所知。它只专注于Observables 并且能够将任何集合、流、事件、异步方法等包装到公共Observable接口中。

SignalR 是一个用于在客户端和服务器之间创建持久(即活动)双工连接的工具包。它在 HTTP 上工作,其目的是将 3 种低级技术:长轮询、服务器端事件和 Web 套接字封装到高级 API 中,以便进行舒适的开发。因此,它专注于沟通。

因此,组件本身是完全独立的,它们的关注点完全不同。

另一方面,这两个优秀的库是互补的:一个可能使用 SignalR 将事件从服务器推送到客户端,然后将服务器端事件包装到 RX 中Observable,以创建复杂的反应式用户体验。

更新

Rx 就像 LINQ,它帮助您指定“发生了什么”,它不涉及“如何”的细节。SignalR 是一个实现实时网络通信“如何”的库——Paul Betts

'LINQ to Objects' 和 RX 之间的区别在于,在 'LINQ to Objects' 中,您从可枚举的事物中提取下一个项目,而在 RX 中,它们是从可观察的事物中推送给您的。

于 2011-12-07T20:56:13.620 回答