概念名單,我有以下對象:服務織物/演員模式的物聯網
Item - (ItemId, Name, Color)
ItemGroup = (GroupId, Name, Item list)
讓我們假設項目可以屬於多個組和項目身份和ItemActor是必要的。
對於狀態演員,我有這樣的:
ItemActor (ItemId) : Get() -> returns ItemContract { ItemId, Name, Color }
ItemGroupActor (GroupId) : Get() -> returns GroupContract { GroupId, Name, List<ItemContract> }
這裏的問題:
GroupActor應該只保留ItemIds,並強制其他人調用ItemContracts中的每個ItemActor(循環)?
或者GroupActor是否保留所有的項目細節並監聽Item change事件以保持其數據保持最新狀態(如視圖)?
還是有第三個「ViewActor」誰一起編譯數據,調用ItemActors(在一個循環),並監聽事件,以保持它的數據是最新的?
還是別的什麼?
這些選項都不讓我最有吸引力的,因爲它們要麼需要循環通過事件男主角電話,或高保養項目的管理。
是否有一些指導方針來向我保證一種方式或另一種方式或對這種情況的一般方法?
謝謝你的回覆!在服裝面料的土地上很孤獨:)我明白你在說什麼。我已經明確考慮過這些方法。我的問題是,該小組將參考很多和很多項目。你會不會建議在這種情況下擊中每個物品演員?我可以以某種方式分頁的結果,並限制你可以拉的數量,也許... – TBone
@Tbone它取決於。如果幾乎所有時間都需要這些演員,並且您可以負擔這種集羣能力以有效地在節點間分配分區,那麼可以調用每個演員檢索其狀態(如果該狀態的大小相對較小)即可。可能有一些緩存系統的地方。如果你想節省資源,比演員不適合你,你可以嘗試將整個演員的狀態存儲在可靠的字典中。如果在這種情況下,您將面臨寫入相同狀態的性能問題,那麼SF不適合您。 – cassandrad
感謝您的意見。 Microsoft文檔鬆散地建議您可以高效(並行)查詢大量演員。這部分需要我的信心飛躍,以將我的思維方式從我通常將服務電話視爲開銷或昂貴的方式轉變。我仍然認爲我正在合作的數量足夠高,值得我們進一步思考。我感謝幫助! – TBone