Microsoft Enterprise Library---解读Configuration之配置管理

看完了Configuration的配置提供者,转换器和元数据后,对Configuration有了一个大致的了解,接下来Configuration是怎样通过提供者和转换
器根据元数据来生成系统使用者所期望的配置数据类的呢?ConfigurationBuilder!这个类是Configuration最核心的类,顾名思义,它就是建筑师,元数据是它的蓝图,提供者和转换器就是它的建筑工具,最后建筑出形色各异的建筑。呵,话归正传。来看看下面的类关系图吧:
3.JPG

从关系图可以看出,除了ConfigurationManager 外,几乎Configuration所有的类都直接的或者间接的被ConfigurationBuilder所依赖!看来是个集大成者(不过这里我个人感觉有点“脏”)
ConfigurationBuilder的主要属性和方法如下:
private ConfigurationSettings configurationSettings:元数据实体
private ConfigurationSections sections:配置数据实体缓存器
private ConfigurationFile configFile:元数据配置文件类(这个名称真是不伦不类)
LoadMetaConfiguration():将元数据导入,其实就是初始化configFile
ReadMetaConfiguration():要求configFile初始化 configurationSettings
ReadConfiguration():调用工厂类得到配置数据提供者和转换器,并通过它们得到配置数据实体类。
WriteConfiguration():持久化配置数据。

看了它的属性后方法后,就知道ConfigurationBuilder是怎么一个调用过程了:(第一次调用,不考虑缓存)

1。ConfigurationManager根据配置名要取出配置实体。
2。ConfigurationManager调用ConfigurationBuilder的ReadConfiguration(),
2.1 ConfigurationBuilder进行初始化序列
2.2 ConfigurationBuilder对ConfigurationFile进行初始化
2.3 ConfigurationBuilder要求ConfigurationFile提供configurationSettings,ConfigurationFile调用GetConfig(string sectionName),得到configurationSettings。
2.4 ConfigurationBuilder初始化sections,准备接纳配置数据实体缓存。
3   ConfigurationBuilder初始化完毕,继续调用ReadConfiguration()
3.1 ConfigurationBuilder调用CreateStorageProvider(配置名).准备得到一个配置提供者
3.1.1 ConfigurationBuilder根据自身创建一个ConfigurationContext,并将此实例作为一个参数来初始化StorageProviderFactory,
3.1.2 StorageProviderFactory调用Create(sectionName),根据ConfigurationContext的ConfigurationBuilder的ConfigurationSettings里的元数据创建了提供者,(注:有点繁琐)
3.2 ConfigurationBuilder得到提供者(IStorageProviderReader)后,顺便要求IStorageProviderReader根据Read()方法把配置数据取出来。至于取出什么样的数据,以何种形式包装
    它一概不管。
3.3 ConfigurationBuilder调用CreateTransformer(),得到一个转换器ITransformer,至于过程,和提供者一样。
3.4 ITransformer调用Deserialize(),并把刚才提供者读出来的配置数据进行解析,解析成系统使用者要求得到的配置数据实体类。
3.5 OK,ConfigurationBuilder扫尾:创建配置数据改变的观察器和进行缓存。
4  ConfigurationManager将这个配置数据实体类返回给系统使用者,使用者将这个实体类进行强制转换成它想要得类。

从配置中读取配置数据,总共就是这4个大的过程了,当然,如果有缓存的话,这些就免了。呵呵。

可以看出。ConfigurationBuilder简直就是个大独裁者,整个过程全部由它包干,个人感觉有点。。。。。有点想打人。

转载于:https://www.cnblogs.com/zhongkeruanjian/archive/2005/07/20/196984.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值