Konzeptionell, ich habe die folgenden Objekte:Service-Stoff/Schauspieler Muster für Liste der Dinge
Item - (ItemId, Name, Color)
ItemGroup = (GroupId, Name, Item list)
wir Elemente vorgeben kann mehreren Gruppen angehören und diesem Artikel Identität und der ItemActor ist notwendig.
Für Stateful Schauspieler, ich habe dies:
ItemActor (ItemId) : Get() -> returns ItemContract { ItemId, Name, Color }
ItemGroupActor (GroupId) : Get() -> returns GroupContract { GroupId, Name, List<ItemContract> }
Hier die Fragen:
Sollte der GroupActor nur die ItemIds behalten und jemanden dazu zwingen, jeden ItemActor (in einer Schleife) für ItemContracts aufzurufen?
Oder behält der GroupActor alle Details zu den Elementen und lauscht auf Ereignisse bei der Änderung von Elementen, um seine Daten auf dem neuesten Stand zu halten (wie eine Ansicht)?
Oder gibt es eine dritte „ViewActor“, die die Daten zusammen kompiliert, ItemActors (in einer Schleife) aufrufen und hören Ereignisse es die Daten auf dem neuesten Stand zu halten?
Oder etwas anderes?
Keine dieser Optionen scheinen mir besonders attraktiv, weil sie entweder Schauspieler Anrufe erfordern Looping oder hohe Wartungsposition Management über Veranstaltungen.
Gibt es eine Richtlinie, um mich auf die eine oder andere Weise zu beruhigen oder einen allgemeinen Ansatz für dieses Szenario?
Vielen Dank für Ihre Antwort! Es ist einsam in Service Fabric Land :) Ich verstehe was du sagst. Ich habe diese Ansätze definitiv in Betracht gezogen. Mein Problem ist, dass die Gruppe viele Gegenstände referenziert. Würdest du vorschlagen, in diesem Fall jeden Gegenstandsdarsteller zu treffen? Ich könnte die Ergebnisse irgendwie pagen und die Anzahl begrenzen, die Sie ziehen können, vielleicht ... – TBone
@Tbone hängt es ab. Wenn Sie diese Akteure fast immer am Leben brauchen und sich solche Clusterkapazitäten leisten können, um Partitionen effektiv zwischen Knoten zu verteilen, dann ist es in Ordnung, jeden Akteur aufzurufen, seinen Zustand abzurufen, wenn dieser Zustand relativ klein ist. Wahrscheinlich gibt es einen Platz für ein Cachesystem. Wenn Sie Ressourcen sparen möchten, dann sind Schauspieler nicht für Sie und Sie können versuchen, den Status des gesamten Schauspielers in einem zuverlässigen Wörterbuch zu speichern. Wenn Sie in diesem Fall Probleme mit dem Schreiben in den gleichen Zustand haben, dann ist SF nichts für Sie. – cassandrad
Danke für die Eingabe. Die Microsoft-Dokumentation legt nahe, dass Sie eine ganze Reihe von Akteuren effizient (und parallel) abfragen können. Dies erfordert zum Teil einen Vertrauensvorschuss an meinem Ende, um meine Denkweise von der Art und Weise zu ändern, wie ich Service-Anrufe normalerweise als Overhead oder teuer betrachte. Ich denke immer noch, dass das Volumen, mit dem ich arbeite, hoch genug ist, um mehr Nachdenken zu rechtfertigen. Ich schätze die Hilfe! – TBone