orleans 2.0 进阶之自定义持久化储存

一丶简单介绍下目录结构和项目依赖,如图

二丶主要核心自定义代码

1. 添加自定义实现类 CustomProvider

public class CustomProvider : IGrainStorage
    {
        public Task ClearStateAsync(string grainType, GrainReference grainReference, IGrainState grainState)
        {
            throw new NotImplementedException();
        }

        public Task ReadStateAsync(string grainType, GrainReference grainReference, IGrainState grainState)
        {
            if(grainType== "Grain.UserGrain")
            {
                var id = grainReference.GetPrimaryKeyLong();

                //模拟从数据库读出User
                var user = new UserState()
                {
                    MobilePhone = "124214214",
                    Name = "李四"
                };

                grainState.State = user;

            }
            return Task.CompletedTask;
        }

        public Task WriteStateAsync(string grainType, GrainReference grainReference, IGrainState grainState)
        {

            if (grainType== "Grain.UserGrain")
            {
                var id = grainReference.GetPrimaryKeyLong();

                //模拟保存数据库


            }
            return Task.CompletedTask;
        }
    }

2. 在silo中注入代替默认实现

 .ConfigureServices(services =>
                   {
                       var providerName = "CustomProvider";
                       services.TryAddSingleton(sp =>
                           sp.GetServiceByName<IGrainStorage>(ProviderConstants.DEFAULT_STORAGE_PROVIDER_NAME));

                       services.AddSingletonNamedService<IGrainStorage, CustomProvider>(providerName);
                   })

3. 在grain类上启用

 [StorageProvider(ProviderName = "CustomProvider")]

 

三丶运行结果如下

 

 

示例代码下载地址:SimpleStorage

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值