zoukankan      html  css  js  c++  java
  • Enterprise Library: Configuration Application Block类设计分析篇

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

     

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

    My blog: www.cnblogs.com/rickie

    Configuration Application Block允许应用程序方便读写应用程序配置信息。

    下图显示了Configuration Application Block中类和对象之间的关系,该图假定你使用Application Block内置的XML文件Storage ProviderTransformerXML文件Storage Provider存放配置数据到XML文件中(其他Providers使用其他Storage格式,如Windows注册表)。XmlFileStorageProvider对象指向包含特定配置节配置信息的文件。ConfigurationBuilder对象指向包含特定配置节配置元数据的文件。一般情况下,包含配置元数据的文件为Windows应用程序的App.ConfigWeb应用程序的Web.Config文件。
    Enterprise_CAB_ClassRelationshp.jpg

    Configuration Application Block隔离配置元数据和实际配置文件,Application Block将元数据放置在它自己的配置文件中,与实际的配置信息进行隔离。配置设置被组合在一起,并作为一个配置节。应用程序中每一个Enterprise LibraryApplication Block均使用它自己的配置节,并有对应的配置文件。Configuration Application Block通过使用配置元数据来访问配置数据。

     

    配置元数据包含有配置存储位置、Transformer类型和Configuration Application Block用来读写配置数据的Storage Provider等等信息。配置元数据文件分成一些配置节,每一节包含读写配置设置中特定组的必要信息。ConfigurationManager类提供了静态方法在定义的存储位置读写指定配置节的配置设置。首先,ConfigurationManager对象从应用程序配置元数据文件读取配置元数据信息,然后通过元数据信息读写配置节信息。

     

    每一个配置节的设置都缓存在hashtable中。当client端请求配置数据时,ConfigurationBuilder将查询缓存中的数据。如果在缓存中发现这些配置数据,ConfigurationBuilder对象则不访问存储区的配置数据。如果Storage Provider检测存储区内的数据发生变化,ConfigurationBuilder将清除缓存。ConfigurationManager对象允许应用程序清除整个或特定配置节的缓存,如果缓存被清除后,随后的请求将访问存储区中的配置数据。

     

    IStorageProviderReader接口定义了用来从存储位置读取配置信息,IStorageProviderWriter接口实现了IStorageProviderReader接口,并且定义了用来写配置信息的接口。Configuration Application Block中的XmlFileStorageProvider实现了上述接口,用来读写XML配置文件。

    ITransformer接口用来在应用程序与Storage Provider之间转换配置设置对象,Configuration Application Block中的XmlSerializerTransformer类实现了该接口。XmlSerializerTransformer类转换应用程序中定义的对象和XmlNode对象。应用程序不是必须要求配置Transformer,如果没有Transformer,返回给应用程序的配置设置对象与Storage Provider提供的对象类型一样。

     

    ***

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

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

     

    References:

    1. 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

     

  • 相关阅读:
    关于ios7的适配问题
    iOS安全攻防(十八):数据保护API
    【Objective-C】OC中KVO的基本概念和使用方法
    pytest运行方式
    unittest中使用ddt做数据驱动
    unittest使用HtmlTestRunner显示报告
    unittest中的断言内容
    unittest指定跳过某些方法
    unittest运行时指定运行顺序
    xpath使用属性元素定位,包含 and 、or、not
  • 原文地址:https://www.cnblogs.com/rickie/p/103772.html
Copyright © 2011-2022 走看看