Является ли SignalR тем же самым, что и Reactive Extensions? Можете ли вы объяснить, почему или почему нет?
SignalR против реактивных расширений
Ответ 1
Нет, они абсолютно не то же самое.
Reactive Extensions - это библиотека для создания и составления наблюдаемых потоков данных или событий (которые на самом деле очень похожи). Он ничего не знает о связях клиент-сервер или о других вещах. Он ориентирован исключительно на Observable
и способен обертывать любую коллекцию, поток, событие, асинхронный метод и т.д. В общий интерфейс Observable
.
SignalR - это инструментарий для создания постоянных (то есть живых) дуплексных соединений между клиентом и сервером. Он работает через HTTP, и его цель состоит в том, чтобы обернуть три низкоуровневых метода: длительный опрос, события на стороне сервера и веб-сокеты в API высокого уровня для удобной разработки. Поэтому он сосредоточился на сообщении.
Итак, сами компоненты совершенно независимы друг от друга, и они имеют совершенно разные проблемы.
С другой стороны, эти две большие библиотеки дополняют друг друга: можно использовать SignalR для передачи событий от сервера к клиентам, а затем переносить события на стороне сервера в RX Observable
для создания сложных реактивных пользовательских опытов.
UPDATE
Rx похож на LINQ, он помогает вам указать "что происходит", он не входит в детали "как". SignalR - это библиотека для реализации "способа" для сетевого общения в реальном времени - Paul Betts
Разница между "LINQ to Objects" и RX заключается в том, что в "LINQ to Objects" вы вытаскиваете следующие элементы из перечислимой вещи, а в RX их отталкивают от наблюдаемой вещи.