理解Asp.net 提供者模型(第1部分)

译自 Understanding ASP.NET Provider Model – Part 1
  引言
ASP.NET包含了许多新的特征,例如成员资格(Membership)、角色(Roles)、特性(Profiles)。这些特征都是基于提供者模型(Provider Model)的。此系列文章将揭示提供者模型内部的奥秘,并且帮助你创建自定义的提供者。
我们首先解释隐含在提供者模型后面的关系,看看它是如何解决程序员面临的问题的。
 
为什么需要提供者模型
让我们先来理解对于提供者模型有什么样的需要。
以典型的用户注册和登录系统为例。这个系统允许你创建、管理、认证用户。程序员编写数据库访问的所有必要的代码。例如,为了认证用户,需要创建一个登录页面。当用户输入登录证书时,将向数据库提交一个查询,以检查证书是否有效。根据返回的结果,确定允许还是拒绝用户访问站点。
到目前为止,一切看起来如愿以偿。但是,你有没有想过,你会多少次重复写这段代码呢?几乎每一个商业应用开发,你都要重复相同的步骤。乍看起来,你可以使用传统的技术来重用代码—拷贝粘贴和组件。确实如此,这样做在一定范围内是可行的,但是如果底层的数据库模式发生变化,或者认证模式发生完全的改变,那样就做不行了。当然,你可以对再次对代码进行修改来解决这个问题。我们能不能在应用中提供一个通用的层屏蔽底层数据库和处理逻辑呢?这正是提供者模型所要解决的问题。

提供者模型
提供者模型
上面的图形描述了提供者模型的层次。在最底层是物理层数据存储,它是存储真实数据的地方。数据存储可能是SQL SERVER、Access或者Oracle等其它数据库。
数据存储并不会直接由你的代码来调用。为了与应用相隔离,所有的访问和数据存储都需要由提供者类来管理。举个例,如果你正在通过SQL SERVER来使用成员资格特征,你就可以使用SqlMembershipProvider类,它屏蔽了数据库逻辑。你可以创建自己的提供者来包含自定义的实现。
物理层之上是成员资格(对于其它提供者,有相应的类,如特性、角色等)。用户接口使用成员资格类来进行工作。成员资格用户接口可以形成一个网页,或者内嵌到象登录、创建用户向导控件之中。成员资格类依次调用真正的提供者类。
提供者模型使用了简单的方法调用--CreateUser()和ValidateUser()来完成用户创建和认证。简单而且简洁,不是吗?
 
ASP.NET2.0中的提供者
ASP.NET 2.0中有如下提供者:
成员资格提供者(Membership Provider):用于认证网站的用户。
角色提供者(Role Provider):用于给网站的用户授权。
特性提供者(Profile Provider):用于使站点能够由用户进行个性化设置。
站点地图提供者(SiteMap Provider):用于网站的站点地图。
会话状态存储提供者(Session State Store Provier):用于底层的会话存储
可以看出,它们使程序员的工作变得简单。它们可以在web.config文件中进行配置,以指向你的数据库。
 
总结
这篇文章粗略地浏览了ASP.NET 2.0中的提供者模型。在下一部分,你将看到ASP.NET内部如何实现这些提供者的。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值