AppSettings从数据库读取
/// <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从数据库读取的更多相关文章
- 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...
- 10天学会phpWeChat——第三天:从数据库读取数据到视图
在第二天,我们创建了我们的第一个phpWeChat功能模块,但是比较简单.实际生产环境中,我们不可能有如此简单的需求.更多的情况是数据存储在MySql数据库中,我们开发功能模块的作用就是将这些数据从M ...
- echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端
1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...
- C# 图片保存到数据库和从数据库读取图片并显示
图片保存到数据库的方法: public void imgToDB(string sql) { //参数sql中要求保存的imge变量名称为@images //调 ...
- C#实现从数据库读取数据到Excel
用第三方组件:NPOI来实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...
- 初学coreData数据库读取不成功的问题
写了一个从数据库读取数据显示列表的代码,结果却无法运行,提示找不到对应的entity,也就是数据库中的某一个表 我查遍了代码也没有发现什么逻辑错误,在appDelegate也初始化了相关数据库,在界面 ...
- C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体
//浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...
- ASP.NET状缓存Cache的应用-提高数据库读取速度
原文:ASP.NET状缓存Cache的应用-提高数据库读取速度 一. Cache概述 既然缓存中的数据其实是来自数据库的,那么缓存中的数据如何和数据库进行同步呢?一般来说,缓存中应该存放改 ...
- 此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行
错误提示:此操作只能由 SQL Server 中拥有配置数据库读取权限的用户在已加入到某个服务器场的计算机上执行.若要将此服务器连接到服务器场,请使用 SharePoint 产品配置向导,该向导可从 ...
随机推荐
- mysql分区操作
分区表使用myisam引擎. 分区规则: Range(范围)–这种模式允许将数据划分不同范围.例如可以将一个表通过年份划分成若干个分区. Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash ...
- MSSQL跨服务器插入
跨服器插入数据 其中服务器的IP为源数据地址 还要注意的是目标库中不能存在对应表. select * INTO compMaintype from openrowset('SQLOLEDB' , ' ...
- Mongoose 的实例方法中访问静态方法
方法比较简单,也比较粗糙和丑陋,就是通过构造函数来访问静态方法,大致如下: 123456789 WorkSpaceSchema.methods.getPrice = function(startTim ...
- RMQ 数据结构
RMQ 常用的数据结构之一 直接上代码 马克好来 是个好板子 #include <stdio.h> #define min(a,b) a<b ? a : b ],d[][]; voi ...
- 利用jquery发送form表单
$("#rap_save_draft").click(function(){ rap_start_editor.sync();//同步KindEditor的内容 // 取得要提交的 ...
- CNUOJ 0486 800401反质数
难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1,g(4)=3, g ...
- 手动编译安装LNMP
yum -y install gcc gcc-c++ autoconf nss_ldap libjpeg libjpeg-devel libpng libpng-devel freetype free ...
- Codeigniter 3.0 相关文档 part two
分页 首先,配置 $this->load->library('pagination'); $config = array(); // $this->config->load(' ...
- java 4种方式读取配置文件 + 修改配置文件
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 方式一采用ServletContext读取读取配置文件的realpath然后通过文件流读取出来 方式二采用ResourceB ...
- 访问API安全性认证设计
1.用户POST登录(账号+密码) | |成功 |2.返回(Private key+时间戳)加密字符串+用户信息+缓存到内存中 | |发起其它请求 |3.发起请求时携带Request参数和(Reque ...