这段时间在研究微软的.net petshop(现在才开始研究,是不是太落后了啊,哈哈,.net 2.0和petshop4.0都发布了),关于它的架构,网上有很多的文章,所以了解起来还是不难的。不过我发现我更关注的是它的技术实现细节,这个应该跟我的基础有关了:(,不过也好,我将我的学习点滴纪录下来,希望能在巩固自己知识的同时,能够对大家有一定的参考作用。
先从web.config开始吧。 我们先来分析一下它的web.config的配置文件。
1、 appsetting配置节:这里主要放的是一些数据库连接字符串信息、数据层信息等,不多说了。
2、 httpruntime配置节:这里的主要作用是在运行时动态的加载子配置节中的程序集。
< assemblyBinding xmlns ="urn:schemas-microsoft-com:asm.v1" >
< qualifyAssembly partialName ="PetShop.SQLServerDAL" fullName ="PetShop.SQLServerDAL,version=3.2.1.0,publicKeyToken=a7987b61c51ca872,culture=neutral" />
assemblyBinding >
< assemblyBinding xmlns ="urn:schemas-microsoft-com:asm.v1" >
< qualifyAssembly partialName ="PetShop.OracleDAL" fullName ="PetShop.OracleDAL,version=3.2.1.0,publicKeyToken=a7987b61c51ca872,culture=neutral" />
assemblyBinding >
runtime >
这里需要说明一下的是,在qualifyAssembly节点内,fullname用来指定从全局程序集缓存中加载指定的程序集,所以这里的PetShop.SQLServerDAL必须是全局程序集。
3、 后面一部分就不说了,主要是用来实现forms身份验证控制了,可以参考我的 利用HttpModule和forms身份验证,实现角色验证控制。
文章当然不会到这里就结束了,仅仅了解一下petshop的config的配置当然是不行的,下面就来说明一下,一个config文件该怎么写。
1、各个标记名的命名规则:
标记名和属性名是 Camel 大小写形式的,这意味着标记名的第一个字符是小写的,任何后面连接单词的第一个字母是大写的。属性值是 Pascal 大小写形式的,这意味着第一个字符是大写的,任何后面连接单词的第一个字母也是大写的。true 和 false 例外,它们总是小写的(摘自msdn,呵呵)。
2、自定义配置节:
.net中config文件默认继承自machine.config, 大家可以参考一下, 文件保存在路c:\windows\microsoft.net\.framework\v1.*****\config下。除了machine.config中的节点,我们也可以自定义自己的节点,方式如下:
< sectionGroup name =”test”>
sectionGroup >
configSections >
照上面的结构,应该添加如下节点:
< settings >
< add key =”id” value =”000256”/>
>
test >
如果要在程序中读取配置节的值,可以用System.Configuration. ConfigurationSettings.GetConfig来获取,如下所示:
NameValueCollection nvc = (NameValueCollection)(System.Configuration.ConfigurationSettings.GetConfig("test\settings"));
string aa = nvc["id"].ToString();
3、 自定义配置节中的type:
刚刚的settings配置节,我用的是系统定义的System.Configuration.NameValueFileSectionHandler,其实也可以根据自己的需要自定义类型,只需要在自己写的类中,继承IConfigurationSectionHandler,实现它的creat方法。
web.config的研究到这里就先告一段落了,敬请期待偶的下一篇随笔,全局程序集和私有程序集。