下载首页 | 资讯中心 | 文章分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 绿色软件 | 汉化补丁 | |
文章搜索: 分类 关键字
您的位置:首页编程开发网络编程 → 深入ASP.NET 2.0的提供者模型
深入ASP.NET 2.0的提供者模型
来源:天极yesky 作者: 加入时间:2006-10-27 访问次数:14 [  ]



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组件中。
上一页 [1] [2] [3] [4] 下一页
评论人 评论内容摘要(共 0 条,查看完整内容) 得分 0 发表时间
 热点文章
·惊爆!《暗黑破坏神3》将对应全平台
·《荣誉勋章:太平洋之战》中文版上市
·MediaShow魅力四射快速制作音乐电子相册
·《花木兰》完美流程攻略
·轻松可爱 最新10大Q版网络游戏推荐
·2006年暑期新宣布免费网络游戏一览
·photoshop制作水晶球中的精灵
·NVIDIA发布Forceware 93.71 WHQL驱动
·经验分享 微软Word2007实用技巧两则
·国内新记录产生 1M super pi运算仅用9秒
 推荐文章
·微软高官爆料:欧盟对Vista哪些功能不安
·在Google Talk上与QQ、MSN好友聊天
·Word使用过程中的常见问题及其解决
·手把手教你内存终极变相“造假”大法
·NVIDIA联手海盗船 推出自动超频内存
·Windows Vista特殊功能介绍:语音识别
·公安机关检验软件样本 流氓软件制造者面临坐牢危..
·比英特尔UMPC还要小 移动PC新品推出
·性感暴力完美结合 御姐武戏X新画面
·盖茨访谈:我就是微软里的兼职员工
WinXP下载基地 版权所有 Copyright© 2006-2008 WWW.WinXpd.COM, All Rights Reserved. 页面维护: WinXP下载基地(WinXP基D)