Streams
ストリームは、サブスクリプションの作成(observable側)とイベントの公開(observer側)の両方をサポートしています。インターフェイスは、ストリームファクトリの議論の中ですでに上に示されていますが、1つの詳細が省略されていました。Rxでは、Subjectのすべての具体的な実装はIDisposableを実装していますが、ISubject<>インターフェースは実装していません。IRPでは、インターフェイスは、IRPシステムにおけるストリームの廃棄を可能にするために、IAsyncDisposableを実装しています。
Streams support both subscription creation (the observable side) as well as event publication (the observer side). The interfaces are already shown above in the context of the discussion of stream factories, but one detail was omitted. In Rx, all concrete implementations of subjects implement IDisposable, but the ISubject<> interfaces don’t. In IRP, the interface does implement IAsyncDisposable to enable the disposal of a stream in an IRP system:
code:C#
interface IAsyncReactiveQubject<T> : IAsyncReactiveQubject<T, T>, IAsyncDisposable {}
実際、IRPのホットアーティファクトを表すインターフェースはすべてIAsyncDisposableを実装しています。そのため、サブスクリプションを記述するインターフェースは以下のように定義されています。
In fact, all interfaces representing hot artifacts in IRP implement IAsyncDisposable. As such, the interface describing subscriptions is defined as follows:
code:C#
interface IAsyncReactiveQubscription : IAsyncDisposable {}
IAsyncDisposableの使用は、Rxの世界を同型のIRPの世界にマッピングする最もわかりやすい方法です。しかし、操作に追加のパラメータを提供する機能がありません。後述するIRPの将来のイテレーションでは、処分意図の策定とターゲットのIRPシステムへの操作の提出をさらに分解することができます。
The use of IAsyncDisposable is the most straightforward way to map the Rx world to an isomorphic IRP world. However, it lacks the ability to provide additional parameters to the operation. Future iterations of IRP, discussed later on, may further decompose the formulation of the disposal intent from the submission of the operation to the target IRP system.