Frage

Sie haben einen Pull-orientierte beobachtbare / Listen die Beobachter / Zuhörer, wenn einige Statusänderungen.

benachrichtigt

Der Zustand von mehr als einem Nugget von Daten besteht, und einige Ihrer Beobachter / Zuhörer über den ganzen Staat egal.

Haben im Allgemeinen Sie bevorzugen alle Beobachter / Zuhörer informieren sowieso und es ihnen ermöglichen, Mitteilungen zu ignorieren, wenn sie nichts geändert kümmern?

Oder Sie in der Regel eine separate beobachtbare bevorzugen für jede „Nugget“ von Daten, so dass Ihre Beobachter / Zuhörer garantiert werden nur Benachrichtigungen erhalten, die sie reagieren müssen?

Ist es von der Situation abhängen?

Haben Sie allgemeine Gedanken über die Granularität Ihrer Observable / Listenables?

War es hilfreich?

Lösung

Sie traden Wartungskosten auf die Kosten der Lieferung ab. Wenn Sie feinkörnige Ereignisdefinition erhält jeder Beobachter nur genau das, was er braucht, so dass Sie nicht für den Overhead der Lieferung Beobachter zahlen, die uninteressiert sind - aber die Spar Kosten, weil jede neue Art von Nugget die hinzugefügt werden muss System in irgendeiner Art und Weise.

Pub / Sub-Messaging-Systeme, bei denen die Lieferkosten relativ hoch sind (Nachrichten, die über Netzwerke fließen) man in der Regel sorgfältig auf das Thema deifintions bezahlen muss. Eine sorgfältig gestaltete Themenhierarchie ist oft nützlich. So erhalten wir Muster wie

  sport
       football
              england 
                    premier
                    champioship
              scotland
                    spl
              france
                    ...
       cricket
              australia
                    ...
              india
              sri lanka

Daher ermöglicht Abonnements auf verschiedenen Ebenen. Sie können zu allen Sport oder (wie manche Leute vielleicht) bis auf

abonnieren
    sport/football/england/championship/watford

Andere Tipps

Nun als allgemeine Faustregel tun spezialisierte Schnittstellen mehr nützen als schaden, so würde ich auf jeden Fall mehr implementieren, anstatt weniger.

Dies ist offensichtlich auf die Situation allerdings nicht nennen. Nur auf diese Weise spezialisiert, wenn es notwendig ist, und aus Ihrer Situation scheint es so, sonst wie es die Macher des Cereal informiert, dass die Weizenernte benötigt. Es ist einfach nicht zu.

Wenn ich dies zu tun hätte, würde ich wahrscheinlich eine beobachtbare Klasse erstellen, die ein Ereignis für jede Art von Nugget haben würden, und ein globales Ereignis für jeden Nugget. Kinda wie ein Mittelweg.

Es ist nicht nur die Wartung. Je spezifischer ist die Schnittstelle zwischen Observablen und Beobachter desto gekoppelt werden sie.

Der Gang Of Four Buch hat einen Abschnitt für dieses sehr Problem, und sie raten sowohl gegen das Push-und Pull-die-Modelle. Das Pull-Modell ineffizient sein kann, das Push-Modell genug, um nicht wiederverwendbar sein kann.

Also, es hängt stark von der Situation ab. Ich neige dazu, etwas über dem Pull-Modell zu gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top