본문
160802(화) - RxJava(1. 닷넷에서 Rx자바까지)
RxJava : 1. 닷넷에서 Rx자바까지
Reactive programming
비동기 data flow에 기반을 둔 프로그래밍 패러다임
Data flow == 강
관찰, 필터링, 다루기, 새로운 흐름을 위해 다른 흐름과 병합 등등...
Event
리액티브 프로그래밍의 핵심 개념
대기, 프로시저 작동, 다른 이벤트 작동 등...
※ 소프트웨어는 이벤트 기반이면서 리액티브적이여야 한다.
Microsoft Reactive Programming
Rx는 .NET 의 Reactive extension 의 줄임말
Observable 시퀸스로 비동기와 이벤트 기반의 프로그램을 개발
- 비동기 데이터 스트림을 모델링
- LINQ(링큐) 문법을 이용해 옵저버블 질의
- Schedulars 이용하여 동시성 문제 해결
Push approach
개발자가 결과를 요청하고 기다리는 대신, 결과를 요청하고 값이 준비되면 알림을 받는다.
ex) 로그인
1. 프로그레스 다이얼로그 출력
2. 향후 로그인을 위한 사용자 이름과 비밀번호 저장
3. 로그인에 성공하자마자 시간이 걸릴 작업들을 먼저 진행
넷플릭스 Rx Java
자바 진영에 Rx 적용
설계가 사용자의 데이터를 처리하는데 어려움을 겪고 있다는 사실 캐치
REST 호출 회수를 줄이기 위해 설계 재구성
여러 REST 호출을 가지고 클라이언트에 필요한 만큼의 데이터를 처리하도록 시킴
-> 클라이언트의 필요에 기반을 둔 하나의 최적화된 REST 호출을 만들기로 함
-> 대안으로 Reactive를 택했다.
.NET의 Rx를 JVM으로 이식
-> 자바뿐만 아니라 Closure, Groovy, Scala 등 함수형 언어에도 가능성을 열어둠
- 서버 성능을 더욱 활용하기 위한 손쉬운 동시성
- 손쉬운 조건부 비동기 실행
- 콜백 지옥을 벗어나기 위한 적절한 방법
- 리액티브 접근법
닷넷 Iterable의 pull == RxJava Observable의 push
풀 방식은 블로킹 대기 <-> 푸시는 구독하고 반응 하는 방식
생산자는 새로운 값이 준비되면 값을 푸시하고 이를 소비자에게 알린다.
이 시점에 소비자는 이를 소비한다.
필요한 정보가 동기적으로나 비동기적으로 전달되면 개발자는 간단히 무시할 수 있으므로 유연하며, 코드는 여전히 동작중일 것이다.
RxJava의 차이점
Gang of Four의 Observer pattern 개념을 확장
Observable 클래스는 세 가지 빠진 기능 제공
1. 생산자는 더 이상 가능한 데이터가 없다는 사실을 onCompleted()로 알린다.
2. 생산자는 에러의 발생을 onError()로 알릴 수 있다.
3. 옵저버블은 중첩 방식에서 벗어나 콜백 지옥에서 구한다.
'Mobile > RxJava2' 카테고리의 다른 글
171211(월) - @Target (0) | 2017.12.11 |
---|---|
171208(금) - @Qualifiers (0) | 2017.12.08 |
171206(수) - @Scope, @Retention (0) | 2017.12.06 |
170904(월) - RxJava2 (Infinite scroll with RxJava2, Kotlin) (0) | 2017.09.04 |
160812(금) - RxJava (0) | 2016.08.12 |
댓글