Dobry przykład użycia reaktywnych rozszerzeń [zamknięte]

81

Rozumiem podstawy Rx. Tam, gdzie walczę, czy faktycznie użyłbyś tego poza akademickimi przykładami? Jakie są typowe, proste scenariusze ze świata rzeczywistego, w których Rx jest znacznie lepszym rozwiązaniem niż to, które mamy dzisiaj w .NET?

Keith Hill
źródło
3
Napisałem demo wyszukiwania Bing w WPF z Rx: blog.andrei.rinea.ro/2013/06/01/…
Andrei Rînea
2
Dokładnie odpowiadam na to pytanie w serii postów na moim blogu: rehansaeed.co.uk/reactive-extensions-part1-replacing-events
Muhammad Rehan Saeed
1
Zajrzyj na github.com/AdaptiveConsulting/ReactiveTraderCloud . Myślę, że to dobry przykład, ponieważ używali dużo Reactive Extension w swojej próbce. Twoje zdrowie!
thangchung

Odpowiedzi:

40

Kilka dobrych przykładów znajduje się na wiki 101 Rx Samples

sblom
źródło
13
Dzięki za link. Jest tam kilka całkiem dobrych próbek. Wciąż nie do końca widzę tego uderzającego w głowę - próbka „o, to kanoniczny problem, który rozwiązuje”. Z drugiej strony, może to być po prostu powolne wchłanianie.
Keith Hill
9
Hem… pomimo wysokiego wyniku, ta odpowiedź pozostaje „tylko link”. Czy mógłbyś to trochę rozwinąć?
jub0bs
czy nie są naukowcami ?
Lei Yang
28

Rx umożliwia pisanie kodu, który organizuje współbieżne zdarzenia razem. Jeśli kiedykolwiek korzystałeś z TPL (tj. Task), a następnie musiałeś wykonywać zawiłe backflipy, aby spróbować ContinueWith lub WaitAll we właściwych rzeczach, Rx jest dla Ciebie.

Na przykład przepływ pracy „Dla każdego elementu w tej tablicy wywołaj usługę internetową, a gdy wszystkie te żądania wrócą, zrób coś innego. Jeśli którykolwiek z nich zawiedzie, zawiodą całość”.

Ujawnienie, bezwstydna wtyczka naprzód: książka, którą Jesse Liberty i ja napisaliśmy o Rx, została zaprojektowana w celu rozwiązania dokładnie tego pytania: „Jak używać Rx w mojej codziennej pracy?”; „Co mogę z tym zrobić ?”

Ana Betts
źródło
To po prostu wyjaśniło, że potrzebuję lub chcę Rx
mroźny cudowny
25

Przede wszystkim IObservable to wydarzenie . Tak więc wszędzie tam, gdzie używasz zdarzeń wewnętrznie, możesz użyć IObservable - a jeśli później będziesz musiał zastosować LINQ do tego zdarzenia, możesz to zrobić bez refaktoryzacji.

Po drugie, RX nadaje się do każdej sytuacji, w której musisz uruchomić kod asynchronicznie . Na przykład wywołanie usługi internetowej lub załadowanie dużego obrazu.

Ale kiedy naprawdę zacznie świecić - jeśli Twój program osiągnie jakąś „masę krytyczną” użycia IObservable i zaczniesz łączyć różne obserwowalne, zdziwisz się, jak łatwe stają się niektóre zadania.

Sergey Aldoukhov
źródło
5
  • Pomiary urządzeń
  • Dane przychodzą przez magistralę komunikatów

W obu przypadkach standardowym sposobem otrzymywania danych są teraz zdarzenia, ale jeśli chcę, aby składnia lub kompozycja zapytania była zgodna z wymaganiami, to RX daje mi je tam, gdzie zdarzenia nie.

Scott Weinstein
źródło
2

Rx jest bardzo ogólny, więc ma nieograniczoną użyteczność, tak jak IEnumerable / IEnumerator ma nieograniczoną użyteczność. IE pobiera wartości, IO wypycha wartości.

Foreach to konkretny przykład, w którym IEnumerables przydają się, ale to nie wyjaśnia IEnumerable, yield ani nic. To samo dotyczy Rx.

Możliwość spojrzenia na coś z punktu widzenia ciągnięcia lub punktu widzenia oraz możliwość kontrolowania kierunku lub środków jest bardzo potężna, ponieważ teraz możesz dowolnie przesuwać i ciągnąć obliczenia, używając zapytania LINQ operatory „za darmo” w stosunku do IO, ponieważ jest to matematyczna dualność IE.

Richard Anthony Hein
źródło
0

Właśnie rzuciłem okiem na Rx, ale jednym z zabawnych projektów, do których go wykorzystam, jest utworzenie widżetu Silverlight, który wyświetla aktywność w naszej aplikacji internetowej ASP.NET MVC (jakie metody akcji zostały wywołane, przez którego użytkownika itp.) . Wygląda na to, że Rx może pomóc w wielu rzeczach w tym projekcie, takich jak zarządzanie współbieżnością i Throttling.

Adrian Grigore
źródło