asp.net 2.0在很多地方都用到Provider Pattern,比如Personalization、MemberShip等都用到了该模式,其可插拔的特性给开发人员极大的便利,开发人员可以更据自己的需求来开发自己的需要

.Net 2.0中给我们已经定义了一个ProviderBase的抽象类,继承自它我们可以方便的开发自定义的Provider

首先我们写一个抽象类,用来定义好我们需要的抽象方法和接口,为了方便调用,我们为这个类定义了一个静态的构造器,用来实例化该抽象类调用的真正的Provider的实现,并通过Instance()返回其实例化后的对象,我们就可以通过BlogDataProvider.Instance()来调来所用到的实例了

开发自定义的Provider    public abstract  class BlogDataProvider:ProviderBase
    }

由于我们用的是ProviderHelper.InstatiateProviders来调用配置文件中定义的类,所以我们还要实现其两个参数定义的类,一个是继承自ConfigurationSection用来读
取配置节点的ProvidersConfigSection

 
开发自定义的Provider    public class ProvidersConfigSection : ConfigurationSection
    }

还有一个就是实现自ProviderCollection的一个Provider的集合类,因为我们要定义多种不同的Provider所以用一个泛型来实现

开发自定义的Provider    public class CusProviderCollection<T>:ProviderCollection
开发自定义的Provider        where T:ProviderBase
    }

然后是我们要求的类的功能的具体实现
开发自定义的Provider public class SqlBlogDataProvider:BlogDataProvider
}

Provider模式是能过配置文件来定义具体要实例化的类的,我们可以在我们的Web.config加入如下代码
开发自定义的Provider<configuration>
开发自定义的Provider  
<configSections>
开发自定义的Provider    
<sectionGroup name="system.web">
开发自定义的Provider      
<section name="dataService"
开发自定义的Provider               type
="MyDHServer.Compontents.DataProvider.ProvidersConfigSection,MyDHServer.Compontents"
开发自定义的Provider               allowDefinition
="MachineToApplication" 
开发自定义的Provider               restartOnExternalChanges
="true"/>
开发自定义的Provider    
</sectionGroup>
开发自定义的Provider
</configSections>
开发自定义的Provider
</configuration>
开发自定义的Provider开发自定义的Provider开发自定义的Provider开发自定义的Provider开发自定义的Provider开发自定义的Provider.
开发自定义的Provider
<system.web>
开发自定义的Provider
<dataService>
开发自定义的Provider      
<providers>
开发自定义的Provider        
<add name="SqlBlogDataProvider"
开发自定义的Provider             type
="MyDHServer.DataProvider.SqlDataProvider.SqlBlogDataProvider,MyDHServer.DataProvider"
开发自定义的Provider             connectionStringName
="MyDHServerConn" />
开发自定义的Provider      
</providers>
开发自定义的Provider    
</dataService>
开发自定义的Provider
</system.web>

相关文章: