Reactive Extensions 사용의 좋은 예 [닫힌]


81

Rx의 기본을 이해합니다. 제가 어려움을 겪고있는 부분은 학문적 사례를 넘어서 실제로 이것을 어떻게 사용하겠습니까? Rx가 오늘날 .NET에있는 것보다 훨씬 더 나은 솔루션 인 일반적인 간단한 실제 시나리오는 무엇입니까?


3
Rx를 사용하여 WPF에서 Bing 검색 데모를 작성했습니다. blog.andrei.rinea.ro/2013/06/01/…
Andrei

2
내 블로그에있는 일련의 게시물에서이 질문에 정확히 답합니다. rehansaeed.co.uk/reactive-extensions-part1-replacing-events
Muhammad Rehan Saeed

1
한 번 봐 제발 github.com/AdaptiveConsulting/ReactiveTraderCloud을 . 샘플에 Reactive Extension을 많이 사용했기 때문에 좋은 예라고 생각합니다. 건배!
thangchung

답변:


40

좋은 예 는 101 Rx 샘플 위키를 참조하세요 .


13
링크 주셔서 감사합니다. 거기에 꽤 좋은 샘플이 있습니다. 여전히 헤드 슬 래퍼를 보지 못합니다. "오, 이것이 해결하는 표준 문제입니다"샘플. 그런 다음 다시, 내가 이해를 늦추는 것일 수 있습니다.
Keith Hill

9
흠 ... 높은 점수에도 불구하고이 답변은 "링크 전용"으로 남아 있습니다. 좀 더 살을 펴실 수 있을까요?
jub0bs

그들은 학문적이지 않습니까?
Lei Yang

28

Rx를 사용하면 동시 이벤트를 함께 조정하는 코드를 작성할 수 있습니다. TPL (예 : Task)을 사용해 본 적이 있다면 ContinueWith 또는 WaitAll이 올바른 작업을 수행하기 위해 복잡한 백 플립을 수행해야했다면 Rx가 적합합니다.

예를 들어, "이 배열의 각 항목에 대해 웹 서비스를 호출하고 해당 요청이 모두 돌아 오면 다른 작업을 수행하십시오. 둘 중 하나가 실패하면 모든 것을 실패합니다"의 워크 플로우입니다.

공개, 뻔뻔한 연결 : Jesse Liberty와 제가 Rx대해 쓴 책은 "일상 업무에서 Rx를 어떻게 사용합니까?"라는 질문을 정확히 해결하기 위해 고안되었습니다. "나는 무엇을 할 수 이와?"


이것은 단지 그것이 내가 필요 지우거나 수신하고자했다
frostymarvelous

25

우선, IObservable 은 이벤트 입니다. 따라서 내부적으로 이벤트를 사용하는 모든 곳에서 IObservable을 사용할 수 있습니다. 나중에이 이벤트에 LINQ를 적용해야하는 경우 리팩토링없이 수행 할 수 있습니다.

둘째, RX는 코드를 비동기 적 으로 실행해야하는 모든 상황에 적합합니다 . 예를 들어 웹 서비스를 호출하거나 큰 이미지를로드합니다.

그러나 실제로 빛을 발하기 시작할 때-프로그램이 IObservable 사용량의 "임계량"에 도달하고 다른 관찰 가능 항목을 결합 하기 시작 하면 일부 작업이 얼마나 쉬워 지는지 놀랄 것입니다.


5
  • 장치 측정
  • 메시지 버스를 통해 들어오는 데이터

이제 두 경우 모두 데이터를 수신하는 표준 방법은 이벤트를 통하는 것이지만 쿼리 구문이나 구성을 원한다면 RX는 이벤트가없는 곳에서 데이터를 제공합니다.


2

Rx는 매우 일반적이므로 IEnumerable / IEnumerator에 무제한 유틸리티가있는 것처럼 무제한 유틸리티가 있습니다. IE는 값을 가져오고 IO는 값을 푸시합니다.

Foreach는 IEnumerables가 유용한 위치에 대한 구체적인 예이지만 IEnumerable이나 yield 등을 설명하지 않습니다. Rx도 마찬가지입니다.

풀 시점 또는 푸시 시점에서 무언가를 볼 수 있고 방향이나 수단을 제어 할 수 있다는 것은 매우 강력합니다. LINQ 쿼리를 사용하여 원하는대로 계산을 푸시하고 풀 수 있기 때문입니다. IE의 수학적 이중이기 때문에 IO에 대한 "무료"연산자.


0

방금 Rx를 처음 살펴 봤지만이를 사용할 재미있는 프로젝트 중 하나는 ASP.NET MVC 웹 앱에서 활동을 표시하는 Silverlight 위젯을 만드는 것입니다 (어떤 작업 메서드가 호출되었는지, 어떤 사용자가 호출했는지 등). . Rx는 동시성 관리 및 스로틀 링과 같은이 프로젝트의 많은 일을 도울 수있는 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.