帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程
Provider Model 模式
作者:kanyboy 发布时间:2005-03-12 来源:ASPCOOL
     这篇文章的思想的来源是Rob Howard半月前的一篇文章,《Provider Model Design Pattern and Specification, Part 1》,本来想等Rob H把Part II写完然后再一起总结一下的,可等啊等啊,估计这位哥们儿在忙着准备DevDay2004和做演讲,所以一直都没有等到Part II出来。不过Rob Howard在MSDN上的文章从来都是精品,而且这篇文章之前很长一段时间,由于忙着Whidbey的开发,Rob H已经很久时间没有在MSDN上的专栏撰写文章了,所以这篇文章出来的时候甚至被MS的人士称为“Return of the King”,呵呵。
  
  
  
  言归正传。所谓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提出一个要求,比如必须实现IMembershipProvider接口,而这个接口里面定义了保存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 Modal的极佳范例,ASP.NET Forum 2.0,现在仍处于Alpha阶段,预计月底发布Beta和Final版本。
  
  http://blog.joycode.com/kaneboy/

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·在Whidbey中实现Provider  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统