这适用于在 Azure 上运行的 Blazor 服务器应用程序。在应用程序中,很多时候用户会从很长的列表中选择几个标签。该列表的内容很少发生变化,当发生变化时,只有同一个应用程序会更改它,以便它可以同时更新列表中的条目。
这就像 Stack Overflow 上的标签。整个列表被频繁查询,您需要在内存中使用全局
List<Tag>
。
这提出了两个问题。首先,这些标签通常会传递到DxTagBox。当用户编辑页面,并且 DxTagBox 正在对该列表应用过滤器以确定要显示的内容时,可以更改该页面(仅创建/更新 - 不可删除)。
我向 DevEx 提出了一个问题,但假设 DxTagBox 想要一个不可变的列表,最好的方法是什么?我想出的最好的办法是我有一个静态列表和一个实时列表。静态列表被传递到 DxTagBox 并更新实时列表。每隔 N 分钟,我会将活动列表复制到静态列表以备将来需要,并让垃圾收集确定何时释放现在的孤立列表。我并不热衷于这种方法,但这是我想出的最好的方法。
第二个问题是:当我有多个服务器时,如何在服务器之间复制更改? Redis 在这里能正常工作吗?我是否应该通过每个 CRUD 操作向所有其他服务器广播消息?我应该每 N 分钟重新读取数据库中的所有内容吗?
我对此的看法是:
record
,而不是 class
。IEnumerable
,并且仅在使用它们时(在 DXTagBox 中)实现它们。不要创建中间列表。