摘要:描述如何建立新的 ASP.NET 成员关系、角色管理和个性化服务,从而使用常规的 SQL Server 代替 Microsoft SQL Server Express。
注本文最初发表于 Scott 的网络日记。请在此处加入讨论。
快速回顾:新的 ASP.NET 2.0 应用程序服务是什么? | |
默认的 SQL Express 提供程序 | |
小结 |
Microsoft ASP.NET 2.0 包含许多内置的“构造块”应用程序服务。我们称其为“构造块”的原因是,它们是有用的核心框架,从而能够在超常情况下用于当前的 Web 应用程序 — 因此,它们可以大大提高生产效率并节约开发人员的时间。
这些构造块包括:
• | 成员关系 API(用于管理用户名/密码和安全凭据)以及角色 API(支持将用户映射到逻辑组)。 |
• | 配置文件 API,用于存储访问 Web 站点的已验证用户和匿名用户的任意属性(例如,邮编、性别、主题首选项等)。 |
• | 个性化 API,用于存储控件自定义首选项(通常与 ASP.NET 2.0 中的 WebPart 功能一起使用)。 |
• | 状态监视 API,用于跟踪和收集有关运行状态的信息和 Web 应用程序内部发生的任何错误。 |
• | 站点导航 API,用于定义应用程序内部的层次结构,以及根据当前传入用户在站点内的位置来构建特定于上下文的导航 UI(菜单、树视图、详细路径跟踪)。 |
ASP.NET 应用程序服务 API 可插接且实现过程不可知,这意味着,API 不对数据存储位置的详细信息进行硬编码。相反,API 调入“提供程序”,而“提供程序”是实现特定“提供程序约定”(定义为一个抽象类,具有 API 期望实现的一组定义好的方法/属性)的类。
ASP.NET 2.0 随附有许多内置提供程序,包括:
• | 针对本地 SQL Express 数据库的 Microsoft SQL Server Express 提供程序。 |
• | 针对成熟的 SQL Server 的 Microsoft SQL Server 2000/2005 提供程序。 |
• | 针对 AD 或 ADAM 实现的活动目录提供程序。 |
• | 绑定文件系统上 XML 文件的 XML 提供程序(用于站点导航)。 |
该模型的优势在于,如果您不喜欢随附的现有提供程序,或者希望针对已经使用的现有数据存储集成这些 API,那么只需实现一个提供程序并将其插入模型即可。例如:您或许已经有一个存储用户名/密码的现有数据库,或者一个需要集成的现有 LDAP 系统。只需将成员关系提供程序约定实现为一个类,并在应用程序的 web.config 文件中注册(后文将详细说明),然后对 ASP.NET 中成员关系 API 的所有调用将委托给代码。
坦白说,大多数 ASP.NET 2.0 应用程序服务均配置为使用内置的 SQL Express 提供程序。在第一次使用一个应用程序服务时,该提供程序将自动创建和提供一个新的数据库,并提供一种非常简单的入门方法,而无需过多的安装步骤(只要有 SQL Express 就可以进行)。请注意,SQL Express 数据库也可以升级为在成熟的 SQL Server 实例上下文中运行。因此,使用 SQL Express 进行开发的应用程序可轻松升级为高容量、集群的故障转移安全 8P SQL 盒,与此同时所开发的应用程序将迈向更大的成功。
如何将提供程序从使用 SQL Express 更改为使用 SQL Server?
如果要使用成熟的 SQL Server 2000 或 SQL Server 2005 数据库实例(而不是 SQL Express),可按照以下步骤执行:
步骤 1:创建或获取一个空白的 SQL 数据库实例
步骤将创建或获取一个连接字符串,该字符串指向一个空的标准 SQL 数据库实例。
步骤 2:提供您的 SQL 数据库和 ASP.NET 架构
在系统中打开一个命令行窗口,并运行与 ASP.NET 2.0 一起安装的 aspnet_regsql.exe 实用工具,该实用工具位于 C:\WINDOWS\Microsoft.NET\Framework\v2.0.xyz 目录。
请注意,该实用工具可以在基于 GUI 的模式下运行,也可以与命令行开关一起运行(添加一个“-?”标记即可查看所有开关选项)。
通过这个向导,您能够演练如何为 ASP.NET 2.0 随附的内置 SQL 提供程序创建架构、表格和存储过程。图 1 至图 5 展示循序渐进的演练过程。
图 1. SQL Server 安装向导,欢迎屏幕
图 2. SQL Server 安装向导,配置应用程序服务
图 3. SQL Server 安装向导,选择服务器和数据库
图 4. SQL Server 安装向导,确认设置
图 5. SQL Server 安装向导完成
演练向导完成后,将安装和配置所有支持应用程序服务的数据库架构和存储过程。(注:我们还提供了上述框架目录下的原始 .sql 文件,如果 DBA 想要确切知道内部发生的事情,可以手动演练和/或运行这些文件来安装 DB。)
步骤 3:使 Web.config 文件指向新的 SQL 数据库
现在,ASP.NET 2.0 支持 web.config 文件中一个名为 的新区段,它(显然)用于存储连接字符串。从管理角度看,好处之一是现在新的 ASP.NET MMC 管理单元可提供一种基于 GUI 的方式来配置和管理这些连接字符串(如图 6 所示)。
图 6. ASP.NET 管理页面中的连接字符串
ASP.NET 2.0 现在还支持加密任何存储在 web.config 文件中的区段,因此您可以安全地存储私人数据(例如,连接字符串),而不必编写任何加密代码。
ASP.NET 2.0 随附有一个名为 LocalSqlServer 的内置连接字符串,默认情况下,它配置为使用 SQL Express 数据库,以及成员关系、角色、个性化、配置文件和状态监视等服务。
让应用程序自动利用新创建的 SQL 数据库的最简单的方法是,在应用程序的本地 web.config 中,替换该 LocalSqlServer 设置的连接字符串值。
例如,如果我在本地计算机的 appservicesdb 数据库实例中创建了数据库,并使用 Windows 集成安全进行连接,那么我将更改本地的 web.config 文件来指定这项操作。
<configuration> <connectionStrings> <remove name="LocalSqlServer"/> <add name="LocalSqlServer" connectionString="Data Source=localhost; Initial Catalog=appservicesdb; Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>
单击“保存”,现在所有的内置应用程序服务都会使用新创建和新定义的 SQL Server 数据库。
注这种方法的一个缺点是,重用了 LocalSqlServer 连接字符串名 — 如果我在另一台机器上部署数据库,将感觉很别扭。如果想将它命名为自己的连接字符串名,只需添加一个全新的连接字符串,然后指定现有提供程序使用新的连接字符串名来代替默认的 LocalSqlServer 连接字符串。
虽然 ASP.NET 2.0 提供的应用程序服务默认使用 SQL Server 2005 Express,但是将其更改为使用 SQL Server 2000 或 2005 是一件相当简单的事情。一旦进行更改,您就能够享受这些数据库引擎的功能所带来的优点了。