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

  • 相关阅读:
    Linux 安装 MysQl
    Linux上安装pip以及setuptools
    Linux 安装 python3
    基础 项目部署 上线
    wepsocket 了解一下
    scrapy之中间件
    scrapy之定制命令
    网络爬虫之scrapy框架设置代理
    爬虫之Xpath详解
    3.8软件测试模型
  • 原文地址:https://www.cnblogs.com/hzzxq/p/12067164.html
Copyright © 2011-2022 走看看