
深入ASP.NET 2.0的提供者模型
发布时间:2006-08-24 14:55:02 来源:天极开发 网友评论 0 条
一、 引言
早在2001年,我就着手开发一个ASP.NET在线消息板应用程序WebForums.NET。其目的是创建一个基于ASP.NET的消息板系统,而且该系统可以容易插入到一个现有网站中。构建这样一个端对端应用程序的特别挑战之一就是,要为客户提供一种方式以便能够把它集成到他们自己的系统中去。例如,一个在线论坛明显需要使用某种数据存储来存储用户信息、论坛、回寄信息等;但是,最好不要把客户锁定到一种特定的数据存储中。也就是说,你不应该说,"我的应用程序必须使用微软的SQL Server 2000";因为这样的话,使用Oracle或Access的客户怎么会使用你的软件呢?
另一个集成到客户现有数据中的问题是,所有的在线论坛站点都提供用户帐户和一种创建新帐户的方式。典型情况下,这被建模为一个论坛架构(以一个数据库中的Users表形式存在)。但是,客户很可能已经有他们自己的拥有成千的用户帐户的数据库表。或者,一个客户可能想在一个内部网设置中使用该论坛,并且想使用活动目录而不是某种数据库表来认证和存储用户信息。因此,当一个论坛软件系统创建一个Users数据库表并对其客户说"这就是你存储用户的方式"时,那些已经拥有现有基础结构和用户数据的客户很可能会疏远这样的软件。
因此,当你使用一种"僵硬"的API构建一个系统时,会产生特别的挑战。一种"僵硬"的API不是提供一种方式来定制逻辑而是硬编码实现细节(例如,你必须使用SQL Server作为你的后端数据存储,且在这个数据库有一个Users表,并将在其中存储所有的用户信息)。然而,通过使用提供者设计模式,你可以轻易地打破这种"僵硬"性。借助于提供者设计模式,系统架构师只需要定义API,至于编程功能则由系统来提供。对于一个在线论坛应用程序来说,这可能包括一个具有例如Authenticate(username,password)和GetUserDetails(username)等方法的Users类。
提供者模型的优秀在于客户实现方案可以指定一个系统应该使用的定制类。这种定制类必须实现系统的良好定义的API;但是,它允许无缝地插入任何定制实现。也就是说,一旦定义这个API,系统实现者可以创建一个使用SQL Server和一个Users表的默认的具体实现-大多数客户可以直接使用之而不必要作任何修改。那些有定制需要的客户(他们想使用Oracle或以另外一些方式存储用户数据)可以创建他们自己的类,该类提供必要的功能并且把它们插入到这些客户的系统中。
其实,提供者设计模式被应用于整个ASP.NET 2.0实现中。当然,网上也存在一些如何在ASP.NET 1.x应用程序中使用这一功能的教程。
在本文中,我们将详细探讨提供者模型并分析如何把它应用于ASP.NET 2.0开发中。
早在2001年,我就着手开发一个ASP.NET在线消息板应用程序WebForums.NET。其目的是创建一个基于ASP.NET的消息板系统,而且该系统可以容易插入到一个现有网站中。构建这样一个端对端应用程序的特别挑战之一就是,要为客户提供一种方式以便能够把它集成到他们自己的系统中去。例如,一个在线论坛明显需要使用某种数据存储来存储用户信息、论坛、回寄信息等;但是,最好不要把客户锁定到一种特定的数据存储中。也就是说,你不应该说,"我的应用程序必须使用微软的SQL Server 2000";因为这样的话,使用Oracle或Access的客户怎么会使用你的软件呢?
另一个集成到客户现有数据中的问题是,所有的在线论坛站点都提供用户帐户和一种创建新帐户的方式。典型情况下,这被建模为一个论坛架构(以一个数据库中的Users表形式存在)。但是,客户很可能已经有他们自己的拥有成千的用户帐户的数据库表。或者,一个客户可能想在一个内部网设置中使用该论坛,并且想使用活动目录而不是某种数据库表来认证和存储用户信息。因此,当一个论坛软件系统创建一个Users数据库表并对其客户说"这就是你存储用户的方式"时,那些已经拥有现有基础结构和用户数据的客户很可能会疏远这样的软件。
因此,当你使用一种"僵硬"的API构建一个系统时,会产生特别的挑战。一种"僵硬"的API不是提供一种方式来定制逻辑而是硬编码实现细节(例如,你必须使用SQL Server作为你的后端数据存储,且在这个数据库有一个Users表,并将在其中存储所有的用户信息)。然而,通过使用提供者设计模式,你可以轻易地打破这种"僵硬"性。借助于提供者设计模式,系统架构师只需要定义API,至于编程功能则由系统来提供。对于一个在线论坛应用程序来说,这可能包括一个具有例如Authenticate(username,password)和GetUserDetails(username)等方法的Users类。
提供者模型的优秀在于客户实现方案可以指定一个系统应该使用的定制类。这种定制类必须实现系统的良好定义的API;但是,它允许无缝地插入任何定制实现。也就是说,一旦定义这个API,系统实现者可以创建一个使用SQL Server和一个Users表的默认的具体实现-大多数客户可以直接使用之而不必要作任何修改。那些有定制需要的客户(他们想使用Oracle或以另外一些方式存储用户数据)可以创建他们自己的类,该类提供必要的功能并且把它们插入到这些客户的系统中。
其实,提供者设计模式被应用于整个ASP.NET 2.0实现中。当然,网上也存在一些如何在ASP.NET 1.x应用程序中使用这一功能的教程。
在本文中,我们将详细探讨提供者模型并分析如何把它应用于ASP.NET 2.0开发中。
推荐阅讯
- ASP.NET服务器控件之控件状态
- ASP.NET中编程杀死进程
- 10天学会ASP.net之第三天
- ASP.NET2.0数据库入门之SqlDataSource
- 如何充分利用ASP.NET 2.0预编译
- ASP.NET 2.0 中的母版页详解
- 用VB.NET为智能设备编写半自动初始化类
- 10天学会ASP.net之第五天
- ASP.NET 2.0移动开发入门之基础
- 用.NET Framework 2.0创建Form设计器
阅读排行
- 1.用ASP.NET 2.0设计网络在线投票系统
- 2.在ASP.Net 2.0中实现多语言界面的方法
- 3.轻松加密ASP.NET 2.0 Web程序配置信息
- 4.在ASP.NET中使用AJAX的简单方法
- 5..NET 2.0中的企业库异常处理块简述
- 6.面向.NET开发人员的Ajax 技术平台策略
- 7.揭开ASP.NET中Cookie编程的奥秘
- 8.ASP.NET2.0服务器控件之创建自定义控件
- 9.ASP.NET2.0中Gridview中数据操作技巧
- 10.ASP.NET 2.0发送电子邮件全面剖析之二
专题教程
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
