asp.net 2.0在很多地方都用到Provider Pattern,比如Personalization、MemberShip等都用到了该模式,其可插拔的特性给开发人员极大的便利,开发人员可以更据自己的需求来开发自己的需要
.Net 2.0中给我们已经定义了一个ProviderBase的抽象类,继承自它我们可以方便的开发自定义的Provider
首先我们写一个抽象类,用来定义好我们需要的抽象方法和接口,为了方便调用,我们为这个类定义了一个静态的构造器,用来实例化该抽象类调用的真正的Provider的实现,并通过Instance()返回其实例化后的对象,我们就可以通过BlogDataProvider.Instance()来调来所用到的实例了
public abstract class BlogDataProvider:ProviderBase
}
由于我们用的是ProviderHelper.InstatiateProviders来调用配置文件中定义的类,所以我们还要实现其两个参数定义的类,一个是继承自ConfigurationSection用来读
取配置节点的ProvidersConfigSection
public class ProvidersConfigSection : ConfigurationSection
}
还有一个就是实现自ProviderCollection的一个Provider的集合类,因为我们要定义多种不同的Provider所以用一个泛型来实现
public class CusProviderCollection<T>:ProviderCollection
where T:ProviderBase
}
然后是我们要求的类的功能的具体实现public class SqlBlogDataProvider:BlogDataProvider
}
Provider模式是能过配置文件来定义具体要实例化的类的,我们可以在我们的Web.config加入如下代码<configuration>
<configSections>
<sectionGroup name="system.web">
<section name="dataService"
type="MyDHServer.Compontents.DataProvider.ProvidersConfigSection,MyDHServer.Compontents"
allowDefinition="MachineToApplication"
restartOnExternalChanges="true"/>
</sectionGroup>
</configSections>
</configuration>
.
<system.web>
<dataService>
<providers>
<add name="SqlBlogDataProvider"
type="MyDHServer.DataProvider.SqlDataProvider.SqlBlogDataProvider,MyDHServer.DataProvider"
connectionStringName="MyDHServerConn" />
</providers>
</dataService>
</system.web>