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

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



답변

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


답변

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

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

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


답변

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

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

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


답변

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

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


답변

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

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

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


답변

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


답변