Reactive Extensions(Rx)란 무엇인가? 1
Reactive Extensions (이하 Rx)는 observable sequence 2와 LINQ형식의 쿼리문, 비동기 이벤트-기반 프로그래밍으로 구성된 라이브러리다.
Data sequences는 파일, 웹 서비스, 웹 서비스 요청, 시스템 알림 또는 유저 입력같은 일련의 이벤트들 처럼 많은 형식을 취할 수 있다.
Rx는 위에서 언급된 모든 데이터들을 observable sequence로 나타낼 수 있다.
Pulling vs. Pushing Data
어플리케이션은 데이터 검색 프로세스에있어 적극적이다. 게다가 enumerator를 얻기위해 GetEnumerator를 호출하는데, GetEnumerator는 MoveNext를 호출하여 검색의 흐름을 제어한다. enumeration 패턴은 동기적인데, 이는 데이터 소스를 가져오는 동안 어플리케이션이 블럭된다는 것을 의미한다. 이런 패턴은 책을 빌리기 위해 도서관을 방문하는 것과 비슷하다. 책을 다 읽은 후에 다른 책을 빌리기 위해 다시 도서관을 방문해야 한다.
반면에, 반응형 프로그래밍에서는 데이터 스트림(Rx에서는 observable sequence라고 불리는)을 구독함으로써 더 많은 정보를 얻고, 모든 데이터 소스로부터 모든 변경사항을 받는다. 어플리케이션은 observable 데이터를 구독하는 것이외에는 데이터 검색 프로세스에서 수동적이며, 적극적으로 데이터를 받아오지 않고, 단지 푸쉬되는 데이터에 한해서만 받응한다. 스트림이 더 이상 데이터를 제공하지 않거나, 에러가 발생했을 때, 데이터는 구독자에게 이 소식을 알린다. 이런 방식은, 데이터를 업데이트하는데 있어서 블럭되지 않는다.
1 2 3 4 | public interface IObservable<T> { IDisposable Subscribe(IObserver<T> observer); } | cs |
1 2 3 4 5 6 | public interface IObserver<T> { void OnCompleted(); void OnError(Exception error); void OnNext(T value); } | cs |
'유니티 개발 정보 > 프로그래밍' 카테고리의 다른 글
Reactive Extenstion(Rx) - 2 (0) | 2016.02.12 |
---|---|
Singleton VS Static Class (0) | 2015.07.17 |
New Unity Messaging System (0) | 2015.03.18 |
유니티에서 정적(static) 변수 사용하기 (4) | 2013.12.04 |
유니티에서 Static IEnumerator 호출하기 (0) | 2013.12.03 |