我一直在寻找一些用例或代码示例,以说明如何使用实现业务逻辑的 Actor 模型来保存简单 DTO/POCO 模型类中的状态。
谢谢
我只能为奥尔良回答。
有一些示例显示了保持状态所需的各个部分:
https://github.com/dotnet/orleans/tree/master/Samples/StorageProviders
基本上,您创建一个类来存储您的谷物状态,如下所示:
public class MyState : GrainState
{
public string StringValue { get; set; }
public int IntValue { get; set; }
public DateTime DateTimeValue { get; set; }
public Guid GuidValue { get; set; }
public IGrain1 GrainValue { get; set; }
}
(好吧,所以这不是 POCO)
然后你可以创建一个使用这个类作为它的状态的grain:
[ StorageProvider( ProviderName = "myprovider" ) ]
public class Grain1 : Grain< MyState >, IGrain1
{
public Task Set( string stringValue, int intValue, DateTime dateTimeValue, Guid guidValue, IGrain1 grainValue )
{
State.StringValue = stringValue;
State.IntValue = intValue;
State.DateTimeValue = dateTimeValue;
State.GuidValue = guidValue;
State.GrainValue = grainValue;
return WriteStateAsync();
}
}
用于实际存储状态的底层机制是一个配置选项。开箱即用的 Azure 表存储,但还有其他几个选项,包括 Redis、Azure Blob 存储和 SQL Server。