星期一, 八月 07, 2006

[翻译]配置ASP .NET 2.0 应用服务来使用SQL Server 2000 or SQL Server 2005

原作:Scott Guthrie 翻译:Ryan Chung
原文地址:http://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx

过去几周以来,有个问题我被大家问过了许多次:“我怎么设置新的ASP.NET Membership,角色管理(Role Management)以及个性服务(Personalization Service)来使用一般的SQL Server,而不是SQL Express?” 这篇Blog将带你通过一些简单的步骤了解如何完成这个设置。

快速浏览:什么是新的ASP .NET 2.0 应用服务

ASP .NET 2.0 包括一些内建的“生成区”(Building Block)应用服务。我们叫做他们“生成区”是因为他们都是有用的核心框架,用来形成当今Web应用的超级大众的解决方案。并且,最终能够为开发人员提供非常高的生产效率和节省时间的方法。


他们包括:一个Membership API 来管理用户名/密码,管理安全证书;一个 Roles API 可以支持将用户映射到逻辑组;一个profile API 用来储存浏览网站的授权和匿名用户的任意属性(例如:他们的邮编,性别,主题参数等等);一个Personalization API 用来储存控制用户参数(这个是最常被用于WebPart的特性);一个Health Monitoring API 用来追踪和收集运行状态和Web程序产生的任何错误信息;一个Site Navigation API 用来定义一个用于程序的层次并且构建浏览UI(菜单,树状图,以及其他的一些小东西),这样可以将上下文的细节基于用户在站点中目前所处的位置。

ASP .NET 应用服务API 被设计成可插入式的,并且不可以被实现,意思就是API不能看见储存他们的实现细节。相反,API通过调用“providers”——这是一些类来实现特殊的“提供合同(provider contract)”,并且被定义为一个抽象类,其中包括一个方法/属性集,这样API才能够实现。

ASP .NET 2.0 发行了一些内建的提供者,包括:对应本地SQL Express 数据库的SQL Express 提供者,对应完整的SQL Servers的 SQL 2000/2005提供者,对实现应活动目录(Active Directory)或者活动目录应用模式(Active Directory Application Mode)的活动目录提供者,对于在文件系统中建立XML文件来浏览网站的XML提供者。

这个模式的优美体现在,如果你不喜欢目前的提供者,或者你想要在正使用的数据存储文件中集成这些API,那么你可以启用一个提供者并且把它插入到系统中。例如:你可能已经有了一个数据库,存有用户名/密码,或者你有的是一个LDAP(Lightweight Directory Access Protocol
)系统,你想将他们整合到一起。那么你只需要实现MembershipProvider 合同(contract)作为一个类,并且注册到你程序的web.config文件(下面会详细介绍)中,并且在ASP.NET中都调用Membership API,这样就可以委派到你的代码中了。

默认的SQL Express 提供者

大多数ASP.NET 2.0的应用服务程序都使用内建的SQL Express 提供源者来配置。这个提供者将在你第一次使用其中的应用服务时,自动为你创建一个新的数据库,并且提供一个非常方便的开始方法,避免了许多设置麻烦(就只是在窗口中的SQL Express,你会很好的使用它)。注意SQL Express数据库也可以进行升级,来运行于完整的SQL Server 实例中,所以使用SQL Express 来建立程序可以在你的系统得到广泛成功之后,方便地升级到一个高容量,集成的,很少安全错误的8 处理器SQL系统中。

我如何将SQL Express提供源改变成为SQL Server提供源呢?

如果你想要使用完整地SQL Sever 2000或者 SQL Server 2005 数据库实例,而不是SQL Express, 你可以跟随一下步骤:

Step 1:新建或者得到一个空白地SQL 数据库实例
在这步中,你将创建或者得到一个到空白标准SQL数据库实例的连接字符串。

Step 2:给你的SQL数据库提供ASP.NET模式

在你的Winodws中打开命令行窗口,运行aspnet_regsql.exe程序,它同ASP.NET 2.0一起安装在你的目录C:\WINDOWS\Microsoft.NET\Framework\v2.0.xyz下。

注意这个程序可以在基于模式窗口或者使用命令行的界面间切换(可以添加一个-? 符号查看切换选项)。

使用向导你一个创建一个模式,表格和sprocs来内建SQL提供者来同ASP.NET 2.0一起工作。下面的画面将一步步地教你怎么做。


图1 向导开始


图2 选择第一个


图3 记得填写你的服务器和你要选择的数据库


图4 确认创建,执行一堆sql代码



图5 创建成功

一旦你按照向导完成了设置,所有的数据库模式和支持应用服务的sprocs都已经安装和调试完毕(注意:如果你的数据库管理人员希望清楚地知道到底发生了什么,我们同样可以提供先前framework目录下原始的.sql文件,你的数据库管理人员可以浏览这些文件,或者手动地运行他们来安装数据库)。

Step 3: 将你地web.config文件指向这个新的SQL 数据库

ASP.NET 2.0 现在你的web.config中支持一个新的字段叫做””,他被用来存储连接字符。这是一个非常好的东西,从数据库管理员的观点来看,新的ASP.NET Admin 和MMC嵌入现在都提供一个基于GUI的界面来控制和管理一下东西:


图6 IIS中的ASP.NET设置

ASP.NET 2.0 现在同样支持任何储存在web.config文件中字段的加密,所以现在同样可以安全地存储私人数据例如conectstrings,而不必自立编写任何加密代码。

ASP.NET 2.0 推出了一个内建地字符串叫做“LocalSqlServer”,它默认设置为使用SQL Express数据库,并且默认开启了使用Membership, Roles, Personaliztion, Profile 和 Health Monitoring。

最简单让你的程序自动利用你新创建SQL 数据库的方法,就是在你的本地 web.config 中代替这个“LocalSqlServer”设置的connectstring值。

例如,如果我在本地机器中创造我的数据库,实例名为“appservicedb”,并且使用Windows集成安全模式连接,我可以将我的本地web.config修改为:









点击保存后,所有内建的应用程序都将使用你新创建和定义的SQL Server 数据库。

注意:上面方法的弊端就是,我重新使用了“LocalSqlServer”连接字符串名称,如果或者当我在另外一台机器上部署我的数据库的时候,这个字符串让人感到有点怪异。如果我想要用我自己的连接字符串来命名“LocalSqlServer”,我可以通过添加一个完全新的连接字符串名称来实现,然后将现在的提供源指向这个新的连接字符串名称,进而代替默认的LocalSqlServer连接字符串。

我希望我说的这些有用。

Scott

P.S.在以后的Blog中,我将实际地使用前面提到的新API来实践


翻译后记:这篇文章,作者的英文水平垃圾的可以,虽然他是计算机高手,不过写作起来从句滥用,分词滥用,很难读懂,有使用了一些idioms,搞得我头大了。不过总算翻译完了。我选择这篇文章,主要是因为我遇到同样的问题。此人的博客不过,喜欢ASP.NET的朋友不妨经常去坐坐。

没有评论: