Reactive Cocoa vs RxSwift - 장단점
Reactive Cocoa 사람들은 이제 swift를 위해 버전 3.0에서 다시 작성했습니다.
또한 RxSwift라는 프로젝트도 진행 중입니다.
두 프레임워크의 디자인·api·철학의 차이가 무엇인지에 대한 정보를 추가할 수 있을까(SO의 정신으로 어느 것이 최선인지에 대한 의견이 아니라 진실한 것을 고집해 주십시오)
[StackOverflow 모드 주의사항]이 질문에는 명확한 답이 있습니다. 정답은 두 프레임워크 간의 차이입니다.SO에게도 매우 화제가 되고 있다고 생각합니다.
우선 ReadMe를 읽고 느낀 첫인상은 다음과 같습니다.
- RxSwift는 Microsoft의 "진짜" C# Rx에 정통한 사용자로서 훨씬 더 잘 인식됩니다.
- Reactive Coca는 이제 신호 대 신호 제작자 및 리프팅과 같은 새로운 추상화를 도입하면서 독자적인 영역으로 진입한 것 같습니다.한편으로 이것은 (핫과 콜드의 신호란) 상황을 명확하게 하는 것처럼 보이지만, 다른 한편으로 프레임워크의 복잡성이 크게 증가하는 것 같습니다.
아주 좋은 질문입니다.두 세계를 비교하는 것은 매우 어렵다.Rx는 C#, Java, JS 등의 다른 언어로 된 Reactive Extensions의 포트입니다.
Reactive Coco는 Functional Reactive Programming에서 영감을 얻었지만, 지난 몇 달 동안 Reactive Extensions에서 영감을 받은 것으로도 지적되었습니다.그 결과 Rx와 몇 가지 사항을 공유하지만 FRP에서 유래된 이름을 가진 프레임워크가 생성됩니다.
Conal의 개념 정의에 따르면 RAC와 RxSwift는 모두 기능 대응형 프로그래밍 구현이 아닙니다.이 시점부터 모든 것을 각 프레임워크가 부작용과 몇 가지 다른 요소를 처리하는 방식으로 줄일 수 있다.
커뮤니티와 메타테크에 대해 이야기합시다.
- RAC는 Objective-C에서 시작된 지 3년 된 프로젝트로, Objective-C에 대한 진행 중인 작업을 완전히 중단한 후 3.0 릴리즈를 위해 나중에 Swift로 이식되었습니다.
- RxSwift는 몇 개월 전의 프로젝트로, 현재 커뮤니티에 큰 힘이 되고 있는 것 같습니다.RxSwift에서 중요한 것은 RxSwift가 ReactiveX 조직 하에 있고 다른 모든 구현이 동일한 방식으로 작동한다는 것입니다. RxSwift에 대한 대처법을 배우면 Rx와 연계할 수 있습니다.Net, RxJava 또는 RxJs는 단순한 작업이며 언어 구문 문제일 뿐입니다.그것은 한 번 배우고, 어디에나 적용할 수 있는 철학을 바탕으로 한 것이라고 말할 수 있다.
이제 기술적인 걸 할 시간이야.
운영/관찰 기관
3.엔티티가 .RAC 3.0에는 2개의 엔티티가 있습니다.Signal
★★★★★★★★★★★★★★★★★」SignalProducer
되어 있는지 첫 번째 서브스크라이버는 이벤트를 서브스크라이버는 를 퍼블리시합니다.두 번째 서브스크라이버에는 다음 서브스크라이버가 필요합니다.start
실제로 신호/신호를 생성하도록 유도합니다.이 디자인은 많은 개발자들에게 혼란의 원인이었던 뜨거운 관측 가능성과 차가운 관측 가능성의 지루한 개념을 분리하기 위해 만들어졌습니다.부작용 관리방식으로 그 차이를 줄일 수 있는 이유다.
에서는 RxSwift입니다Signal
★★★★★★★★★★★★★★★★★」SignalProducer
요.Observable
혼란스럽게 들릴 수 있지만, 이 2개의 엔티티는 Rx 세계에서는 같은 것입니다.★★★가 들어간 Observable
RxSwift의 s.불필요한 복잡성으로 들릴 수 있습니다(또한 고온/저온/난방은 서브스크라이브/관찰 시 부작용에 불과합니다).
모두 하며, RAC가 한 작은 이 하나 RAC는 RAC의 개념입니다.interruption
의 Signal
는 완료 이벤트가 전송되기 전에 폐기됩니다. 다 하면 다음과 .
Next
하려면 , 「 수신값」을 사용합니다Error
하려면 ,Complete
을 completed observators로 하려면 , 「모든 옵저버」를
, RAC에는 「Da'RAC」가 있습니다.interrupted
은, 「」의 입니다.Signal
올바르게 완료하기 전에 또는 에러와 함께 폐기됩니다.
수동 쓰기
RAC의Signal
/SignalProducer
엔티티이므로수 은 읽기 전용 엔티티입니다.★★★★★★★★★★★★★★★★,Observable
RxSwift rx rx 。Signal
/SignalProducer
엔티티로 , 「기입 가능한 엔티티」를 가 있습니다.pipe()
수동으로 제어된 항목을 반환하는 함수입니다.에서는, 이것은 Rx 「」라고 불리는 입니다.Subject
하게 들릴 '/기입'을 로 들 수 .Future
/Promise
만들 수 있습니다. a.Future
는 읽기 홀더로, 를 들어 읽기 전용 플레이스 홀더입니다.Signal
/SignalProducer
★★★★★★★★★★★★★★★★★」Observable
★★★★★★★★★★★★★★★★★★★.Promise
으로 할 수 있다pipe()
★★★★★★★★★★★★★★★★★」Subject
.
스케줄러
이 엔티티는 양쪽에서 거의 같은 개념이지만 RAC는 시리얼 전용이며 RxSwift 기능은 동시 스케줄러도 갖추고 있습니다.
구성.
구성은 리액티브 프로그래밍의 주요 특징입니다.스트림을 구성하는 것은 두 프레임워크의 본질이며, RxSwift에서는 시퀀스라고도 합니다.
RxSwift 입니다.ObservableType
를 들어 '예'를Subject
★★★★★★★★★★★★★★★★★」Observable
같은 오퍼레이터와 함께 사용할 수 있습니다.추가적인 우려는 없습니다.
RAC 「RAC "Signal
★★★★★★★★★★★★★★★★★」SignalProducer
2개의 실체가 합니다.그리고 우리는lift
SignalProducer
를 들어 만든 것을 구성할 수 있다Signal
두 도면요소에는 자체 연산자가 있으므로 혼합해야 할 경우 특정 연산자를 사용할 수 있는지 확인해야 하며, 다른 쪽에서는 고온/저온 관측치를 잊어야 합니다.
이 부분에 대해 콜린 에버하트는 잘 요약했다.
현재 API를 살펴보면 신호 연산은 주로 '다음' 이벤트에 집중되어 있으며, 다양한 스레드에서 값을 변환, 건너뛰기, 지연, 결합 및 관찰할 수 있습니다.신호 생산자 API는 신호 라이프사이클 이벤트(완료, 오류)와 관련된 반면, 이때의 platMap, takeEntil 및 catch 등의 연산에 주로 관여합니다.
추가의
에는 RAC의 .Action
★★★★★★★★★★★★★★★★★」Property
전자는 부작용을 계산하는 유형으로, 주로 사용자 상호작용과 관련되며, 후자는 값이 변경되었을 때 작업을 수행하는 값을 관찰할 때 흥미롭다.의 경우 RxSwift의 Action
Observable
이 잘 있습니다.RxCocoa
되어 있습니다.RAC »Property
할 수 Variable
(오류)BehaviourSubject
RxSwift( 「」)
점을 것이 합니다.Property
/Variable
필수 세계를 리액티브프로그래밍의 선언적 성격과 연결시켜야 하기 때문에 iOS/Mac 공간의 서드파티 라이브러리 또는 핵심 기능을 다룰 때 기본 컴포넌트가 될 수 있습니다.
결론
RAC와 RxSwift는 완전히 다른 두 동물입니다.전자는 코코아 분야에서 오랜 역사를 가지고 있고 많은 기여자가 있습니다.후자는 상당히 젊지만 Java, JS, 또는 다른 언어에서 효과가 있는 것으로 증명된 개념에 의존하고 있습니다.넷. 어떤 것이 더 나은지 결정하는 것은 선호도에 따라 결정됩니다.RAC에서는 핫/콜드 검출이 필요했으며 이것이 프레임워크의 핵심 기능이라고 설명하고 있습니다.RxSwift에서는 핫/콜드 검출을 통합하는 것이 분리보다 낫다고 합니다.또한 부작용의 관리/실행 방법에 관한 것입니다.
3. 관측 가능성의 및 RAC 3.0의 / rac rac rac rac rac와 같은 필수 와 더불어 예기치 않은 .start
신호를 생성하기 시작합니다.어떤 사람들에게는 이런 것들이 좋은 것일 수도 있고, 심지어 치명적인 특징일 수도 있고, 어떤 사람들에게는 불필요하거나 심지어 위험할 수도 있다.또 하나 기억해야 할 것은 RAC는 가능한 한 코코아 규약에 뒤떨어지지 않기 위해 노력하고 있기 때문에 경험이 풍부한 코코아 개발자인 경우에는 RxSwift보다 더 편하게 작업할 수 있을 것입니다.
반면 RxSwift는 반응형 확장의 단점인 고온/저온 관측 가능성과 같은 장점을 모두 안고 있습니다.RxJ, RxJava 또는 Rx로부터의 이행.Net-to-RxSwift는 심플하고 모든 개념이 동일하기 때문에 자료 발견이 매우 흥미롭습니다.아마도 지금 직면하고 있는 것과 같은 문제는 RxJava에 있는 누군가가 해결하고 플랫폼을 고려하여 솔루션을 다시 적용할 수 있습니다.
어떤 것을 선택해야 하는지는 분명 선호의 문제이며 객관적인 관점에서 어떤 것이 더 나은지 구별하는 것은 불가능하다.유일한 방법은 Xcode를 실행하고 둘 다 사용해보고 작업하기 편한 것을 선택하는 것입니다.이들은 소프트웨어 개발의 단순화라는 동일한 목표를 달성하기 위해 유사한 개념의 2가지 구현입니다.
언급URL : https://stackoverflow.com/questions/32542846/reactivecocoa-vs-rxswift-pros-and-cons
'programing' 카테고리의 다른 글
파이프의 다른 쪽 끝에는 프로세스가 없습니다(SQL Server 2012). (0) | 2023.04.11 |
---|---|
어레이를 bash 매개 변수로 전달 (0) | 2023.04.11 |
SQL Server Management Studio에서 워드랩하는 방법 (0) | 2023.04.11 |
할당은 목록 슬라이스에서 어떻게 작동합니까? (0) | 2023.04.11 |
Xcode 6: 키보드가 시뮬레이터에 표시되지 않음 (0) | 2023.04.11 |