0

我一直在寻找一些用例或代码示例,以说明如何使用实现业务逻辑的 Actor 模型来保存简单 DTO/POCO 模型类中的状态。

谢谢

4

1 回答 1

1

我只能为奥尔良回答。

有一些示例显示了保持状态所需的各个部分:

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。

于 2015-10-05T15:08:08.903 回答