美文网首页ABP框架学习
ABP框架学习之—— 设置管理

ABP框架学习之—— 设置管理

作者: 易兒善 | 来源:发表于2018-07-09 09:04 被阅读1次

    前言

    个人理解

    abp这个设置管理时基于服务器缓存实现,使用得时string类型得键值对(建值都是string类型)。通过设置器(SettingProvider)注入,在站点启动时读取配置文件或者数据库或者自己生成一个(下面例子便是自己生成,服务器重启设置重置)。
    这样的好处是不需要频繁的读取数据库或者本地文件,想想缓存的好处,同理可得。而且在此基础上abp还封装了些方法,使用方便。就是个人觉得配置起来有点麻烦。因为的键值对,所有建不能有重复,常常使用const 常量来定义建。

    使用

    提供设置

    public class MySettingProvider : SettingProvider
    {
        public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context)
        {
            return new[]
                    {
                        new SettingDefinition(
                            "SmtpServerAddress",
                            "127.0.0.1"
                            ),
    
                        new SettingDefinition(
                            "PassiveUsersCanNotLogin",
                            "true",
                            scopes: SettingScopes.Application | SettingScopes.Tenant
                            ),
    
                        new SettingDefinition(
                            "SiteColorPreference",
                            "red",
                            scopes: SettingScopes.User,
                            isVisibleToClients: true
                            )
                    };
        }
    }
    

    注入设置

    在CoreModule中得PreInitiali方法里注入,一般需要注入得内容都在这里注入。

    Configuration.Settings.Providers.Add<MySettingProvider>();
    

    服务端获取设置

    SettingManager 在AbpServiceBase基类定义了得

    var value1 = await SettingManager.GetSettingValueAsync<bool>("SmtpServerAddress");
    

    客户端获取

    如果SettingDefinition 中 IsVisibleToClients 设置为 true,就可以在客户端使用 javascript得到它的当前值。abp.setting 命名空间定义所需的函数和对象。

    var currentColor = abp.setting.get("SmtpServerAddress");
    

    修改设置

    SettingManager 在AbpServiceBase基类定义了得

    await SettingManager.ChangeSettingForApplicationAsync("SmtpServerAddress", "192.168.0.1");
    

    小结

    上面例子和官网提供得例子差异不大,省略了些东西。

    如何读取本地配置文件,修改时并持续化到本地文件

    abp的设置管理,是将配置放到了数据库中,不用手动创建记录,如上配置后,使用过程中自动创建。看表结构明白,可支持针对用户或者租户单独做配置。不支持文件类型的配置。


    image.png image.png

    如何读取数据库数据,修改时持续化的数据库

    同上,不支持自定义表实现的配置。

    既然value字段是string类型,我们当然也可以将对象序列化成string存起来。使用时再序列化成对象。

    相关文章

      网友评论

        本文标题:ABP框架学习之—— 设置管理

        本文链接:https://www.haomeiwen.com/subject/kmtduftx.html