• ASP.NET2.0 Provider模型(二)


    本系列文章介绍了ASP.NET2.0的Provider模型,本文是第二部分,原文请参考如下链接:
    http://www.dotnetbips.com/articles/displayarticle.aspx?id=493

       在第一部分,我们学习了
    ASP.NET Provider模型的基本概念,本文将概述ASP.NET内置Provider模型的框架结构。具体的说我们将讨论MembershipProvider模型

     

    membership Provider的基础类

     
    先看一下下面这张图





         正如您所看到的,所有
    Provider模型的基础类都是ProviderBaseProviderBase类驻留在system.configuration.dll 集里的System.Configuration.Provider命名空间里,该类被标记为abstract,它能够作为模板提供给继承者使用。该类的一个重要的方法是Initalize()。该方法通常用来从配置文件web.config里读取配置的信息并初始化Provider模型

     

        MembershipProvider类驻留在System.Web.Security命名空间里,该类是由ProviderBase类继承而来的,并增加了成员关系所需要的特性方法和属性(这些方法和属性是建立和管理用户专用的),该类同样被标记为abstract。


      最后,
    SqlMembership类驻留在System.Web.Security 命名空间,它是从MembershipProvider类派生。这是一个具体的类,它可以执行从ProviderBaseMembershipProvider定义的专门用于执行SQL Server数据库的属性和方法。


    其它的
    Provider

       类似的类继承关系可以在诸如SQL RoleSQL Profile Provider模型里看到。例如SQL Role Provider继承模型的链接链如下:

    ProviderBase-->RoleProvider-->SqlRoleProvider

     

    SQL Profile Provider的继承模型链接链如下:

    ProviderBase -> SettingsProvider -> ProfileProvider -> SqlProfileProvider

     

    是选择抽象类还是选择接口

        ASP.NET2.0你可以看到微软在设计指导方针的变更。在.NET2.0以前的版本里,他们通常更多的依赖接口来为框架的类提供模板模型,例如ADO.NET1.X里的数据Provider类就是执行了常规的共通接口(IDbConnection,IDbCommand等)。尽管ADO.NET2.0继续支持这些接口,但是这可能是为了兼容的原因。 

       在
    ADO.NET2.0里,他们更喜欢选择抽象类。Provider就是使用了抽象类。 不是利用接口生成的模板而是选择抽象类,可能的原因我感觉是:

     抽象类可以执行某些功能而接口则不能

     接口定义后将不便于更改,因为变更将破坏从该接口定义的类的。

     使用抽象类,基类可以不干扰子类

     

      总结:文本深入介绍了ASP.NET Provider模型,在本系列的下一部分,我们将使用第一,二部分的知识来自定义自己的Membership模型

     

     

     

  • 相关阅读:
    bzoj 1257: [CQOI2007]余数之和sum 数论
    codevs 1063 合并果子 STL 优先队列
    HTTP错误code大全
    URL中的特殊字符处理笔记
    单例中懒汉和饿汉的本质区别
    关于静态方法的使用方式
    111
    WebService 简单安全验证
    WebService安全解决方案—简单握手协议
    RESTEasy使用json返回的例子
  • 原文地址:https://www.cnblogs.com/mqingqing123/p/392667.html
Copyright © 2020-2023  润新知