
리액티브 프로그래밍
Reactive Extensions (Rx), IObservable, operators, schedulers, backpressure (선택 사항이며 최신 web API에서는 덜 흔합니다)
1Reactive Extensions (Rx.NET)에서 IObservable<T> 인터페이스란 무엇인가요?
Reactive Extensions (Rx.NET)에서 IObservable<T> 인터페이스란 무엇인가요?
답변
IObservable<T>는 push 기반 데이터 소스를 나타내는 Rx.NET의 기본 인터페이스입니다. observer가 비동기 알림을 받기 위해 구독할 수 있는 Subscribe 메서드를 제공합니다. 이는 IEnumerable<T>의 리액티브 대응물입니다. IEnumerable이 데이터를 동기적으로 pull하는 반면, IObservable은 데이터를 비동기적으로 subscriber에게 push합니다.
2Rx.NET에서 IObserver<T> 인터페이스의 세 가지 메서드는 무엇인가요?
Rx.NET에서 IObserver<T> 인터페이스의 세 가지 메서드는 무엇인가요?
답변
IObserver<T>는 세 가지 메서드를 정의합니다. 시퀀스의 각 요소를 받는 OnNext(T value), 오류를 처리하고 실패 시 시퀀스 종료를 알리는 OnError(Exception error), 그리고 시퀀스가 성공적으로 완료되었음을 나타내는 OnCompleted()입니다. 이 세 메서드는 observer 계약을 구성하며, OnError 또는 OnCompleted 이후에는 더 이상 OnNext가 호출되지 않음을 보장합니다.
3IEnumerable<T>와 IObservable<T>의 주요 차이점은 무엇인가요?
IEnumerable<T>와 IObservable<T>의 주요 차이점은 무엇인가요?
답변
IEnumerable<T>는 pull 모델로, 소비자가 GetEnumerator()와 MoveNext()를 사용해 데이터를 동기적으로 요청합니다. IObservable<T>는 push 모델로, 소스가 Subscribe()를 통해 데이터를 비동기적으로 subscriber에게 push합니다. IEnumerable은 반복 중에 호출 스레드를 차단하는 반면, IObservable은 논블로킹 작업과 LINQ operators를 통한 비동기 이벤트 합성을 가능하게 합니다.
Rx.NET에서 Select operator의 역할은 무엇인가요?
Rx.NET에서 Where operator는 어떻게 작동하나요?
+21 면접 질문