通用配置


通用配置可以保存网站全局使用的参数,例如网站名称和默认语言等。

通用配置的数据结构

通用配置的ER图

添加配置类型

配置类型需要添加GenericConfig属性,
第一个参数是保存到数据库时使用的键名,CacheTime可以指定缓存时间(秒)。
缓存时间不会影响到网站部署到单个进程时的读取,单个进程时读取配置总能读到最新的配置。
但会影响网站部署到多个进程或服务器时的读取,缓存时间不应该指定太长。

添加配置类型的例子
添加src\Components\GenericConfigs\ExampleConfig.cs

[GenericConfig("ZKWeb.Example.ExampleConfig", CacheTime = 15)]
public class ExampleConfig {
    public string ExampleName { get; set; }
    public int ExampleCount { get; set; }
}

获取和保存配置

首次获取ExampleConfig时会返回一个新的实例,GetData函数不会返回null。

获取和保存配置的例子
添加src\Controllers\ConfigExampleController.cs

[ExportMany]
public class ConfigExampleController : ControllerBase {
    [Action("example/read_config")]
    public IActionResult ReadConfig() {
        var configManager = Application.Ioc.Resolve<GenericConfigManager>();
        var config = configManager.GetData<ExampleConfig>();
        return new JsonResult(config);
    }

    [Action("example/write_config")]
    public string WriteConfig() {
        var configManager = Application.Ioc.Resolve<GenericConfigManager>();
        var config = configManager.GetData<ExampleConfig>();
        config.ExampleName = "updated";
        config.ExampleCount++;
        configManager.PutData(config);
        return "success";
    }
}