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

简介:
写在前面:
最近 准备写Enterprise Library Step By Step 的系列文章,对于每一个应用程序块,我都会用入门篇,进阶篇,剖析篇三篇文章去写。   在入门篇里会详细介绍应用程序块的使用步骤,主要是针对新手入门的;进阶篇会介绍一些应用程序块的更深的应用及扩展机制;剖析篇会去分析应用程序块的底层设计和类设计的一些内容。所有的观点都纯属个人理解,有不当之处请大家多多指教。
一.配置应用程序块概述:
      几乎每一个应用程序都需要一些配置信息,这些信息可以是简单的数据库连接信息,或者复杂的多块多层次用户信息。如何以及在哪里存储应用程序配置数据是程序员经常面临的问题。
. 为应用系统提供了一个通用的配置管理解决方案,可方便灵活地从各种存储中读写配置信息 配置信息
. 为读写配置信息提供了简单的接口
. 支持不同的配置存储
. 支持配置信息的加密
. 支持配置文件的动态更新
. 支持复杂的配置对象
Config Config Block Block  的使用场景:
. 应用系统需要在运行时读写复杂的配置信息
. 应用系统需要在配置文件中保存敏感数据(比如密码)
. 设计应用系统时能帮助开发人员进行正确的配置读写
. 应用系统部署后系统管理员能有一个好的工具修改 XM   配置文件
二.使用步骤:
假设已经新建好的项目中,并且已经存在 Web.config App.config 配置文件。
第一步:建立自定义配置数据类:
该类根据项目的实际情况建立,需要注意的是该类必须是可序列化的( XMLSerializer ),并且可以任意复杂
 1 None.gif using  System;
 2 None.gif using  System.Text;
 3 None.gif using  System.Xml.Serialization;
 4 None.gif
 5 None.gif namespace  ConfigurationQuickStart
 6 ExpandedBlockStart.gif {
 7InBlock.gif    public class EditorFontData
 8ExpandedSubBlockStart.gif    {        
 9InBlock.gif        private string  name;
10InBlock.gif        private float   size;
11InBlock.gif        private int        style;
12InBlock.gif
13InBlock.gif        public EditorFontData()
14ExpandedSubBlockStart.gif        {          
15ExpandedSubBlockEnd.gif        }

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

41ExpandedSubBlockEnd.gif    }

42ExpandedBlockEnd.gif}

43 None.gif
第二步:用 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 None.gif copy  " $(ProjectDir)\*.config "   " $(TargetDir) "
第三步:用代码访问配置数据:
1 .在项目中添加如下两个引用
  • Microsoft.Practices.EnterpriseLibrary.Common.dll,
  • Microsoft.Practices.EnterpriseLibrary.Configuration.dll.
2 .并在 .CS 代码中添加:
1 None.gif using  Microsoft.Practices.EnterpriseLibrary.Configuration;
3 .写配置信息:注意在写配置信息时是整个配置区被覆盖(无合并),另外,元配置文件必须包含该配置区的定义。
 1 ExpandedBlockStart.gif /// <summary>
 2InBlock.gif        /// 写XML
 3ExpandedBlockEnd.gif        /// </summary>

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

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

28InBlock.gif
4 .读配置信息:
 1 ExpandedBlockStart.gif /// <summary>
 2InBlock.gif        /// 读XML
 3ExpandedBlockEnd.gif        /// </summary>

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

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

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












本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67597,如需转载请自行联系原作者

相关文章