站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 网络编程 > NET专区 > 正文

 深入ASP.NET 2.0的提供者模型(2)
  2008年02月20日15:12:58  评论(0条) 字体:[ ]
相关热点: 模型 深入 实现 WebForums.NET
     借助于这一架构,我可以通过一系列抽象基类来定义系统的功能,并使用SQL Server 2000和Users表来提供这些类的具体实现。满足这一配置的客户可以只管使用该应用程序,并且一切将工作良好,且不需要他们编写一行代码。然而,那些需要定制的开发者们可以通过创建他们自己的派生自适当的抽象基类的类来实现。通过简单地把该程序集放到应用程序的/bin目录并更新Web.config文件,他们可以让系统使用这个新类。具体地说,WebForums.NET发行中带有一个抽象基类DataProvider,它清楚地列举出了系统中的所有方法,类似如下:
  
  
  
  public abstract class DataProvider
  {
  public abstract bool AuthenticateUser(string username,string password);
  public abstract User GetUserInfo(string username);
  ...
  public static DataProvider Instance()
  {
  ...
  }
  }
  
  
  
    AuthenticateUser(username,password)和GetUserInfo(username)方法是系统定义的许多方法中的两个方法的代表。而静态Instance()方法是该DataProvider类的主要实现;它包含检查代表了WebForums.NET配置信息(该信息指示系统要使用的类的全称限定名)的Web.config文件的代码。然后,该方法使用反射(和缓冲)来创建该类的一个实例并且把它返回到系统。
  
    WebForums.NET发行中还带有一个派生自DataProvider基类的SqlDataProvider类,这个类提供分类方法的具体实现。例如,SqlDataProvider的所有方法都可以操作存储于一个SQL Server 2000数据库中的数据;与用户相关的方法可以与一个预定义的Users数据库表一起工作。一个想改变后端功能的客户可以创建他自己的派生自DataProvider的类,这些信息都可以展示于Web.config文件中(指明应该使用他们的定制类)。例如,WebForums.NET中的Web.config可能包括下列内容:
  
  
  
  <WebForumsSettings>
  <add key="DataProviderAssemblyPath" value="path" />
  <add key="DataProviderClassName" value="Namespace.Classname" />
  </WebForumsSettings>
  
  
  
    默认情况下,这个设置信息引用随同WebForums.NET一起发行的SqlDataProvider类。然而,如果一个客户创建他自己的API实现,那么他可以提供自己的类的细节,并且系统会自动地开始使用他的实现来创建默认实现。
  
    借助于这一架构,使用WebForums.NET的页面开发者可以使用如下所示的代码来认证一个用户:
  
  
  
  if (DataProvider.Instance().AuthenticateUser(username,password))
  //用户被认证
  else
  //用户名/口令无效!
  
  
  
    当调用DataProvider.Instance()方法时,上面的配置文件被检查并且返回适当类的一个实例。如果客户还没有创建他们自己的实现的话,这将是默认的SqlDataProvider类;而如果他们已经实现的话,它将是他们自己的类。一旦DataProvider.Instance()方法返回一个适当的提供者实例,我们就可以简单地调用该API的成员(在这个例子中是AuthenticateUser())。
  
    WebForums.NET提供者模型-一个早期的原型
  
    相对于微软建议使用的提供者模型,Andy的提供者模型含有一些不足。一方面,WebForums.NET中提供了单个抽象基类,所有的API定义都聚集在这个类中。其负面作用在于,如果一个客户仅想定制系统的一小部分,例如用户信息的存储方式,那么他必须提供该系统中所有方法的实现。一种更好的方案是,为系统中的每一个逻辑实体创建一个抽象基类。例如,对于一个在线消息板应用程序来说,它可能需要一些类,如UsersProvider,ForumsProvider,PostsProvider,等等。然而,在你提供给一个客户的提供者数目之间也存在一个平衡问题。更多提供者允许更为细致的系统定制,但是也会相应地提高要求的配置标记的数量。
  
    另外,我已经展示了对WebForums.NET的提供者模型实现代码的作了进一步改进,以便使其更相似于微软在ASP.NET 2.0中所使用的代码。我认为,Andy的想法应该是提供者模型的先驱,尽管微软的提供者模型实现更为清晰且更强壮一些。
  
    一方面,WebForums.NET在2002年三月为微软所收购;另一方面,Rob Howard及其他人又在系统中加入了大量的新特征并且在ASP.NET论坛中以自由方式发行它。Today Rob及其小组成员已经把ASP.NET论坛变成了一个Community Server(它简直把博客、论坛、画廊、列表服务器、新闻阅读器等全部融为一体)。今天,Andy所创建的概念与实现被广泛应用于ASP.NET论坛和Community Server中,甚至被应用于许多核心ASP.NET 2.0组件中。
  
  
    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。



收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
windows 2008中文版iis7+asp+php+Acces
贴吧发帖机使用教程(绝对原创)
超强弹出窗口代码,什么都挡不住
Windows Vista局域网网络连接设置
JSP语法(6)
FLASH视觉特效实例之地震效果
关于数据分页(转自www.codeproject.co
教你如何在Vista中设置麦克风
不用Photoshop 在线恶搞大头像
全国哀悼日网友自发QQ隐身上线 向死难
淘宝网卖家公然叫卖“艳照门”照片集
抗震救灾/鱼目混珠?
Google绿色专家质疑黑色背景网页节省资
阿里妈妈广告卖主全攻略
电影小说类相关关键字搜索量列表
爆笑 阿里就这样把亿告征服!
大脚:实战单页面优化关键词之——淘宝
国内各IT企业办公环境揭秘(多图)
心系灾区,点燃希望——手机QQ2008祈福
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
ECSHOP模板下载
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
编程中国全站采集规则
http://www.mt86.com全站采集规则
性福联盟 一个不尊重站长的联盟
百度网络广告利润增长将会持续多久
大脚:日赚100元—揭露最新firefox欺骗
分享经验:个人网站如何月赚1万!
大脚:垃圾站超级赚钱法之二—突破“站
迅雷联盟、快车联盟收入对比
大脚:垃圾站超级赚钱法之——前言
Google Adsense的秘密 第二版
风险投资公司vc联系方式名录大全(一)
经理人必看的十个管理网站
站长学院  网页设计 建站教程 图形图象 网络编程

制定完整的网站
制定完整的网站
中国企业网站的
中国企业网站的

网站运营之怎么样来粘住你的用
网麒:网站建设创意
怎样提高网页快照更新
两种方法,教你如何通过微软正
英文网站优化细节
利用SSL加密增强FTP服务器的安
网页设计常用Javascript经典代

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13156089008