奥尔良键和数据库记录

3
我正在学习Microsoft Orleans,并且想知道如何处理我们的一个场景。我们将有一个REST服务,接收请求,最终会在外部系统中创建一个新记录,该记录将具有长Id值。然后我们将返回这个Id给调用者。
针对这种情况,有什么建议吗?是否应该有一个无状态的grain来处理调用外部系统和获取Id?我认为这个“工厂”grain将创建带有id的grain并为其提供初始信息(以便它不必从外部存储器中检索数据)。但是,我不希望它在第一次激活时尝试从外部存储器中读取此信息。
使用Microsoft Orleans grains如何处理这种情况?
1个回答

2

这取决于您想如何处理谷中此记录的数据。但通常情况下,您的服务应该调用常规谷(而不是无状态工作谷),并使用长ID值作为谷的主键(不存在“创建”谷,您只需通过引用调用即可自动实例化)。

谷可以从外部存储器读取数据或显式传递某些部分的数据。然后,如果您需要从内存中提供有关此数据的未来请求,您只需将它们指向此谷,它将为它们提供服务。如果这些数据是可变的,谷还可以定期(或在某些外部消息上)决定刷新/使其无效。


当第一个请求到来时,没有ID。相反,对外部系统的调用是创建一个新实例,并且外部系统返回一个新ID。因此,在第一次调用外部系统之后,我才会有ID。然后,我的颗粒将把这个ID返回给客户端。因此,将来客户端可以获取状态或进行编辑更改。 - John Socha-Leialoha
在这种情况下,您确实可以使用无状态工作器颗粒将初始调用传递到外部系统,然后使用常规颗粒进行未来访问。 - Gabi Kliot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接