私は最近IObservableについて読んでいます。これまでのところ、さまざまな SO の質問を見て、何ができるかについてのビデオを見てきました。私が考えている「プッシュ」メカニズム全体は素晴らしいですが、すべてが正確に何をするのかをまだ理解しようとしています. 私の読書から、私はある意味IObservable
で「見る」ことができるものでありIObservers
、「ウォッチャー」であると推測します.
だから今、私は自分のアプリケーションでこれを実装しようとしています。始める前に、私が気をつけたいことがいくつかあります。IObservable は IEnumerable の反対であることがわかりましたが、特定のインスタンスでアプリに組み込むことができる場所を実際に確認することはできません。
現在、私はイベントを多用しているため、「配管」が管理不能になり始めていることがわかります。IObservable がここで私を助けることができると思います。
次の設計を検討してください。これは、アプリケーション内の I/O のラッパーです (参考までに、通常は文字列を処理する必要があります)。
私はと呼ばれる基本インターフェースを持っていますIDataIO
:
public interface IDataIO
{
event OnDataReceived;
event OnTimeout:
event OnTransmit;
}
現在、このインターフェイスを実装する 3 つのクラスがあります。これらの各クラスは、何らかの方法で Async メソッド呼び出しを利用し、ある種のマルチスレッド処理を導入しています。
public class SerialIO : IDataIO;
public class UdpIO : IDataIO;
public class TcpIO : IDataIO;
これらの各クラスの IO と呼ばれる最終的なクラスにラップされた単一のインスタンスがあります (これは IDataIO も実装しています - 私の戦略パターンに準拠しています)。
public class IO : IDataIO
{
public SerialIO Serial;
public UdpIO Udp;
public TcpIO Tcp;
}
ストラテジー パターンを利用してこれら 3 つのクラスをカプセル化したので、実行時に異なるIDataIO
インスタンス間で変更しても、エンド ユーザーには「見えない」ようになりました。ご想像のとおり、これにより、バックグラウンドでかなりの「イベント配管」が行われました。
では、私の場合、ここで「プッシュ」通知をどのように利用できますか? イベント (DataReceived など) をサブスクライブする代わりに、関心のある人にデータをプッシュするだけです。どこから始めればよいか少しわかりません。私はまだ のアイデア/ジェネリック クラスSubject
、およびこれのさまざまな化身 (ReplaySubject/AsynSubject/BehaviourSubject) をいじろうとしています。誰かがこれについて私に教えてくれませんか(おそらく私のデザインを参照して)? それとも、これは単に理想的ではありませんIObservable
か?
PS。私の「誤解」を自由に修正してください:)