分享

Enterprise Library Step By Step系列(一):配置应用程序块—...

 barbarossia 2007-01-29


写在前面:

最近准备写Enterprise Library Step By Step的系列文章,对于每一个应用程序块,我都会用入门篇,进阶篇,剖析篇三篇文章去写。 在入门篇里会详细介绍应用程序块的使用步骤,主要是针对新手入门的;进阶篇会介绍一些应用程序块的更深的应用及扩展机制;剖析篇会去分析应用程序块的底层设计和类设计的一些内容。所有的观点都纯属个人理解,有不当之处请大家多多指教。

一.配置应用程序块概述:

      几乎每一个应用程序都需要一些配置信息,这些信息可以是简单的数据库连接信息,或者复杂的多块多层次用户信息。如何以及在哪里存储应用程序配置数据是程序员经常面临的问题。

.为应用系统提供了一个通用的配置管理解决方案,可方便灵活地从各种存储中读写配置信息配置信息

.为读写配置信息提供了简单的接口

.支持不同的配置存储

.支持配置信息的加密

.支持配置文件的动态更新

.支持复杂的配置对象

Config Config Block Block 的使用场景:

.应用系统需要在运行时读写复杂的配置信息

.应用系统需要在配置文件中保存敏感数据(比如密码)

.设计应用系统时能帮助开发人员进行正确的配置读写

.应用系统部署后系统管理员能有一个好的工具修改XM 配置文件

二.使用步骤:

假设已经新建好的项目中,并且已经存在Web.configApp.config配置文件。

第一步:建立自定义配置数据类:

该类根据项目的实际情况建立,需要注意的是该类必须是可序列化的(XMLSerializer),并且可以任意复杂

 1using System;
 2using System.Text;
 3using System.Xml.Serialization;
 4
 5namespace ConfigurationQuickStart
 6{
 7    public class EditorFontData
 8    {        
 9        private string  name;
10        private float   size;
11        private int        style;
12
13        public EditorFontData()
14        {          
15        }

16
17        public string Name 
18        {
19            getreturn name; }
20            set{ name = value; }
21        }
 
22        
23        public float Size 
24        {
25            getreturn size; }
26            set{ size = value; }
27        }
 
28        public int Style 
29        {
30            getreturn style; }
31            set{ style = value; }
32        }
 
33
34        public override string ToString() 
35        {
36            StringBuilder sb = new StringBuilder();
37            sb.AppendFormat("Name = {0}; Size = {1}; Style = {2}", name, size.ToString(), style.ToString());
38
39            return sb.ToString();
40        }

41    }

42}

43

第二步:用Enterprise Library Configuration配置应用程序:

1.运行Enterprise Library Configuration 工具选择File | Open Application 打开App.config文件

2.右击Application并选择New | Configuration Application Block创建一个配置应用程序块

3.右击 Configuration Application Block 并选择 New | Configuration Section创建一个配置区,注意对于每一个配置区都要设置一个Storage Provider 和一个Transformer

4.重命名configuration sectionEditorSettings

5.右击EditorSettings 并选择New | XML File Storage Provider,设置它的Storage Provider

6.在FileName输入框中输入EditorSettings.config,路径相对于App.config


7
.在Enterprise Library Configuration 工具里面选择New | XML Serializer Transformer。指定它的Transformer

8选择File | Save All命令保存全部

9.此时在VS中选择项目|显示所有文件,就会发现在项目中多出了一个名为EditorSettings.config的配置文件

10.在项目中选择 属性|生成事件|生成后事件命令行 输入如下内容:

1copy "$(ProjectDir)\*.config" "$(TargetDir)"

第三步:用代码访问配置数据:

1.在项目中添加如下两个引用

    • Microsoft.Practices.EnterpriseLibrary.Common.dll,
    • Microsoft.Practices.EnterpriseLibrary.Configuration.dll.

2.并在.CS代码中添加:

1using Microsoft.Practices.EnterpriseLibrary.Configuration;

3.写配置信息:注意在写配置信息时是整个配置区被覆盖(无合并),另外,元配置文件必须包含该配置区的定义。

 1/// <summary>
 2        /// 写XML
 3        /// </summary>

 4        private void writeXmlConfigDataButton_Click(object sender, EventArgs e)
 5        {
 6            EditorFontData configData = new EditorFontData();
 7
 8            if (fontDialog.ShowDialog() == DialogResult.OK)
 9            {
10                configData.Name = fontDialog.Font.Name;
11                configData.Size = fontDialog.Font.Size;
12                configData.Style = Convert.ToInt32(fontDialog.Font.Style);
13                
14                ///注意WriteConfiguration 方法,有两个参数:
15                ///第一个是配置节名称
16                ///第二个就是自定义配置类的对象
17                ///实际上就是将配置数据写到这个配置节里去了
18                ///程序对此的处理是透明的

19                ConfigurationManager.WriteConfiguration("EditorSettings", configData);
20
21                StringBuilder results = new StringBuilder();
22                results.Append("Configuration Data Updated:");
23                results.Append(Environment.NewLine);
24                results.Append(\t);
25                results.Append(configData.ToString());
26
27            }

28

4.读配置信息:

 1/// <summary>
 2        /// 读XML
 3        /// </summary>

 4        private void readXmlConfigDataButton_Click(object sender, System.EventArgs e)
 5        {
 6            Cursor = System.Windows.Forms.Cursors.WaitCursor;
 7            
 8            ///GetConfiguration方法就一个参数,即配置节名称
 9            ///注意别忘了进行强制类型转换

10            EditorFontData configData = ConfigurationManager.GetConfiguration("EditorSettings"as EditorFontData;
11
12            StringBuilder results = new StringBuilder();            
13            results.Append("Configuration settings:");
14            results.Append(Environment.NewLine);
15            results.Append(\t);
16            results.Append(configData.ToString());
17            results.Append(Environment.NewLine);
18
19            Cursor = System.Windows.Forms.Cursors.Arrow;
20        }

入门篇就到这里了,下面我会尽快写配置应用程序块的进阶篇及剖析篇的:)

Feedback

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-10-14 11:46 by Martin Yan
比较不错的入门介绍,希望能继续看到后续的文章

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-10-14 12:36 by 雷波
不错,继续期待.

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-10-14 16:48 by Sadly_Lee
10.在项目中选择 属性|生成事件|生成后事件命令行 输入如下内容:

1copy "$(ProjectDir)\*.config" "$(TargetDir)"

這個地方asp.net項目怎么設置啊

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-10-14 19:09 by Terrylee
To:Martin Yan,雷波

多谢支持,我会尽快写的:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-10-14 19:10 by Terrylee
To:Sadly_Lee

在ASP.NET中不用设置,只要相对于Web.config的相对路径就可以了

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-10-14 23:12 by wyn
很好,一直想看关于Enterprise library的文章!

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-10-15 09:40 by Simon
非常不错。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-02 14:33 by jeffers
EditorSettings.config在没有使用ConfigurationManager.WriteConfiguration写入之前是空的?还是有基本的schema,只是没有value。
我的程序总是出错!

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-02 15:19 by Terrylee
@wyn
@Simon
多谢支持:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-02 15:20 by Terrylee
@jeffers
EditorSettings.config是空的,不需要自动手动填写,完全由配置管理工具写入:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-02 19:58 by Aaronzhu
@Terrylee
"EditorSettings.config是空的,不需要自动手动填写,完全由配置管理工具写入:)"
好像不是这样的。
因为EditorSettings.config文件中的内容是由ConfigurationManage将EditorFontData序列化后写入的,不是由配置管理工具写入的。因此如果没有没有执行ConfigurationManager.WriteConfiguration则EditorSettings.config应该是空的。
而,在web程序中,代码里不可能执行对config文件的写操作的,因此在web程序中,应该怎么生成EditorSettings.config文件的内容?
我想这才是jeffers的问题。是这样嘛?

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-03 11:05 by BrianXue
看到这里我还是不太明白Enterprise Library 的具体作用是什么,
但是谢谢。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-03 12:21 by Terrylee
@BrianXue
Enterprise Library是微软提供的一系列的应用程序块,包括配置,数据访问,安全,日志,缓存,加密等。这些程序块你可以直接在项目中应用,而且这些程序块是有源码的,也可以自行扩展。本篇配置应用程序块是后面所有的应用程序块的基础,Enterprise Library 是以配置驱动的。

乱说了一通,不知道对你有没有帮助?:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-03 12:25 by Terrylee
@Aaronzhu
你说得对,是我看错了。最近有点晕了^_^
在Web中写入.config文件我还真没尝试过……

非常感谢您的提醒!

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-10 13:53 by bendise
Enterprise Library 在那里运行,我找不到

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-10 14:12 by Terrylee
@bendise
我不太明白你说的是……

Enterprise Library下载安装后在开始菜单里面有一项

在你的程序中应用时,需要添加相应的DLL,默认的目录为:
C:\Program Files\Microsoft Enterprise Library\bin

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-17 09:50 by bendise
在项目中选择 属性|生成事件|生成后事件命令行 输入如下内容

到这步我不会作了,属性|生成事件 ,在那里?? 能给张截图吗,谢谢

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-17 11:53 by Terrylee
@bendise

请参见我今天Post的一篇《使用.NET Remoting开发分布式应用——配置文件篇》
随笔

这篇随笔里面也用到了这步操作

我在里面加了图片:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-24 15:38 by 西门吹雪
好文章,一直希望找这样的文章现在终于找到。谢谢同时支持terrylee继续发布相关的文章。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-24 15:50 by Terrylee
@西门吹雪

多谢支持,最近项目比较紧,所以停了几天。我会尽快发布其他的……

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-24 17:30 by 西门吹雪
@Aaronzhu
在web程序中,代码里不可能执行对config文件的 "写" 操作的,.... ??

只要是ASPNET的帐户拥有对Config文件的写权限不就可以写Config文件了吗?只不过看写进去的是什么文件了,如果写到web.config文件里面当前的Session就会丢失.
web程序就会重启。顺便请教@Terrylee 在web项目中Enterprise Library能否把配置的一些信息写到自定义的配置文件里面.

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-29 16:18 by 栖息的熊
@在项目中选择 属性|生成事件|生成后事件命令行 输入如下内容

我是这样写的
copy "sourceDir\*.config" "tarDIr"
编译成功了
不知道$是做什么用的
但我发现sourceDir下的config改变之后,tarDir下的没变

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-29 16:18 by 栖息的熊
@在项目中选择 属性|生成事件|生成后事件命令行 输入如下内容

我是这样写的
copy "sourceDir\*.config" "tarDIr"
编译成功了
不知道$是做什么用的
但我发现sourceDir下的config改变之后,tarDir下的没变

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-29 16:23 by Terrylee
@栖息的熊

生成后事件命令行应该这样写:

copy "$(ProjectDir)\*.config" "$(TargetDir)"

这个是固定的语法,请参考宏的知识

不要手工修改成copy "sourceDir\*.config" "tarDIr"

该命令是在生成后事件命令,编译是不会报错的,只不过生成没有执行而已

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-30 10:50 by 栖息的熊
不知道参考宏的什么方面的知识,msdn上看了一会,不太明白。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-11-30 11:19 by Terrylee
@栖息的熊

可以专门找本这方面的书或者google一下啊^_^

其实在这方面没必要花太多的时间

在企业库里面,用到的就这一个

记住就行了。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-12-28 17:12 by 蓝海泛舟
to 西门吹雪
做过试验了。在asp.net项目中是不能使用作者的方法写入EditorSettings.config的。即使将iis的默认执行用户设置为administrator也不能修改。
所以只能手写,或写一个桌面配置工具写入配置文件。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-12-28 17:18 by error
为什么我在生成后事件那里定义了“copy "$(ProjectDir)\*.config" "$(TargetDir)" ”,编译就老是报告“生成后事件出错”?

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-12-28 17:20 by error
这个语法应该没有问题吧?怎么执行不成功呢?copy 就是dos那个命令吧?是有什么限制?

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-12-29 10:37 by VLER
我下载了Enterprise Library的Web Cast,很多细节讲解的比较笼统.呵呵.然后上网一搜就找到你这来了.谢谢你将学习心得拿出来分享.以后长来你这里学习了.呵呵.元旦快乐

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2005-12-30 08:25 by Terrylee
@VLER

欢迎有空来坐坐:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-01-17 00:01 by vivid
如果在ASP.NET程序中的 EditorSettings.config文件中手动添加内容,然后测试

ReadXML的功能,具体怎么添加啊?

我添加了好像不可以哦,谢谢啦^_^。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-01-17 17:20 by Terrylee
@vivid

如下所示:
 
<?xml version="1.0" encoding="utf-8"?>
<EditorSettings>
  
<xmlSerializerSection type="ConfigurationQuickStart.EditorFontData, ConfigurationRuntimeData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
    
<EditorFontData xmlns:xsd="http://www./2001/XMLSchema" xmlns:xsi="http://www./2001/XMLSchema-instance">
      
<Name>宋体</Name>
      
<Size>21.75</Size>
      
<Style>1</Style>
    
</EditorFontData>
  
</xmlSerializerSection>
</EditorSettings>

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-02-07 13:48 by 程序生活
急问:Enterprise Library和offline application block有什么区别呀?

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-02-15 08:25 by Terrylee
@程序生活
Application Block最早有11个组成,在Enterprise Library中只选取了其中的7个。
Offline application block不包括在EL中

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-03 16:34 by 好好好好好好好好好好好好好好好
楼主讲得很好..
辛苦了。

期待楼主把 "剖析篇" 写出来。

msdn上对 Enterprise Library 基础部分的也讲得不少,

对大家而言,分析里面的代码是非常有意义的!

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-03 16:46 by Terrylee
@好好好好好好好好好好好好好好好
剖析篇只写了配置应用程序块,现在已经停止了
我打算在设计模式系列中体现……

另外,想研究一下Enterprise Library 2.0...

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-03 17:24 by @好好好好好好好好好好好好好好好

楼主回得好K快...

偶才看完第一部分...

现在我们公司新写的ERP已用上了 Enterprise Library ,

还有用 SharpDevelop 作为winform 框架...

真期待楼主设计模式系列的讲解!



# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-03 17:38 by Terrylee
@@好好好好好好好好好好好好好好好
探索设计模式系列已经开始写了,总共有30篇吧,目前写了10篇左右,进度比较慢,请参见:
http://terrylee.cnblogs.com/archive/2006/02/21/334911.html

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-15 10:27 by jedliu
能否告诉我 属性|生成事件|生成后事件命令行 这个在哪里,我看了你写的《使用.NET Remoting开发分布式应用——配置文件篇》 还是找不到,你用的是2005还是2003?

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-15 12:46 by Terrylee
@jedliu
在解决方案窗口中,项目上点击右键,可以找到~~~~

这些都是针对VS2003的

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-16 10:31 by jedliu
谢谢Terry!
可我还是无法在web里找到!
我知道在winform里有,但web里没,是不是只是对win的?!
我刚接触这些,懂得太少,期待赐教!

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-03-16 11:42 by Terrylee
@jedliu
Web下面不用做这一步

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-04-17 10:36 by lyceum luo
现在Enterprise Library 已经发布2.0版本了。和楼主讲的这个版本有很大不同。楼主能不能在有时间的时候。把Enterprise Library 2.0 和1.0作一个比较。原来在1.0下的设置。现在在2.0下应该怎么设置。期待楼主的文章能早点发布。热烈期望中。。。。。。。

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-06-05 22:45 by hstang
能告知把配置写入SQL SERVER怎么配吗?在Enterprise Library configuration 中怎么配生也不能成功的把配置数据写入数据库

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-06-06 08:27 by TerryLee
@hstang
需要使用 SQL Server Provider

参考:http://terrylee.cnblogs.com/archive/2005/10/15/255299.html

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-09-14 17:15 by tomato[匿名]
真是佩服您得无私奉献! 而且你还真是身怀绝技儿不骄! 佩服! 我也是刚刚开始用企业库! 看了微软得web cast但是迷迷糊糊得! 看了你写得! 爽!^_^

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-09-15 13:05 by TerryLee
@tomato[匿名]
过奖了,呵呵

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-11-13 13:20 by Lee[匿名]
webcast 的EL专题感觉乱七八糟的 理论大篇 你这个好很多一看就明白

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-11-13 13:33 by TerryLee
@Lee[匿名]
谢谢:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-11-27 21:50 by 天涯海角[匿名]
想不到有比我还菜的,问"Enterprise Library 在那里运行,我找不到",我引用还是会了.只可惜以上的示例是C的,我在学VB2005,唉,命苦呀.

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2006-11-28 09:52 by TerryLee
@天涯海角[匿名]
看一下Hands On Lab,有VB.NET的

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2007-01-09 11:40 by 初学者[匿名]
请问一下:
10.在项目中选择 属性|生成事件|生成后事件命令行 输入如下内容:

1copy "$(ProjectDir)\*.config" "$(TargetDir)"


是什么意思啊

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2007-01-11 11:43 by student[匿名]
:)

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2007-01-15 08:48 by TerryLee
@初学者[匿名]
拷贝配置文件到bin目录下

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2007-01-23 08:22 by Jinwmmail
在 EL 2.0 版里就不要

1copy "$(ProjectDir)\*.config" "$(TargetDir)"

这个啦.

建议大家下个 EL 2.0 版.

# re: Enterprise Library Step By Step系列(一):配置应用程序块——入门篇  回复  更多评论   

2007-01-23 22:51 by TerryLee
@Jinwmmail
2.0下都是用应用程序配置文件的,所以不需要

现在已经有3.0的CTP版了

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多