3

我只是在学习 Microsoft Orleans,我想知道如何最好地处理我们的一个场景。我们将有一个接收请求的 REST 服务,这最终会导致在外部系统中创建一条新记录。此记录将具有长 Id 值。然后我们会将这个 ID 返回给调用者。

这种情况的建议是什么?是否应该有一个无状态的grain来处理调用外部系统并获取ID。我在想这个“工厂”grain 然后会创建带有 id 的grain 并向该grain 提供初始信息(因此它不必从外部存储中检索数据)。但是,我不希望它在第一次激活时尝试从外部存储读取此信息。

是否有关于如何使用 Microsoft Orleans grains 处理此问题的建议?

4

1 回答 1

2

这取决于您要如何处理谷物中此记录的数据。但通常听起来你的服务应该调用一个普通的grain(不是无状态的workergrain)并使用长id值作为grain主键(没有“创建”grain之类的东西,你只需通过引用调用它它将自动实例化)。然后,grain 可以从外部存储读取数据,也可以显式传递该数据的某些部分。然后,如果您需要从内存中为有关此数据的期货请求提供服务,您只需将它们定向到该谷物,它就会为它们提供服务。如果该数据是可变的,则grain 还可以定期(或根据某些外部消息)决定刷新/使该数据无效。

于 2016-09-03T00:37:50.213 回答