概念名单,我有以下对象:服务织物/演员模式的物联网
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