欢迎光临
我们一直在努力

Provider Model 模式-.NET教程,评论及其它

建站超值云服务器,限时71元/月

这篇文章的思想的来源是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版本。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Provider Model 模式-.NET教程,评论及其它
分享到: 更多 (0)