DotNetNuke的配置

配置
yU&Feci0Web.config
文件包含了许多配置节来使DataProvider模式起作用。第一个配置节注册了这些提供者(Providers)和他们相应的配置节处理方法(ConfigurationSectionHandlers)。尽管在这个例子中我们仅仅展示了DotNetNuke配置节组中的一个,我们可以通过类似的方法配置其它的提供者(也就是抽象验证提供者等等)。但有一点是必须保证的,那就是web.config文件中必须实现这些配置节。

 

   <configSections>

       <sectionGroupname="dotnetnuke">

           <sectionname="data"type="DotNetNuke.ProviderConfigurationHandler, DotNetNuke"/>

       </sectionGroup>

   </configSections>

 

下面的配置节是为老式的数据访问方法的模块而保留的:

   <appSettings>

       <addkey="connectionString"value="Server=localhost;Database=DotNetNuke;uid=sa;pwd=;"/>

   </appSettings>

 

如上最终实现了大量的提供者模块。<dotnetnuke>配置组中的<data>配置节名称需要有一个默认的提供者(defaultProvider)属性,这个属性依赖于下面的<providers>集合中的特定的实例。在从一个provider转变为另一个provider的时候defaultProvider被用来作为单一的转换器。如果没有指定默认的provider,这个配置集合中的第一项就被认为是默认的。

      <data>配置节也包含了一个<providers>集合说明,确定了所有的<data>实现都是唯一的。每一个provider都必须至少包含nametypeproviderPath属性(name不是特定的但是通常相应的类名,type指定了provider相关的强类名,providerPath指定了provider的特殊资源例如脚本在哪里)。每一个提供者同样可以有多个自定义属性。

 

 

   <dotnetnuke>

       <datadefaultProvider="SqlDataProvider">

           <providers>

        <clear/>

               <addname="SqlDataProvider"

                       type="DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider"

                       connectionString="Server=localhost;Database=DotNetNuke;uid=sa;pwd=;"

                      providerPath="~\database\SqlDataProvider\"

                       objectQualifier="DotNetNuke"

                       databaseOwner="dbo"

               />

               <addname="AccessDataProvider"

                       type="DotNetNuke.Data.AccessDataProvider, DotNetNuke.AccessDataProvider"

                       connectionString="PROVIDER=Microsoft.Jet.OLEDB.4.0;"

                      providerPath="~\database\AccessDataProvider\"

                       objectQualifier="DotNetNuke"

                       databaseFilename="DotNetNuke.mdb"

               />

           </providers>

       </data>

   </dotnetnuke>

 

下面是对providers集合中的节点作用的详细说明。

<providers>配置节包含了一个或多个<add><remove><clear>元素。下面的规则应用在处理这些元素的时候:

 

 

1、 声明一个空的<providers />不是错误。

2、 Providers继承了父配置中<add>声明的项。

3、 如果某项已经存在了或被继承了再用<add>重新定义那么这是错误的。

4、 <remove>一个不存在的项是错误的。

5、 如果一个项被<add>后又被<remove>了,然后再<add>这个完全相同的项是可以的(不是错误)。

6、 如果一个项<add>,<clear>,然后再<add>是可以的(不是错误的)。

7、 <clear>会清除所有在先前定义的和继承的项。例如:先用<add>声明再用<clear>清除那么项就不存在了,而在<clear>后再<add>声明的项是不会被清除的。

 

 

<add>

描述

增加一个数据提供者(data provider)。

属性

Name——provider的友好的名称。

Type——一个实现了provider接口的类。这个值是一个程序集的完整的关联。

providerPath——查找provider的特殊资源(如脚本)的路径。

其它name/value对——也许还有一些附加的名称/值对,所有的名称/值对都是provider能够理解的(处理的)。

 

 

 

<remove>

描述

清除一个指定的数据提供者

属性

Name——要清除的provider的友好名称。

 

 

 

 

<clear>

描述

清除所有的继承的提供者。

 

 

\Components\Provider.vb

 

Provider.vb类提供了所有的实现细节,这些实现包括从web.config文件加载provider的信息以及应用<add>, <remove>, <clear>处理的规则(标准)。这是一个通用的(generic)类,它不仅仅适用于数据访问。

 

\Components\DataProvider.vb

 

DataProvider.vb是一个抽象类,这个类包含了DNN的所有的数据访问方法。它包含了一个工厂本身的实例方法(Instance()),它负责在运行时动态加载web.config中描述的合适的程序集。

 

       ' unique provider name used for caching

       PrivateConstProviderTypeAsString= "data"

       PrivateConstProviderNameAsString= ""

 

posted on 2009-08-20 16:37  RIVERSPIRIT  阅读(389)  评论(0)    收藏  举报