Хороший приклад використання реактивних розширень [закрито]


81

Я розумію основи Rx. Де я борюся, як би ви насправді використали це, не лише академічні приклади? Які загальні, прості реальні сценарії, коли Rx є набагато кращим рішенням, ніж те, що ми маємо сьогодні в .NET?


3
Я написав демо-версію пошуку Bing у WPF за допомогою Rx: blog.andrei.rinea.ro/2013/06/01/…
Андрій Ріне,

2
Я відповідаю саме на це питання в серії дописів у своєму блозі: rehansaeed.co.uk/reactive-extensions-part1-replacing-events
Мухаммад Рехан Саїд

1
Будь ласка, загляньте на github.com/AdaptiveConsulting/ReactiveTraderCloud . Я думаю, що це хороший приклад, тому що вони використовували багато реактивних розширень для своєї вибірки. На здоров’я!
thangchung

Відповіді:


40

Багато хороших прикладів див. У вікі 101 Rx Samples


13
Дякую за посилання. Там є кілька досить хороших зразків. Досі не зовсім бачу, що головний шлеп - зразок "о, це канонічна проблема, яку це вирішує". Знову ж таки, міг би бути просто я повільним на засвоєнні.
Кіт Хілл

9
Хем ... незважаючи на високий бал, ця відповідь залишається "лише за посиланням". Чи не могли б ви це трохи розібрати?
jub0bs

вони не академічні ?
Lei Yang

28

Rx дозволяє писати код, який організовує паралельні події разом. Якщо ви коли-небудь використовували TPL (тобто Завдання), тоді вам доводилося робити заплутані зворотні перекидання, щоб спробувати ContinueWith або WaitAll у правильних речах, Rx для вас.

Наприклад, робочий процес "Для кожного елемента в цьому масиві зателефонуйте веб-службі, і коли всі ці запити повернуться, зробіть щось інше. Якщо будь-який з них зазнає невдачі, провальте все".

Розкриття інформації, безсоромна робота: книга, яку ми з Джессі Ліберті написали про Rx, була розроблена для вирішення саме цього питання: "Як я використовую Rx у своїй повсякденній роботі?"; "Що я можу з цим зробити ?"


Це просто дало зрозуміти, що я потребую або хочу Rx
морозний дивовижний

25

Перш за все, IObservable - це подія . Отже, у будь-якому місці, де ви внутрішньо використовуєте події, ви можете використовувати IObservable - і якщо пізніше вам потрібно застосувати LINQ до цієї події, ви зможете це зробити без рефакторингу.

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

Але коли він справді починає блищати - якщо ваша програма досягне деякої "критичної маси" використання IObservable, і ви почнете поєднувати різні спостережувані дані, ви будете вражені, наскільки легкими стають деякі завдання.


5
  • Вимірювання пристрою
  • Дані надходять через шину повідомлень

В обох випадках зараз стандартний спосіб отримання даних - це події, але якщо я хочу синтаксис запиту або композицію, то RX надає їх мені там, де події цього не роблять.


2

Rx дуже загальний, тому він має необмежену корисність, як і IEnumerable / IEnumerator має необмежену корисність. IE тягне значення, IO штовхає значення.

Foreach - це конкретний приклад того, де IEnumerables дуже корисні, але це не пояснює IEnumerable, а також врожайність чи щось інше. Те саме стосується і Rx.

Можливість поглянути на щось або з точки зору витягування, або з точки зору штовхання, а також мати можливість керувати напрямком чи засобами, дуже ефективно, тому що тепер ви можете штовхати і тягнути обчислення навколо за допомогою запиту LINQ оператори "безкоштовно", проти IO, оскільки це математичний двійник IE.


0

Я щойно вперше подивився Rx, але одним цікавим проектом, для якого я його використаю, є створення віджета Silverlight, який відображає активність у нашому веб-додатку ASP.NET MVC (які методи дій були викликані, яким користувачем тощо) . Здається, Rx може допомогти у багатьох справах цього проекту, таких як управління паралельністю та регулювання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.