Enterprise Library: Configuration Application Block应用向导篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Part 1

Written by: Rickie Lee (rickieleemail#yahoo.com)

My blog: www.cnblogs.com/rickie

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

l         使用配置文件,如XML文件或Windows .ini文件。

l         使用Windows注册表。

l         使用数据库,如Microsoft SQL Server。

Configuration Application Block设计达到如下的目标:

l         为读写配置数据提供简单的接口。

l         隔离应用程序和配置数据的物理存储位置(Storage Location)。

l         提供扩展模型,允许定制存储位置和配置信息的Runtime显示。

Configuration Application Block支持对可配置的存储位置进行读写操作。对于特定的存储位置,需要配置Application Block使用对应的Storage Provider,该Storage Provider知道如何读写该Storage Location的数据。

应用程序传递和接受的对象必须是Storage Provider所了解的,这里也许需要或不需要Transformer(转换器)。例如,如果应用程序使用Storage Provider从数据库读取信息和以DataSet类型返回,Application Block则不需配置任何transformer,DataSet可以被Storage Provider读取。

另外一种情况是,Application Block使用transformer接受Storage Provider返回的对象,并转换为应用程序希望的特定对象类型。例如,transformer可以将Storage Provider返回DataSet对象转换为应用程序所使用的hashtable类型。如下图所示:

这里,演示Configuration Application Block内置支持的XML配置,Storage Provider-XmlFileStorageProvider支持读写XML配置文件,它接受并返回XmlNode类型对象。Transformer-XmlSerializerTransformer序列化对象为XmlNode类型和反序列化XmlNode对象为合适的类型。如下图描述了整个过程:

应用程序包含有配置数据的可序列化对象,为了将对象中包含的数据写入配置文件中,Application Block首先使用XmlSerializerTransformer序列化数据为XmlNode对象。然后,Application Block传送XmlNode对象到XmlFileStorageProvider,XmlFileStorageProvider负责将数据写入XML文件。为了读取配置数据,XmlFileStorageProvider从XML文件读取数据,并返回XmlNode对象。Application Block接着传递XmlNode对象到XmlSerializerTransformer,Transformer反序列化数据并返回给Application Block,Application Block最终返回给应用程序。

To be continued. - Part 2 待续.
*** Updated ***

Enterprise Library: Configuration Application Block应用向导篇, Part 2
Enterprise Library: Configuration Application Block应用向导篇, Part 3

***

作者:Rickie Lee (rickieleemail#yahoo.com)

本文参考Enterprise Library, Configuration Application Block文档。


References:

1. <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Enterprise Library, Configuration Application Block

2. Rickie, Microsoft patterns & practices Enterprise Library January 2005 [中文稿], http://www.cnblogs.com/rickie/archive/2005/01/30/99443.html

3. Rickie, Enterprise Library released! http://www.cnblogs.com/rickie/archive/2005/01/29/99106.html

转载于:https://www.cnblogs.com/rickie/archive/2005/02/09/103505.html

Enterprise Library: Configuration Application Block应用向导篇, Part 1相关推荐

  1. Enterprise Library: Configuration Application Block类设计分析篇

    Enterprise Library: Configuration Application Block类设计分析篇<?xml:namespace prefix = o ns = "ur ...

  2. [Enterprise Library]Configuration类设计分析

    [Enterprise Library]Configuration类设计分析 Enterprise Library: Configuration Application Block类设计分析篇 Wri ...

  3. Enterprise Library: Data Access Application Block配置文件分析篇

    Enterprise Library: Data Access Application Block配置文件分析篇 Enterprise Library提供了Configuration Console配 ...

  4. Microsoft Enterprise Library 5.0 系列(十) Configuration Application Block

    到目前为止,我们使用的模块都是在同一个配置文件中,这显然是不灵活的,我们希望每个功能模块能独立的在一个配置文件中体现,这样不仅易于管理,易于扩展,也易于阅读和分类.企业库当然考虑到了这个问题并且提供了 ...

  5. Enterprise Library v5.0 -- Data Access Application Block 开发向导(3)

    微软企业库 Enterprise Library 5.0 正式发布!!! Enterprise Library 5.0 开发向导- 简介(1) Enterprise Library v5.0 -- D ...

  6. Enterprise Library Configuration DAAB的使用

    1.要试用DAAB,首先要引用两个类库 第一个是Enterprise Library Shared Library 这个类库是所有Enterprist Library都必须引用的类库,它提供所需的结构 ...

  7. Enterprise Library Logging App Block的时区问题

    LAB记录的日志里timestamp总是UTC时间,很是郁闷,只能把里面的DateTime.UtcNow改成DateTime.Now,再编译引用. 今天偶然看见http://blogs.msdn.co ...

  8. 微软企业库(Microsoft Enterprise Library Data Access Block)

    1. Dynamic-link library Microsoft.Practices.ObjectBuilder.dll Microsoft.Practices.EnterpriseLibrary. ...

  9. Enterprise Library Policy Injection Application Block 之一: PIAB Overview

    在过去的半年里,定期或者不定期地写点东西已经成为了我的一种习惯.可是最近两个月来一直忙于工作的事情一直足够的时间留给自己,虽然给自己列了很长一串写作计划,可是心有余而力不足.这一段工作主要是帮助公司开 ...

最新文章

  1. MyEclipse搭建java Web项目开发环境
  2. Springboot监控之一:SpringBoot四大神器之Actuator之3-springBoot的监控和管理--指标说明...
  3. 5、MySQL修改数据库:ALTER DATABASE用法简介
  4. koa2 mysql 中间件_Koa2 和 Express 中间件对比
  5. 配置window下python3环境
  6. 施一公:论文和科技实力是两回事,大家千万要分开
  7. 分享C#高端视频教程WPF讲座——WPF应用
  8. html圆形圆心坐标,圆心坐标公式
  9. OPPO R9tm 刷机/root/救砖/第三方recovery
  10. sap crystal reports(水晶报表) 2016 SP7中文破解版
  11. CGLIB代理使用与原理详解
  12. 组合预测模型:bagging
  13. 操作系统——进程的状态与转换
  14. 计算机音乐文爱图片,CG/贺敬轩《文爱》[FLAC/MP3-320K]
  15. Linux 不能命令补全,Linux 命令未自动提示补全
  16. vscode写php高亮,写了一个Hy的vscode语法高亮插件
  17. 机械革命z3pro笔记本U盘重装win10系统教学
  18. 陳三甲网络笔记:赚钱路上,一些人生思考 陳三甲网络笔记
  19. TOP 300 Freeware software!
  20. zjfc-1108,hdu-1222 wolf and rabbits

热门文章

  1. 虚拟机服务器503解决,(图文)解决重启VCSA 6.0提示:503 Service Unavailable错误
  2. 当文员学计算机二级,二本学生毕业后在干什么?多半做3种工作,过来人深有同感...
  3. jq苹果手机全屏下点击无效果_看剧、下视频、看小说,这一个app就可以~
  4. php百分比乘加,用php简单实现加减乘除计算器
  5. 订阅者java_RxJava:“java.lang.IllegalStateException:只允许一个订阅者!”
  6. java代码如何与界面联系在一起_如何在Visual Studio Code 中编写Java代码
  7. WaitForMultipleObjects用法详解
  8. vue右键复制粘贴功能_这可能是最高效的复制粘贴方法
  9. java继承和多态的实验报告_JAVA,继承和多态实验报告
  10. HTTP请求中的缓存(cache)机制