diff --git a/Part 1 - Getting Started/1. Why Rx_KR.md b/Part 1 - Getting Started/1. Why Rx_KR.md new file mode 100644 index 0000000..ef6b3dc --- /dev/null +++ b/Part 1 - Getting Started/1. Why Rx_KR.md @@ -0,0 +1,47 @@ +# 파트1 - 시작 + +## 왜 Rx 일까? + +> 유저들은 실시간 데이터를 기대한다. 실시간으로 그들의 트윗메시지를 원하고, 실시간으로 주문을 확인하기를 원한다. 정확히 "지금"의 가격을 원한다. 또한 온라인 게임에서의 즉각적인 응답성을 원한다. 개발자로서, 당신은 fire-and-forget(자동 탐지) 메시지를 요구받는다. 결과를 기다리느라 blocked 되는 것을 원치않는다. 준비됐을 때 결과를 푸쉬받기를 원한다. 훨씬 더 좋은 것은, 어떤 결과 set이 작동하면서, 동시에 준비될 때 개별적인 결과들을 받기를 원하는 것이다. 개발자가 data의 첫번째 줄을 보기 전에 진행된 전체 set을 위해 기다리는 것을 원하지 않는다. 이제 세상은 "push"로 움직인다. 유저들은 개발자들이 따라잡기를 기다리고 있다. 개발자들은 data를 push할 tool을 가지고 있으며, 어렵지 않다. 개발자들은 data를 push하기 위해 react(반응)할 도구들을 필요로한다. + +Rx.로 온 것을 환영한다. 이 책은 Rx.NET(http://msdn.microsoft.com/en-us/devlabs/gg577609)의 www.introtorx.com 와 original Microsoft library인 Netflix 구현체인 RxJava(https://github.com/ReactiveX/RxJava) beginner를 위한 소개를 기반으로 한다. Rx 는 functional programmers 에게 친숙한 우아하고(elegant), 선언적인(declarative) 스타일로 문제들을 해결할 수 있게 해주는 강력한 도구이다. +Rx는 여러 장점들을 가지고 있다. + +* Unitive(연합하는) + * Rx의 Queries는 Functional Programming에 의해 영감을 받은 다른 libraries로서 똑같은 스타일로 되어있다. +* Extensible(확장성있는) + * RxJava는 custom operators로 확장이 가능하다. 비록, Java가 elegant way에서 일어난 이런 것들을 허용하지는 않지만, RxJava는 다른 languages 내부에서 Rx 구현체들을 찾을 수 있도록 모든 확장성을 제공한다. +* Declarative(선언적인) + * Functional transformations(함수적인 변형)이 선언적인 방법으로 읽힌다. +* Composable(작성가능한) + * Rx operators 는 조합을 통해 더 복합적인 operations를 생산할 수 있다. +* Transformative(변형적인) + * Rx operators 다른 데이터 타입 중의 하나로 변형할 수 있으며, reducing, mapping, 필요에 따라 expanding streams할 수도 있다. + + +## 언제 Rx가 적합할까? + +Rx는 연속한 이벤트들을 구성하고, 받는 데에 적합하다. 이 책에서는 www.intortorx.com에 따라 Rx에 대한 몇 가지 use case를 제공한다. + +### 이럴 때 Rx를 사용해라. + +* 마우스 이동, 버튼 클릭과 같은 UI 이벤트들 +* property 변경, collection 업데이트, 주문 양식 채움, 등록 접수 등과 같은 + Domain 이벤트들 +* 파일 탐색, 시스템과 윈도우즈 관리도구 이벤트 같은 Infrastructure 이벤트 +* message bus로부터의 broadcast나 WebSockets API로부터의 push event 또는 + Nirvana와 같은 다른 low latency middleware 같은 Integration 이벤트들 +* StreamBase나 StreamInsight 같은 CEP engine 통합 + +### Rx를 사용해 볼 수 있다. + +* '미래'의 결과(Result of `Future`) 또는 등가 패턴(equivalent pattern) + +기존프로젝트에 여러 패턴들은 이미 잘 적용되어있으며 당신은 개발프로세스에 추가하지 않으면서, 그 위에 introducing Rx를 적용시킬 수 있는 것을 찾을 수 있을 지 모른다. + +### Rx를 사용하지 않는 게 좋을 것 + +* 단지 Rx library 를 통해 그것들을 작업하기 위해, iterables을 observables로 번역하는 것 + + +##### 계속,