web-dev-qa-db-ja.com

ReactiveUI(RxUI)とReactive Extensions

から http://docs.reactiveui.net/en/index.html

ReactiveUIはMVVMフレームワークであり、Reactive Extensions for .NETを使用して、モバイルまたはデスクトッププラットフォームで実行されるエレガントでテスト可能なユーザーインターフェイスを作成できます。

RxUIはReactiveExtensionsとどういうわけか異なりますか?

MVVMCross/light + RxよりもRxUIを優先する必要があるのはなぜですか?何がそんなに特別なの? RxUIはRxができないことを行うことができますか?もっと簡潔ですか?もっと居心地がいいですか?

Githubページで例を見ました https://github.com/reactiveui/ReactiveUI#a-compelling-example 。しかし、Rxだけで同じことはできませんか?

P.S.どこかにAPIドキュメントはありますか?

18
tower120

ここにはたくさんの質問が含まれているので、一つずつ答えていきます。

RxUIはReactiveExtensionsとどういうわけか異なりますか?

はい。 Reactive Extensions is "監視可能なシーケンスとLINQスタイルのクエリ演算子を使用して非同期およびイベントベースのプログラムを作成するためのライブラリ。"特にUIとは関係ありません。 Rxは、データストリームに対する一般的な抽象化を提供します。

RxUIはMVVMフレームワークです。つまり、 アプリにMVVMパターンを実装するのに役立つクラスのライブラリです

RxUIは、Rxができないことを実行できますか?もっと簡潔ですか?もっと居心地がいいですか?

それは別の目的を果たします。 Rxは一連のメソッドを提供します。これらのメソッドは、通常、アプリ内のデータを移動するのに役立ちます。 RxUIは、ユーザーインターフェイスの作成に使用されます。内部でRxを使用し、そのコンポーネントからRxタイプのAPI(つまり、 IObservble<T> )を公開します。

たとえば、ReactiveCommandと呼ばれるReactiveUIの ICommand 実装 ThrownException というタイプのIObservable<Exception>というプロパティを公開します( 「一連のエラー」として)。

IObservable<T>インターフェイスタイプは.Net基本クラスライブラリの一部ですが、文字通り、このタイプで動作するすべての便利な関数がReactiveExtensionsライブラリに含まれていることに注意してください。

しかし、Rxだけで同じことはできませんか?

いいえ、たとえば、RxはすべてのMVVMフレームワークの重要な部分であるICommand実装を提供しないためです。

MVVMCross/light + RxよりもRxUIを優先する必要があるのはなぜですか?何がそんなに特別なの?

アプリでReactiveExtensionsを頻繁に使用する場合は、RxUI(他のMVVMフレームワークではなく)を使用することをお勧めします。これらは互いに非常によく統合されているためです。これらを組み合わせると、すぐに使用できる多くの機能が提供されます(たとえば、 ReactiveCommand または WhenAny をチェックしてください。

そうは言っても、 RxUIの作成者が述べたように

reactiveUIを他のMVVMフレームワークと一緒に使用でき、どちらかにコミットする必要はありません。 WhenAnyなどのRxUIの多くのメソッドは、任意のオブジェクトで機能し、実行時にそれらに最適に接続する方法を決定します。

RxUIは間違いなくビュッフェテーブルであり(あなたが望むものを取りなさい!)、7コースの食事ではありません:)

そして最後に:

P.S.どこかにAPIドキュメントはありますか?

はいあります!ここを見てください: https://reactiveui.net/api/

補足として、自由に参照してください ドキュメントのリアクティブプログラミングセクション 、フレームワークの背後にある基本的な用語と概念のいくつかを説明します:)

31
pmbanka