ASP.NET 2.0提供了几个非常强大的功能,包括membership, roles, personalization和profiles,它们都是基于provider的。.NET 2.0默认的provider是SQL Server Providers,而且它也是唯一的内置provider。也就是说,如果我们想使用ASP.NET 2.0提供的强大功能,必须安装SQL Server。就国内而言,大多数中小型网站和个人网站使用的都是Access 数据库,因为购买SQL数据库空间的费用是比较昂贵的。
Access providers
实际上,.NET 2.0允许我们开发自己的provider,我们甚至可以开发一个使用XML作为数据库的provider。微软为开发者提供了大量的文档,如果你安装了.net framework 2.0 SDK,只需要键入provider搜索,就能找到详细的开发文档。同时,MSDN上也有一个在线的AProvider Toolkit,上面除了开发文档,还有不少专家发布的文章。当然了,自己定制一个provider要编写大量代码,对初学者而言还是有一定难度的。
幸运的是微软公布了一个Access providers的源代码,并提供免费下载。
它是作为一个参考实例放在AProvider Toolkit里的,这个实例名为Sample Access Providers。你可以在AProvider Toolkit页面上找到它,它在右侧一栏的Downloads下,点击下载你会得到一个文件名为sampleaccessproviders.vsi的模板安装文件。
准备工作
要想在网站中使用Access providers,至少要经过三个步骤:1、创建一个Access数据库,这个数据库包含provider必须的结构。当我们使用SQL Server Providers的时候,相应的SQL Server数据库是由.NET 2.0运行时自动创建的,而Access数据库则需要我们手动创建。2、编写实现provider功能的逻辑代码。3、配置网站,告诉.NET 2.0运行时使用Access providers代替默认的SQL Server Providers。
实际上,我们只需要三个文件就足够了:一个包含特定字段和关系结构的Access数据库,一个实现具体功能的程序集,一个包含特定配置的web.config文件。而这三个文件我们都将从sampleaccessproviders.vsi中得到。
下面我们就开始解剖sampleaccessproviders.vsi,把它大卸八块,找到所需的三个文件。
首先把sampleaccessproviders.vsi的后缀改为zip并解压,得到两个文件,其中一个名为ASP.NET Access Providers.zip,把它也解压,在所得文件中就可以找到ASPNetDB.mdb和web.config这两个文件。
所得文件中还有一个名为Samples的文件夹,在这个文件夹的子文件夹AccessProviders里有七个C#源代码文件,用C#编译器(如何使用C#编译器)把它们编译成SampleAccessProviders.dll,就大功告成了。建议大家编译程序集时把程序集命名为SampleAccessProviders.dll,如果使用其它名称,要修改web.config文件中相应的配置。
现在,其它文件都可以删除了,只保留这三个文件:
ASPNetDB.mdb | 模版数据库,包含必要的字段和关系 |
SampleAccessProviders.dll | 包含必要的运算逻辑 |
web.config | 配置文件,指定SampleAccessProviders作为网站的provider |
当然,那七个源代码文件也有保留价值,通过它们你可以了解SampleAccessProviders的原理,今后,你可以对它们加以改造,重新编译,以实现某些附加的功能,比如清除用户时清除该用户在其它数据库中的数据记录。
创建基于SampleAccessProviders的网站
打开Visual Web Developer Express Edition,新建一个网站,用我们得到的那个web.config文件替换新建项目中自动创建的那个,把ASPNetDB.mdb添加到项目的App_Data文件夹里,把SampleAccessProviders.dll 文件添加到Bin 文件夹里。此时解决方案资源管理器将显示成这样:
最后,我们测试一下新的provider。打开刚才创建并修改好的网站,从主菜单中选择 “网站|ASP.NET配置”,打开asp.net网站管理工具,选择“提供程序”选项,点击“为每项功能选择不同的提供程序(高级)”链接,可以看到,成员资格提供程序使用的是AccessMembershipProvider,而角色提供程序使用的是AccessRoleProvider:
这说明Access provider已经在网站中起作用了,并且运行正常。现在你不但可以使用Asp.net网站管理工具,而且可以在Visual Web Developer Express Edition中使用登录控件了。
附件:点击下载
1、SampleAccessProviders.dll的源代码文件
2、编译好的SampleAccessProviders.dll
3、模板数据库ASPNetDB.mdb
4、模板配置文件web.config