質問

ビデオを見ました そして私は一般原則を知っています - ホットは誰も購読していなくても発生し、コールドは「オンデマンド」で発生します。また、Publish() はコールドをホットに変換し、Defer() はホットからコールドに変換します。

しかし、それでも詳細が欠けているように感じます。答えていただきたい質問がいくつかあります。

  • これらの用語の包括的な定義を教えていただけますか?
  • ホットなオブザーバブルに対して Publish を呼び出したり、コールドなオブザーバブルに対して Defer を呼び出したりすることに意味はあるのでしょうか?
  • ホット/コールド変換にはどのような側面がありますか? たとえば、メッセージが失われることはありますか?
  • IObservable と IEnumerable のホット定義とコールド定義に違いはありますか?
  • コールドまたはホット向けにプログラミングするときに考慮すべき一般原則は何ですか?
  • 高温/低温の観測点に関するその他のヒントはありますか?
役に立ちましたか?

解決

私はこのことができます願っています。

  

あなたは、包括的なを与えることができます      これらの用語の定義?

で私のブログ記事を参照してください。 http://leecampbell.blogspot.com/2010/08/rx-part-7-hot-and-cold-observables.htmlする

  

これは今までのコールに意味を成しています      ホット、観察または延期に公開      寒いの?

いいえ、私は考えることができないこと。

  

ホット/コールドの側面は何ですか      変換は - 、あなたがメッセージを失いません      例えば?

観察が熱いときにメッセージを「失う」ことが可能である、「イベント」とは関係なく、加入者の起こります。

など
  

ホットとの間にそこに違いはあります      IObservableのための寒さの定義と      IEnumerableを?

私は実際に質問を理解しません。私は、このアナロジーはしかし役立ちます願っています。私は熱心に評価されてIEnumerableにホット観測を比較します。リストや配列の両方が熱心に評価され、それらの上にあってもノー・ワンenuemeratesを埋めてきたすなわち。ファイルまたはデータベースから値を取得しyield文は怠惰収量キーワードで評価することができました。怠惰は良いことができ、一方、第2列挙子がその上に実行されている場合、それはデフォルトでは、再評価されます。観測、ホット観察可能にこれらを比較すると、イベント(ボタンのクリック)や温度の飼料であるかもしれません。これらのイベントは関係なく、サブスクリプションの起こるのだろうと、複数のサブスクリプションが同じobservaleに行われた場合にも共有されます。 Observable.Intervalコールド、観察の良い例です。サブスクリプションが行われたときにのみ値の生産を開始します。複数のサブスクリプションが行われるようならば、配列は再評価され、「イベント」は、別々の時間(サブスクリプションの間の時間に依存する)で起こる。

  

どのような低温または高温のためにプログラミングするときに考慮すべき一般的な原則がありますか?

ポイント1内のリンクを参照してください。私はまた、あなたがPublshがRefCountプロパティと一緒に使用されているに見てお勧めします。これは、あなたが冷たい観測の遅延評価の意味を持っている能力が、ホット観測を得ることをイベントの共有を持つことができます。

  

ホット/コールド上の任意の他のヒント      観測?

あなたの手の汚れを取得し、それらと遊びを持っています。あなたはより多くの30分以上のためにそれらについて読んだ後は、その後、彼らとコーディング過ごした時間ははるかに生産的なあなたにこれ以上読むよりです:)

他のヒント

ホット観測は、あなたが観測可能に加入していなくても推進しているものです。そのようなマウスを移動する、またはタイマーティックか何かのように。コールド観測は、あなたが加入したときにのみ、プッシュスタートなものであり、あなたが再び加入している場合、彼らは最初からやり直します。

包括的な答えを与えるつもりはありませんが、この質問以降に私が学んだことを最も簡単な形で要約したいと思います。

高温観測可能 イベントと完全に一致します。イベントでは、通常、リッスンしているサブスクライバーがいない場合でも、値がハンドラーに供給されます。すべてのサブスクライバは同じ値のセットを受信します。「イベント」パターンに従っているため、ホットオブザーバブルは 理解しやすい 冷たいものよりも。

寒冷観測可能 これもイベントに似ていますが、ちょっとした工夫があります。Cold observable のイベントは共有インスタンスのプロパティではなく、誰かがサブスクライブするたびにファクトリから生成されるオブジェクトのプロパティです。さらに、サブスクリプションによって値の生成が開始されます。上記のため、複数のサブスクライバは分離され、それぞれが独自の値のセットを受け取ります。

RX 初心者が犯す最も一般的な間違いは、関数内のいくつかの状態変数 (例:累積合計)、それを .Defer() ステートメントにラップしません。その結果、複数のサブスクライバがこれらの変数を共有し、サブスクライバ間で副作用が発生します。

観測

の観察可能な概念的には、単純にリアルタイムでその値を更新したデータストリームとしてソースを治療するために、いくつかの便利なインターフェイスを提供するいくつかのデータまたはイベントソースのラッパー、である。

コールド観察可能

は、「コールド」のバージョンでは、ソースがアクティブではなく、設計図、クラスまたはプロトタイプと比較することができます。そのため、観察には何も生成しません。保留中または一時停止ストリームのように。それはあなたが安全に、純粋な関数に渡すことができ、それは純粋な値になります。良い例は、活性化されたときに常に1で始まること懸濁カウンタである。

作成(又は分岐)アクティブなデータ・ストリーム・インスタンスを加入者を取り付ける:「コールド観察」とは二つのことを「サブスクライブ」

。最初の部分は、クラスからオブジェクトを作成することに似ています。第二部は、実際のサブスクリプションであり、それ自体で、最初の部分とは何の関係もありません。

ホット観察可能

「ホット観測可能では」すでに実行されているインスタンスです。プロトタイプ、使用可能な状態から作成されたオブジェクトのように。そして、サブスクライブは、実際の観察者の装着が関与しています。いかなる活性化部分は必要ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top