打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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


写在前面:

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

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

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

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

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

.支持不同的配置存储

.支持配置信息的加密

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

.支持复杂的配置对象

Config Config Block Block 的使用场景:

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

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

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

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

二.使用步骤:

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

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

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

 1
using System;
 2
using System.Text;
 3
using System.Xml.Serialization;
 4

 5
namespace 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.在项目中选择 属性|生成事件|生成后事件命令行 输入如下内容:

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

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

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

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

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

1
using 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.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/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版了

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级)
Enterprise Library4.0 Data Access Application...
EnterpriseLibrary
老徐的博客 ? Blog Archive ? 微软企业库(1):Enterprise Library 5.0介绍
SAP UI5 Theme Library 的解析逻辑和 SAP UI5 配置元数据的默认值
深入探究EJB应用技术的体系结构
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服