/// <summary>
/// 提供对配置信息的访问
/// </summary>
public static class AppSettings
{
/// <summary>
/// 配置信息
/// </summary>
private static volatile NameValueCollection _appSettingsCollection; /// <summary>
/// 配置信息属性
/// </summary>
private static NameValueCollection AppSettingsCollection
{
get
{
return _appSettingsCollection ?? ReloadAppSettings();
}
} /// <summary>
/// 重新加载配置信息
/// </summary>
/// <returns></returns>
static NameValueCollection ReloadAppSettings()
{
var nameValueCollection = new NameValueCollection();
//从数据库读取配置
xxx.ToList()
.ForEach(entity =>
{
nameValueCollection[entity.Name] = entity.Value;
});
LastAppSettingsDateTime = DateTime.Now;
_appSettingsCollection = nameValueCollection;
return _appSettingsCollection;
} /// <summary>
/// 在启动时以后台任务刷新配置信息
/// </summary>
static AppSettings()
{
Task.Factory.StartNew(() =>
{
//按配置间隔分钟刷新配置信息
for (; ; )
{
try
{
//取配置的间隔分钟,默认为1分钟
double minutes;
if (_appSettingsCollection == null
|| !double.TryParse(_appSettingsCollection["AppSettingsRefreshIntervalMinutes"], out minutes)
|| minutes < 0.1)
minutes = 1D; Task.Delay(TimeSpan.FromMinutes(minutes)).Wait();
ReloadAppSettings();
}
catch (Exception ex)
{
}
}
}, TaskCreationOptions.LongRunning);
} /// <summary>
/// 获取配置信息
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string Get(string name)
{
return AppSettingsCollection[name];
} /// <summary>
/// 最后获取配置信息的时间
/// </summary>
public static DateTime LastAppSettingsDateTime { get; private set; }
}

遇到的问题:对于相同代码多处部署时,AppSettings配置的到处都是,略显冗余混乱。

解决办法:统一配置到数据库,方便修改。

效率考虑:增加一层静态缓存,采用定时刷新策略。

AppSettings从数据库读取的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...

  2. 10天学会phpWeChat——第三天:从数据库读取数据到视图

    在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从M ...

  3. echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

    1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...

  4. C# 图片保存到数据库和从数据库读取图片并显示

    图片保存到数据库的方法: public void imgToDB(string sql)        {   //参数sql中要求保存的imge变量名称为@images            //调 ...

  5. C#实现从数据库读取数据到Excel

    用第三方组件:NPOI来实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...

  6. 初学coreData数据库读取不成功的问题

    写了一个从数据库读取数据显示列表的代码,结果却无法运行,提示找不到对应的entity,也就是数据库中的某一个表 我查遍了代码也没有发现什么逻辑错误,在appDelegate也初始化了相关数据库,在界面 ...

  7. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

    //浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...

  8. ASP.NET状缓存Cache的应用-提高数据库读取速度

    原文:ASP.NET状缓存Cache的应用-提高数据库读取速度 一. Cache概述       既然缓存中的数据其实是来自数据库的,那么缓存中的数据如何和数据库进行同步呢?一般来说,缓存中应该存放改 ...

  9. 此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行

    错误提示:此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行.若要将此服务器连接到服务器场,请使用 SharePoint 产品配置向导,该向导可从 ...

随机推荐

  1. MVC 缓存实践(一)

    为什么要讲缓存.缓存到底有什么作用? 下面我们来说一个场景我们有一个首页菜单的布局基本是不会经常发生的变化,如果动态生成的 Web 页被频繁请求并且构建时需要耗用大量的系统资源,那么,如何才能改进这种 ...

  2. Android 图标尺寸与设计

    样例和图解 外框:整体大小 ↑ 边框:图标留白大小 ↓ 图标:外图标的大小 ↑ 阴影:阴影特效大小 ↓ 图形:内图标的大小 ↑ 可选视图权重:使用两种类型的图形尺寸可以达到统一的视觉权重(可选),   ...

  3. css 图片内容在不同分辨率下居中显示(演示的图片宽度是1920px,当图片宽度大于显示屏的宽度时)

    1.img 图片内容在不同分辨率下居中显示(如果隐藏多余,在img外面套一个div  设定overflow: hidden.div的大小就是img显示区域的大小) <!DOCTYPE html& ...

  4. C++标准库 -- tuple

    头文件:<tuple> 可访问属性: 无(用get方法来访问数据) 可访问方法: swap(tuple) 和另外一个tuple交换值 其他相关方法: swap(t1, t2) 交换两个tu ...

  5. 神经网络之Hebb学习规则

  6. 一段神奇的代码(python 2.7)网上抓图小Demo

    二话不说 先上代码: #coding=utf-8 import urllib import re import time global x x = 1 def getHtml(url): page = ...

  7. [计算机故障]windows8+IE11显示无法登陆网页

    同事的一款SURFACE,跑的WINDOWS 8.1.最近发现从开始菜单里的win8.1的浏览器可以上网,但是通过任务栏的快捷方式,又上不了网.尝试重置了IE11,安装了Google Chrome.但 ...

  8. ThinkPHP 3.2.3 使用 Swift Mailer 邮件系统发送邮件

    SwiftMailer 下载地址:https://github.com/swiftmailer/swiftmailer 版本:swiftmailer-5.x 把压缩包解压到 /ThinkPHP/Lib ...

  9. spring接收json格式的多个对象参数(变通法)

    两种方法 方法1 如果使用spring mvc同客户端通信,完全使用json数据格式,需要如下定义一个RequestMapping @Controller public class TestContr ...

  10. 微信 {"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}

    {"errcode":,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]&q ...