SignalR和反应式扩展是一样的吗?你能解释一下为什么吗?
发布于 2011-12-08 04:56:14
不,它们绝对不是一回事。
Reactive Extensions是一个用于创建和组成可观察到的数据流或事件(实际上非常相似)的库。它基本上对客户端-服务器连接或其他事情一无所知。它只关注Observable,并且能够将任何集合、流、事件、异步方法等包装到通用的Observable接口中。
SignalR是一个工具包,用于在客户端和服务器之间创建持久(即活动的)双工连接。它通过HTTP工作,其目的是将3种低级技术:长轮询、服务器端事件和web套接字封装到一个高级API中,以便进行舒适的开发。所以,它的重点是沟通。
因此,组件本身是完全独立的,它们有完全不同的关注点。
另一方面,这两个伟大的库是相辅相成的:可以使用SignalR将事件从服务器推送到客户端,然后将服务器端事件包装到RX的Observable中,以创建复杂的反应式用户体验。
更新
Rx就像LINQ一样,它帮助你指定“发生了什么”,它不会深入到“如何”的细节。SignalR是一个为实时网络通信实现“如何”的库- Paul Betts
“LINQ to Objects”和RX的不同之处在于,在“LINQ to Objects”中,你从可枚举的事物中提取下一项,而在RX中,它们是从可观察的事物中推送给你的。
https://stackoverflow.com/questions/8421695
复制相似问题