Enterprise Library: Configuration Application Block应用向导篇, Part 1
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相关推荐
- Enterprise Library: Configuration Application Block类设计分析篇
Enterprise Library: Configuration Application Block类设计分析篇<?xml:namespace prefix = o ns = "ur ...
- [Enterprise Library]Configuration类设计分析
[Enterprise Library]Configuration类设计分析 Enterprise Library: Configuration Application Block类设计分析篇 Wri ...
- Enterprise Library: Data Access Application Block配置文件分析篇
Enterprise Library: Data Access Application Block配置文件分析篇 Enterprise Library提供了Configuration Console配 ...
- Microsoft Enterprise Library 5.0 系列(十) Configuration Application Block
到目前为止,我们使用的模块都是在同一个配置文件中,这显然是不灵活的,我们希望每个功能模块能独立的在一个配置文件中体现,这样不仅易于管理,易于扩展,也易于阅读和分类.企业库当然考虑到了这个问题并且提供了 ...
- Enterprise Library v5.0 -- Data Access Application Block 开发向导(3)
微软企业库 Enterprise Library 5.0 正式发布!!! Enterprise Library 5.0 开发向导- 简介(1) Enterprise Library v5.0 -- D ...
- Enterprise Library Configuration DAAB的使用
1.要试用DAAB,首先要引用两个类库 第一个是Enterprise Library Shared Library 这个类库是所有Enterprist Library都必须引用的类库,它提供所需的结构 ...
- Enterprise Library Logging App Block的时区问题
LAB记录的日志里timestamp总是UTC时间,很是郁闷,只能把里面的DateTime.UtcNow改成DateTime.Now,再编译引用. 今天偶然看见http://blogs.msdn.co ...
- 微软企业库(Microsoft Enterprise Library Data Access Block)
1. Dynamic-link library Microsoft.Practices.ObjectBuilder.dll Microsoft.Practices.EnterpriseLibrary. ...
- Enterprise Library Policy Injection Application Block 之一: PIAB Overview
在过去的半年里,定期或者不定期地写点东西已经成为了我的一种习惯.可是最近两个月来一直忙于工作的事情一直足够的时间留给自己,虽然给自己列了很长一串写作计划,可是心有余而力不足.这一段工作主要是帮助公司开 ...
最新文章
- MyEclipse搭建java Web项目开发环境
- Springboot监控之一:SpringBoot四大神器之Actuator之3-springBoot的监控和管理--指标说明...
- 5、MySQL修改数据库:ALTER DATABASE用法简介
- koa2 mysql 中间件_Koa2 和 Express 中间件对比
- 配置window下python3环境
- 施一公:论文和科技实力是两回事,大家千万要分开
- 分享C#高端视频教程WPF讲座——WPF应用
- html圆形圆心坐标,圆心坐标公式
- OPPO R9tm 刷机/root/救砖/第三方recovery
- sap crystal reports(水晶报表) 2016 SP7中文破解版
- CGLIB代理使用与原理详解
- 组合预测模型:bagging
- 操作系统——进程的状态与转换
- 计算机音乐文爱图片,CG/贺敬轩《文爱》[FLAC/MP3-320K]
- Linux 不能命令补全,Linux 命令未自动提示补全
- vscode写php高亮,写了一个Hy的vscode语法高亮插件
- 机械革命z3pro笔记本U盘重装win10系统教学
- 陳三甲网络笔记:赚钱路上,一些人生思考 陳三甲网络笔记
- TOP 300 Freeware software!
- zjfc-1108,hdu-1222 wolf and rabbits
热门文章
- 虚拟机服务器503解决,(图文)解决重启VCSA 6.0提示:503 Service Unavailable错误
- 当文员学计算机二级,二本学生毕业后在干什么?多半做3种工作,过来人深有同感...
- jq苹果手机全屏下点击无效果_看剧、下视频、看小说,这一个app就可以~
- php百分比乘加,用php简单实现加减乘除计算器
- 订阅者java_RxJava:“java.lang.IllegalStateException:只允许一个订阅者!”
- java代码如何与界面联系在一起_如何在Visual Studio Code 中编写Java代码
- WaitForMultipleObjects用法详解
- vue右键复制粘贴功能_这可能是最高效的复制粘贴方法
- java继承和多态的实验报告_JAVA,继承和多态实验报告
- HTTP请求中的缓存(cache)机制