.NET 2.0的Provider模式
第三部分:执行
为了使用我们的API,我们要对静态的Store类进行方法调用,在本次示例中如果我们默认的provider存有产品,我们可以通过API类(Store)提供的方法使用默认provider。
2
3 Product p1 = Product.GetProduct("Coke");
4
5
6
7 // find out the cost
8
9 double cost = Store.GetProductPrice(p1);
10
11
12
13 // get it from the store
14
15 Store.RemoveProductFromStock(p1); // remove from inventory
如果我们想要另一个默认的Provider,我们可以修改配置文件,把其它已实现此API的类加载到内存。跑跑这个示例项目,修改配置文件中的值来看看价格是否发生变化。
<store defaultProvider="CornerStoreProvider">
这个就不只可以有不同的价格了,它还意味着可以有完全不同的功能。
第四部分:包装起来
ASP.NET 2.0 System.Web.Security.ActiveDirectoryMembershipProvider
和System.Web.Security.SqlMembershipProvider之间的差别可以作为通过同样一个接口暴露完全不同功能的例子,他们的每个对象都有完全不同的功能,但它们都通过System.Web.Security.Membership对象来暴露同样一个API,这样就有利于编码。
现在我们大概了解了Provider模式的工作原理了,我们甚至可以写一个自己的MembershipProvider。如果我们想要这个MembershipProvider从XML文件获取信息而不是活动目录或是SQL,我们要声明以下类并为基类定义好抽象方法:
class XmlMembershipProvider:
System.Web.Security.MembershipProvider
{
}
讲了这么半天,希望你能了解Provider模式及其工作原理。在很多情况下我们也许可以通过.NET框架现有的API来实现自己的Provider,如果你有兴趣在ASP.NET 2.0中看看自定义的Provider,请参考MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNETProvMod_Intro.asp