2016-01-11 13 views
10

Từ http://docs.reactiveui.net/en/index.html:ReactiveUI (RxUI) vs Reactive Extensions

ReactiveUI là một khuôn khổ MVVM cho phép bạn sử dụng các phản ứng Extensions cho .NET để tạo thanh lịch, kiểm chứng giao diện người dùng mà chạy trên bất kỳ điện thoại di động hoặc nền tảng máy tính để bàn.

RxUI bằng cách nào đó khác với Tiện ích mở rộng phản ứng?

Tại sao tôi nên sử dụng RxUI hơn MVVMCross/light + Rx? Điều gì đặc biệt? RxUI có thể làm điều gì đó mà Rx không thể? Nó có ngắn gọn hơn không? Nó có ấm cúng hơn không?

Tôi đã xem ví dụ trên trang github https://github.com/reactiveui/ReactiveUI#a-compelling-example. Nhưng tôi không thể làm như vậy với chỉ Rx?

P.S. Có tài liệu API ở đâu đó không?

Trả lời

17

Bạn đã bao gồm nhiều câu hỏi ở đây, vì vậy tôi sẽ trả lời từng câu hỏi một.

RxUI bằng cách nào đó khác với Tiện ích mở rộng phản ứng?

Có. Reactive Extensions"một thư viện để soạn các chương trình không đồng bộ và dựa trên sự kiện bằng cách sử dụng chuỗi có thể quan sát và toán tử truy vấn kiểu LINQ". Nó không liên quan gì đến giao diện người dùng. Rx cung cấp cho bạn tóm tắt chung trên luồng dữ liệu.

RxUI là khung MVVM, có nghĩa là it is a library of classes helping you implement MVVM pattern in your app.

RxUI có thể làm điều gì đó mà Rx không thể? Nó ngắn gọn hơn? Nó ấm cúng hơn?

Nó phục vụ một mục đích khác. Rx cung cấp một tập hợp các phương thức, thường giúp bạn di chuyển dữ liệu trong ứng dụng của mình. RxUI được sử dụng để tạo ra giao diện người dùng. Nó sử dụng Rx dưới mui xe, và cũng cho thấy Rx-type API (cụ thể là, IObservble<T>) từ các thành phần của nó.

Ví dụ: triển khai ICommand trong ReactiveUI, được gọi là ReactiveCommand, exposes a property called ThrownException, thuộc loại IObservable<Exception> (bạn có thể đọc nó là "một chuỗi lỗi").

Lưu ý rằng trong khi loại giao diện IObservable<T> là một phần của Thư viện lớp cơ sở .Net, nghĩa là tất cả các chức năng hữu ích hoạt động với loại này đều được bao gồm trong thư viện Tiện ích mở rộng phản ứng.

Nhưng tôi không thể làm tương tự với chỉ Rx?

Không, bởi vì - ví dụ - Rx không cung cấp cho bạn ICommand triển khai, một phần quan trọng của mỗi khung MVVM.

Tại sao tôi nên sử dụng RxUI hơn MVVMCross/light + Rx? Điều gì đặc biệt?

Nếu bạn muốn sử dụng Tiện ích mở rộng phản ứng nhiều trong ứng dụng của mình, bạn có thể thích sử dụng RxUI hơn là khung MVVM khác vì chúng tích hợp thực sự tốt với nhau. Kết hợp, họ cung cấp cho bạn với rất nhiều chức năng out of the box (kiểm tra, ví dụ, ReactiveCommand hoặc WhenAny

Điều đó đang được nói, as Paul Betts (creator of RxUI) stated it:.

bạn có thể sử dụng ReactiveUI bên cạnh khung MVVM khác, nhiều phương pháp trong RxUI như WhenAny làm việc trên bất kỳ đối tượng nào và xác định thời gian chạy như thế nào để kết nối tốt nhất với chúng.

RxUI chắc chắn là một bảng tự chọn (lấy những gì bạn muốn !), không phải là bữa ăn 7 món :)

Và cuối cùng:

P.S. Có tài liệu API ở đâu đó không?

Có đó! Hãy xem ở đây: https://reactiveui.net/api/

Là một mặt lưu ý, cảm thấy tự do để duyệt Reactive Programming section of the docs, mà sẽ giải thích cho bạn một số thuật ngữ cơ bản và khái niệm đứng đằng sau khuôn khổ :)

+0

là RxUI implemenetation của asynchronicity chậm hơn so với async/đang chờ? Tôi dự định sử dụng nó trên các thiết bị Android, do đó, điều này có thể quan trọng ... – tower120

+0

Vâng, thực sự khó/không thể trả lời một câu hỏi được nêu như vậy (xem http://ericlippert.com/2012/12/17/performance- rant/để biết tại sao!). Ngoài ra, bạn có nghĩa là * Rx * thực hiện asynchronicity? Bởi vì RxUI không thực hiện bất cứ điều gì như thế. Hơn nữa, RxUI tương tác với cả Rx và TPL (aka async await) rất độc đáo. – pmbanka

+0

không, tôi thay vì có nghĩa là không đồng bộ/đang chờ (xảy ra trên cùng một chuỗi) và bắt đầu Thread mới. Tôi thực sự không biết làm thế nào điều này thực hiện trong Rx. Nhưng tôi biết rằng async/await là nhanh như nó có thể được ... Và đồng bộ hóa giữa các chủ đề có thể mất rất nhiều thời gian CPU. – tower120

Các vấn đề liên quan