Provider Modal

    所谓Provider Modal,基本上都是指的“DataSource Provider Modal”。它是一种让你能够方便的提供多种数据源,并可以“动态”的在各个数据源间进行切换的一种模式。
    在ASP.NET 2.0中,大量采用了Provider Modal模式。比如,Personalization和Membership是ASP.NET提供的内置的能够给开发人员极大方便的特性,它们能够自动保存用户的个性化信息,和维护站点用户信息。它们都需要一种存储方式,就是说,需要找一个数据源来保存他们的数据。但是这个数据源的提供方式,需要有非常大的灵活性、伸缩性、可定制性。比如,我的服务器可能没有安装SqlServer,只安装了MySql,但是我希望不管我的实际的数据库是什么类型(或者根本就没有条件安装大型数据库,而只能提供Access的方式进行保存),都能够作为Personalization和Membership所能使用的数据源,都能保存它们需要保存的数据。
    这个时候,Provider Modal模式就可以大展身手了。首先,MemberShip对于能够保存它的数据的Data Provider提出一个要求,比如必须实现+接口,而这个接口里面定义了保存MemberShip系统中的数据所需要实现的所有方法,比如“CreateUser(String username, String password, String email, out MembershipCreateStatus status)”用来创建新用户,“Boolean ChangePassoword(String name, String oldpassword, String newpassword)”用来修改用户密码。我们要做的,就是针对MySql写一个MySqlMembershipProvider,实现IMembershipProvider要我们实现的所有接口,然后在web.config文件将我们写的这个MySqlMembershipProvider指定给MemberShip用。而对于MemberShip系统来说,它不用关心倒是是谁实现了IMembershipProvider,它只是根据web.config里面的设置,载入那个具体的实现IMembershipProvider的对象,然后调用IMembershipProvider定义的接口方法就可以了。这样我们就拥有了极大的灵活性,可以根据自己的要求定制满足自己需要的Data Provider。
    上面所说的,就是Provider Modal模式了。在很多的场合,在我们需要一个很大的灵活性的数据存储方式多样化的场合,我们可以应用这个模式,让我们的系统变得灵活而具有可扩展性。能够想到的包括Log纪录、Cache保存、用户State状态保存等等,只要我们开始做的时候就明智的应用Provider Modal模式,那么也就给了以后扩展的机会。
    好像很简单,呵呵,但是掌握更多的实现规范才能更好的实现它。更多的细节和实现规则,请参看Rob Howard的文章。上面ASP.NET 2.0 Personalization和Membership特性,来自《A First Look At ASP.NET 2.0》。

你可能感兴趣的:(Provider)