SignalR против реактивных расширений - PullRequest
40 голосов
/ 07 декабря 2011

Является ли SignalR тем же, что и Reactive Extensions? Можете ли вы объяснить, почему или почему нет?

1 Ответ

90 голосов
/ 08 декабря 2011

Нет, они абсолютно не одно и то же.

Reactive Extensions - это библиотека для создания и составления наблюдаемых потоков данных или событий (которые на самом деле очень похожи). Он в основном ничего не знает о клиент-серверных соединениях или других вещах. Он ориентирован исключительно на Observable s и способен обернуть любую коллекцию, поток, событие, асинхронный метод и т. Д. В общий интерфейс Observable.

SignalR - это набор инструментов для создания постоянных (то есть живых) дуплексных соединений между клиентом и сервером. Он работает по протоколу HTTP, и его целью является объединение 3 низкоуровневых методов: длинный опрос, события на стороне сервера и веб-сокеты в высокоуровневый API для удобной разработки. Итак, ориентирован на общение.

Итак, сами компоненты совершенно независимы друг от друга, и у них совершенно разные проблемы.

С другой стороны, эти две замечательные библиотеки дополняют друг друга: можно использовать SignalR для передачи событий с сервера на клиенты, а затем переносить события на стороне сервера в Observable RX для создания сложных реагирующих пользовательских взаимодействий.

UPDATE

Rx похож на LINQ, он помогает вам определить «что происходит», он не вдавается в детали «как». SignalR - это библиотека для реализации «как» для сетевого взаимодействия в реальном времени - Пол Беттс

Разница между «LINQ to Objects» и RX заключается в том, что в «LINQ to Objects» вы вытаскиваете следующие элементы из перечисляемой вещи, тогда как в RX они выталкиваются к вам из наблюдаемой вещи.

...