Farseer.net轻量级开源框架 中级篇:自定义配置文件
2014-11-07 21:58
513 查看
导航
目 录:Farseer.net轻量级开源框架 目录
上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定
下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问
什么是自定义配置文件
目前系统提供了多个配置文件,一些开发过程中常用到的一些配置。
既然是配置,那么说明一些设置可能会根据项目的不同而有所不同。比如web.config其实就是个配置文件。
当我们定义好配置文件后,在项目运行的时调用了配置,都将在:~/App_Data/ 文件夹中生成(如果不存在这个配置文件)。这个大家要记住。
系统提供了哪些配置文件
目前系统提供了(命名空间:FS.Configs):
FS.Configs.DbConfigs.cs // 数据库配置
FS.Configs.GeneralConfigs.cs // 常规配置
FS.Configs.SystemConfigs.cs // 系统配置
FS.Configs.RewriterConfigs.cs // Url重写配置
FS.Configs.EmailConfigs.cs // 邮件账号配置
FS.Configs.CacheConfigs.cs // 缓存配置
先说说如何使用:
这里只有两个方法,一个是读取,另一个是保存。T 是泛型,指的配置类。我们的配置是class 类结构。我们以数据库配置DbConfigs举例
DbConfigs继承了BaseConfigs,泛型传入了DbConfig 的类。而DbConfig类里的属性是List<DbInfo> 这样我们不难看出,因为数据库配置是个多配置的。有时你的项目用了多个不同物理地址的数据库。
假设我们现在有个配置文件,如下图,是存放在~/App_Data/db.config 中的,以XML结构存储(序列化)
那我们要读取这个配置是,只需要简单的操作即可:
对其重写了操作符号,因此可以更简单的调用,两者是同等的:
这样我们就可以读取配置文件的值,来进行调用了。另外也支持写入并保存(序列化)到文件中:
读者可能会问,那如果我手动在文件中修改了配置呢?比如在:~/App_Data/db.config 文件 用记事本打开手动修改之后,我要怎么重新读取?
细心的读者会发现,这里只有读取、保存,并没有Reload方法。因为开头也提到了。配置文件是会缓存起来的。
Farseer在每次访问这个缓存之前都做了一个检查,就是检查配置文件的最后保存时间。如果与缓存的文件保存时间不一致,那么就会自动重新去硬盘上读取并缓存哦。
数据库配置 DbConfigs.cs
上文中已经贴出了类的结构,这里就不重复贴了。在这里提一下一些细节的地方。
DataVer数据库版本:此处填的是:2000、2005、2008 这种格式,有关版本,可以到DbFactory.CreateConnString 查看
TablePrefix表前缀:有可能你的实际物理数据库中的表都有共同的一个前缀。在处此可以设置。
常规配置 GeneralConfigs.cs
RewriterDomain:重写域名替换(多个用;分隔) 这个是在重写配置文件中使用的。在下几篇的URL地址重写教程中会提到这里的使用。大家知道他是用;分隔的就行了。
系统配置 SystemConfigs.cs
这里的TimeOut的配置。都是有关到Session、Cookies 超时的默认值时间。并且包括了保存KEY的前缀。这样有利于多个项目的不冲突。
Url重写配置 RewriterConfigs.cs
邮件账号配置 EmailConfigs.cs
缓存配置 CacheConfigs.cs
还记得普通逻辑层:BaseModel中的Data.Cache 属性吗?他们是如何工作的。这个在普通逻辑层里也介绍过了。
如何自定义配置
前面介绍了框架预先写好的一些配置,从这些配置文件里,也容易看出,实质上,只需要大家在写好配置类后,继承BaseConfigs<T>就可以实现配置文件的管理了。
BaseConfigs<T> 将对派生类进行序列化、反序列化的托管。
怎么样,很简单吧!
导航
目 录:Farseer.net轻量级开源框架 目录
上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定
下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问
广告时间
QQ群:116228666 (Farseer.net开源框架交流) 请注明:[b]Farseer.Net[/b]
Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。
Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。
ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)
Farseer.Net的目标是:快速上手、快速开发、简单方便。
目 录:Farseer.net轻量级开源框架 目录
上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定
下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问
什么是自定义配置文件
目前系统提供了多个配置文件,一些开发过程中常用到的一些配置。
既然是配置,那么说明一些设置可能会根据项目的不同而有所不同。比如web.config其实就是个配置文件。
当我们定义好配置文件后,在项目运行的时调用了配置,都将在:~/App_Data/ 文件夹中生成(如果不存在这个配置文件)。这个大家要记住。
系统提供了哪些配置文件
目前系统提供了(命名空间:FS.Configs):
FS.Configs.DbConfigs.cs // 数据库配置
FS.Configs.GeneralConfigs.cs // 常规配置
FS.Configs.SystemConfigs.cs // 系统配置
FS.Configs.RewriterConfigs.cs // Url重写配置
FS.Configs.EmailConfigs.cs // 邮件账号配置
FS.Configs.CacheConfigs.cs // 缓存配置
先说说如何使用:
/// <summary> /// 返回配置的实体 /// </summary> public static T ConfigInfo /// <summary> /// 保存(序列化)指定路径下的配置文件 /// </summary> /// <param name="t">Config配置</param> public static bool SaveConfig(T t = null)
这里只有两个方法,一个是读取,另一个是保存。T 是泛型,指的配置类。我们的配置是class 类结构。我们以数据库配置DbConfigs举例
namespace FS.Configs { /// <summary> /// 全局 /// </summary> public class DbConfigs : BaseConfigs<DbConfig> { } /// <summary> /// 默认数据库路径 /// </summary> [Serializable] public class DbConfig { /// <summary> /// 数据库连接列表,从/App_Data/Db.Configs读取回来 /// </summary> public List<DbInfo> DbList = new List<DbInfo>(); } /// <summary> /// 数据库连接配置 /// </summary> public class DbInfo { /// <summary> /// 数据库连接串 /// </summary> public string Server { get; set; } /// <summary> /// 数据库帐号 /// </summary> public string UserID { get; set; } /// <summary> /// 数据库密码 /// </summary> public string PassWord { get; set; } /// <summary> /// 端口号 /// </summary> public string Port { get; set; } /// <summary> /// Oracle SID /// </summary> public string SID { get; set; } /// <summary> /// 数据库类型 /// </summary> public DataBaseType DataType { get; set; } /// <summary> /// 数据库版本 /// </summary> public string DataVer { get; set; } /// <summary> /// 数据库目录 /// </summary> public string Catalog { get; set; } /// <summary> /// 数据库表前缀 /// </summary> public string TablePrefix { get; set; } /// <summary> /// 最小连接池 /// </summary> public int PoolMinSize { get; set; } /// <summary> /// 最大连接池 /// </summary> public int PoolMaxSize { get; set; } /// <summary> /// 数据库连接时间限制,单位秒 /// </summary> public int ConnectTimeout { get; set; } /// <summary> /// 数据库执行时间限制,单位秒 /// </summary> public int CommandTimeout { get; set; } /// <summary> /// 通过索引返回实体 /// </summary> public static implicit operator DbInfo(int index) { return DbConfigs.ConfigInfo.DbList.Count <= index ? null : DbConfigs.ConfigInfo.DbList[index]; } } }
DbConfigs继承了BaseConfigs,泛型传入了DbConfig 的类。而DbConfig类里的属性是List<DbInfo> 这样我们不难看出,因为数据库配置是个多配置的。有时你的项目用了多个不同物理地址的数据库。
假设我们现在有个配置文件,如下图,是存放在~/App_Data/db.config 中的,以XML结构存储(序列化)
<?xml version="1.0"?> <DbConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <DbList> <DbInfo> <Server>.</Server> <UserID>sa</UserID> <PassWord>123456</PassWord> <DataType>SqlServer</DataType> <DataVer>2005</DataVer> <Catalog>Farseer</Catalog> <PoolMinSize>16</PoolMinSize> <PoolMaxSize>100</PoolMaxSize> <ConnectTimeout>30</ConnectTimeout> <CommandTimeout>60</CommandTimeout> </DbInfo> </DbList> </DbConfig>
那我们要读取这个配置是,只需要简单的操作即可:
// 返回数据库配置文件中第1个索引的配置。 FS.Configs.DbInfo config = FS.Configs.DbConfigs.ConfigInfo.DbList[0];
对其重写了操作符号,因此可以更简单的调用,两者是同等的:
// 返回数据库配置文件中第1个索引的配置。 FS.Configs.DbInfo config = 0;
这样我们就可以读取配置文件的值,来进行调用了。另外也支持写入并保存(序列化)到文件中:
// 返回数据库配置文件中的配置。 FS.Configs.DbConfig dbConfig = FS.Configs.DbConfigs.ConfigInfo; // 修改第1个配置文件的Server节点 dbConfig.DbList[0].Server = "192.168.1.1"; // 添加新的配置 dbConfig.DbList.Add(new FS.Configs.DbInfo() { Server = "." }); // 保存 FS.Configs.DbConfigs.SaveConfig(dbConfig);
读者可能会问,那如果我手动在文件中修改了配置呢?比如在:~/App_Data/db.config 文件 用记事本打开手动修改之后,我要怎么重新读取?
细心的读者会发现,这里只有读取、保存,并没有Reload方法。因为开头也提到了。配置文件是会缓存起来的。
Farseer在每次访问这个缓存之前都做了一个检查,就是检查配置文件的最后保存时间。如果与缓存的文件保存时间不一致,那么就会自动重新去硬盘上读取并缓存哦。
数据库配置 DbConfigs.cs
上文中已经贴出了类的结构,这里就不重复贴了。在这里提一下一些细节的地方。
DataVer数据库版本:此处填的是:2000、2005、2008 这种格式,有关版本,可以到DbFactory.CreateConnString 查看
TablePrefix表前缀:有可能你的实际物理数据库中的表都有共同的一个前缀。在处此可以设置。
常规配置 GeneralConfigs.cs
namespace FS.Configs { /// <summary> /// 全局 /// </summary> public class GeneralConfigs : BaseConfigs<GeneralConfig> { } /// <summary> /// 网站基本设置描述类, 加[Serializable]标记为可序列化 /// </summary> [Serializable] public class GeneralConfig { // 此处省略 } }
RewriterDomain:重写域名替换(多个用;分隔) 这个是在重写配置文件中使用的。在下几篇的URL地址重写教程中会提到这里的使用。大家知道他是用;分隔的就行了。
系统配置 SystemConfigs.cs
namespace FS.Configs { /// <summary> /// 系统配置 /// </summary> public class SystemConfigs : BaseConfigs<SystemConfig> { } /// <summary> /// 配置文件 /// </summary> [Serializable] public class SystemConfig { // 此处省略 } }
这里的TimeOut的配置。都是有关到Session、Cookies 超时的默认值时间。并且包括了保存KEY的前缀。这样有利于多个项目的不冲突。
Url重写配置 RewriterConfigs.cs
namespace FS.Configs { /// <summary> /// 全局 /// </summary> public class RewriterConfigs : BaseConfigs<RewriterConfig> { } /// <summary> /// 重写地址规则 /// </summary> [Serializable] public class RewriterConfig { // 此处省略 } }
邮件账号配置 EmailConfigs.cs
namespace FS.Configs { /// <summary> /// 全局 /// </summary> public class EmailConfigs : BaseConfigs<EmailConfig> { } /// <summary> /// Email配置信息类 /// </summary> [Serializable] public class EmailConfig { /// <summary> /// Email配置,从/App_Data/Db.Configs读取回来 /// </summary> public List<EmailInfo> EmailList = new List<EmailInfo>(); } /// <summary> /// E-mail配置 /// </summary> public class EmailInfo { // 此处省略 } }
缓存配置 CacheConfigs.cs
namespace FS.Configs { /// <summary> /// 缓存配置 /// </summary> public class CacheConfigs : BaseConfigs<CacheConfig> { } /// <summary> /// 缓存配置 /// </summary> [Serializable] public class CacheConfig { // 此处省略 } }
还记得普通逻辑层:BaseModel中的Data.Cache 属性吗?他们是如何工作的。这个在普通逻辑层里也介绍过了。
如何自定义配置
前面介绍了框架预先写好的一些配置,从这些配置文件里,也容易看出,实质上,只需要大家在写好配置类后,继承BaseConfigs<T>就可以实现配置文件的管理了。
BaseConfigs<T> 将对派生类进行序列化、反序列化的托管。
怎么样,很简单吧!
导航
目 录:Farseer.net轻量级开源框架 目录
上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定
下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问
广告时间
QQ群:116228666 (Farseer.net开源框架交流) 请注明:[b]Farseer.Net[/b]
Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。
Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。
ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)
Farseer.Net的目标是:快速上手、快速开发、简单方便。
new User { ID = 1, Name = "张三" }.Insert()
相关文章推荐
- Farseer.net轻量级开源框架 中级篇:UrlRewriter 地址重写
- Farseer.net轻量级开源框架 中级篇:执行SQL语句
- Farseer.net轻量级开源框架 中级篇:数据绑定
- Farseer.net轻量级开源框架 中级篇:数据库切换
- Farseer.net轻量级开源框架 中级篇:常用的扩展方法
- Farseer.net轻量级开源框架 中级篇:动态数据库访问
- Farseer.net轻量级开源框架 中级篇:探究ORM(Mapping)
- Farseer.net轻量级开源框架 中级篇:Cookies、Session、Request
- Farseer.net轻量级开源框架 中级篇:SQL执行报告
- Farseer.net轻量级开源框架 中级篇:事务的使用
- 关于Farseer.net轻量级ORM开源框架 V1.0 概念版本开发的消息
- Farseer.net轻量级开源框架 入门篇:使用前说明
- Farseer.net轻量级开源框架 入门篇:查询数据详解
- Farseer.net轻量级开源框架 入门篇:添加数据详解
- Farseer.net轻量级开源框架 入门篇:增、删、改、查操作演示
- Farseer.net轻量级开源框架 简介
- 【开源.NET】轻量级内容管理框架Grissom.CMS(第三篇解析配置文件和数据以转换成 sql)
- Farseer.net轻量级开源框架 入门篇:修改数据详解
- Farseer.net轻量级开源框架 入门篇:缓存逻辑层
- Farseer.net轻量级开源框架 入门篇:普通逻辑层