导航

目   录:Farseer.net轻量级开源框架 目录

上一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定

下一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问

什么是自定义配置文件

  目前系统提供了多个配置文件,一些开发过程中常用到的一些配置。

  既然是配置,那么说明一些设置可能会根据项目的不同而有所不同。比如web.config其实就是个配置文件。

  当我们定义好配置文件后,在项目运行的时调用了配置,都将在:~/App_Data/  文件夹中生成(如果不存在这个配置文件)。这个大家要记住。

系统提供了哪些配置文件

  目前系统提供了(命名空间:FS.Configs):

  1. FS.Configs.DbConfigs.cs           // 数据库配置
  2. FS.Configs.GeneralConfigs.cs    // 常规配置
  3. FS.Configs.SystemConfigs.cs       // 系统配置
  4. FS.Configs.RewriterConfigs.cs      // Url重写配置
  5. FS.Configs.EmailConfigs.cs           // 邮件账号配置
  6. 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[];

  对其重写了操作符号,因此可以更简单的调用,两者是同等的:

         // 返回数据库配置文件中第1个索引的配置。
FS.Configs.DbInfo config = ;

  这样我们就可以读取配置文件的值,来进行调用了。另外也支持写入并保存(序列化)到文件中:

         // 返回数据库配置文件中的配置。
FS.Configs.DbConfig dbConfig = FS.Configs.DbConfigs.ConfigInfo;
// 修改第1个配置文件的Server节点
dbConfig.DbList[].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开源框架交流) 请注明:Farseer.Net

Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。

Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。

ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)

Farseer.Net的目标是:快速上手、快速开发、简单方便。

 new User { ID = , Name = "张三" }.Insert()

Farseer.net轻量级开源框架 中级篇:自定义配置文件的更多相关文章

  1. Farseer.net轻量级开源框架 中级篇:探究ORM(Mapping)

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: SQL执行报告 下一篇:Farseer.net轻量级开源框架 中级篇: Cooki ...

  2. Farseer.net轻量级开源框架 中级篇:执行SQL语句

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 事务的使用 下一篇:Farseer.net轻量级开源框架 中级篇: DbFacto ...

  3. Farseer.net轻量级开源框架 中级篇:DbFactory数据工厂

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 执行SQL语句 下一篇:Farseer.net轻量级开源框架 中级篇: 数据绑定 ...

  4. Farseer.net轻量级开源框架 中级篇:数据绑定

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: DbFactory数据工厂 下一篇:Farseer.net轻量级开源框架 中级篇: ...

  5. Farseer.net轻量级开源框架 中级篇:动态数据库访问

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 自定义配置文件 下一篇:Farseer.net轻量级开源框架 中级篇: 数据库切换 ...

  6. Farseer.net轻量级开源框架 中级篇:数据库切换

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 动态数据库访问 下一篇:Farseer.net轻量级开源框架 中级篇: SQL执行 ...

  7. Farseer.net轻量级开源框架 中级篇:Cookies、Session、Request

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 探究ORM(Mapping) 下一篇:Farseer.net轻量级开源框架 中级篇 ...

  8. Farseer.net轻量级开源框架 中级篇:UrlRewriter 地址重写

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: Cookies.Session.Request 下一篇:Farseer.net轻量 ...

  9. Farseer.net轻量级开源框架 中级篇:常用的扩展方法

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseM ...

随机推荐

  1. hdu 2544 最短路(SPFA算法)

    本题链接:点击打开链接 本题大意: 首先输入一个n,m.代表有n个点.m条边.然后输入m条边,每条边输入两个点及边权.1为起点,n为终点.输入两个零表示结束. 解题思路: 本题能够使用SPFA算法来做 ...

  2. linux 下使用genymotion

    在官网下载genymotion http://www.genymotion.cn/ 然后进行下面操作 1.假设本机没有virtualbox 下载一个  能够通过指令 sudo apt-get inst ...

  3. yarn-cli 显示文件目录

    显示yarn bin文件夹的位置. yarn bin yarn bin将打印yarn将为您的软件包安装可执行文件的文件夹.一个可执行文件的例子可能是你已经为你的包定义的脚本,可以通过执行yarn ru ...

  4. js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq

    js_html_input中autocomplete="off"在chrom中失效的解决办法 分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocompl ...

  5. Android官方api的下载

    不少开发者,都需要api来进行参考,可是目前Android开发来说默认是没有下载的, 而且sdk中有时候部分开发者也很疑惑怎么没有找到像document或者doc之类的文档进行下载,其实我们只要在把s ...

  6. poj 1459 多源汇网络流 ISAP

    题意: 给n个点,m条边,有np个源点,nc个汇点,求最大流 思路: 超级源点把全部源点连起来.边权是该源点的最大同意值: 全部汇点和超级汇点连接起来,边权是该汇点的最大同意值. 跑最大流 code: ...

  7. SICP习题练习

    练习1.6 new-if的三个参数会先被执行,这样就会无限循环下去 练习1.7 (define (sqrt-iter last-guess guess x) (if (good-enough? las ...

  8. 利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)

    利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全) 14.8 利用JFreeChart生成组合图表  实例位置:光盘\mingrisoft\14\dxyy\02 通过JFree ...

  9. cubism.js

    Cubism.js 是时间序列化的一个D3插件,使用Cubism构建更好的实时指示板,从Graphite,Cube 和其他的资源中拉拉取数据.在GitHub的Apache License上可以获取Cu ...

  10. Tomcat + solr5.2.1环境搭建

    1. 下载solr并解压后的目录为:E:\solr-5.2.1   ,  http://lucene.apache.org/solr/downloads.html 2. 将solr部署到Tomcat中 ...