zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2019.9.4 二维树状数组
    2019.9.4 简单题
    0052-YH的计算器
    0051-打乱顺序的三位数
    0050-计算天数
    0049-学校的上网费
    0048-三角形的判断
    0047-月份转换
    0046-简单的分段函数(二)
    0045-简单的分段函数(一)
  • 原文地址:https://www.cnblogs.com/hzzxq/p/12067164.html
Copyright © 2011-2022 走看看