Хороший пример использования реактивных расширений

StackOverflow https://stackoverflow.com/questions/2550763

  •  23-09-2019
  •  | 
  •  

Вопрос

Я понимаю основы Rx.Меня беспокоит вопрос, как бы вы на самом деле использовали это, помимо академических примеров?Каковы некоторые распространенные и простые реальные сценарии, в которых Rx является гораздо лучшим решением, чем то, что мы имеем сегодня в .NET?

Это было полезно?

Решение

Несколько хороших примеров см. вики-сайт 101 Rx Samples

Другие советы

Rx позволяет вам писать код, который вместе организует одновременные события.Если вы когда-либо использовали TPL (т.Task), затем пришлось делать запутанные сальто назад, чтобы попытаться продолжить с или WaitAll для правильных действий, Rx для вас.

Например, рабочий процесс «Для каждого элемента в этом массиве вызовите веб-службу, и когда все эти запросы вернутся, сделайте что-нибудь еще.Если какой-то из них потерпит неудачу, потерпит неудачу все».

Раскрытие информации, впереди бесстыдная вилка: Книга, которую мы с Джесси Либерти написали о рецепте был разработан, чтобы решить именно этот вопрос: «Как мне использовать Rx в повседневной работе?»;"Что я могу делать с этим?"

Прежде всего, IObservable это событие.Таким образом, везде, где вы используете события внутри себя, вы можете использовать IObservable — и если вам позже понадобится применить LINQ к этому событию, вы сможете сделать это без рефакторинга.

Во-вторых, RX подходит для любой ситуации, когда вам нужно запустить код. асинхронно.Например, вызов веб-службы или загрузка большого изображения.

Но когда это действительно начинает сиять - если ваша программа достигает некоторой «критической массы» использования IObservable и вы начинаете объединение различные наблюдаемые, вы будете удивлены, насколько легкий некоторые задачи становятся.

  • Измерения устройства
  • Данные, поступающие по шине сообщений

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

Rx очень общий, поэтому его полезность неограничена, точно так же, как IEnumerable/IEnumerator имеет неограниченную полезность.IE извлекает значения, IO отправляет значения.

Foreach — это конкретный пример того, где могут пригодиться IEnumerables, но это не объясняет ни IEnumerable, ни выход, ни что-то еще.То же самое и с Rx.

Возможность смотреть на что-то либо с точки зрения вытягивания, либо с точки зрения выталкивания, а также возможность контролировать направление или средства очень эффективна, потому что теперь вы можете перемещать и перемещать вычисления по своему желанию, используя запрос LINQ. операторы «бесплатно» против ввода-вывода, потому что это математический аналог IE.

Я только что впервые взглянул на Rx, но один интересный проект, для которого я буду его использовать, — это создание виджета Silverlight, который отображает активность в нашем веб-приложении ASP.NET MVC (какие методы действий были вызваны, каким пользователем и т. д.). .Кажется, что Rx может помочь во многих вещах в этом проекте, таких как управление параллелизмом и регулирование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top