首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

17.5  个性化提供程序

如本章前面的图17-1所示,个性化模型的中间层是个性化API层,它与一系列默认的数据提供程序交互。个性化模型默认使用Microsoft SQL Server Express Edition文件存储我们定义的个性化属性。我们不仅可以使用这个数据库,还可以使用Microsoft SQL Server数据提供程序处理Microsoft SQL Server 7.0、2000和SQL Server 2005。除了Microsoft SQL Server数据提供程序之外,如果这些数据库不能满足要求,该体系结构还允许用户创建自己的数据提供程序。

17.5.1  使用SQL Server Express Edition

Microsoft SQL Server数据提供程序可以使用新的SQL Server Express Edition文件。SQL Server数据提供程序是ASP.NET提供的个性化系统使用的默认提供程序。在与Visual Studio 2005一起使用时,IDE把ASPNETDB.MDF文件放在应用程序的App_Data文件夹中。

查看machine.config文件,注意个性化引擎是如何使用这个数据库的块。在LocalSqlServer文件的第一个引用中,可以在该文件的<connectionStrings>段中找到该文件的连接字符串,如程序清单17-22所示。

程序清单17-22  给SQL Server Express文件添加连接字符串

<configuration>

 

    <connectionStrings>

        <clear />

        <add name="LocalSqlServer"

         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;

         AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"

         providerName="System.Data.SqlClient" />

    </connectionStrings>

</configuration>

在这个例子中,定义了一个连接字符串LocalSqlServer。文件的位置由connectionString属性指定,它指向文件的相对路径。这表示,在每个利用新个性化功能的应用程序中,默认的SQL Server提供程序应位于应用程序的App_Data文件夹中,名称是ASPNETDB.MDF。

SQL Server Express文件的连接字符串通过这个<connectionStrings>段中的LocalSqlServer声明指定。在machine.config文件的<profile>段中可以看到个性化引擎对它的引用。<profile>段包含一个子段,其中列出了可用于该个性化引擎的所有提供程序,如程序清单17-23所示。

程序清单17-23  添加新的SQL Server数据提供程序

<configuration>

  <system.web>

        <profile>

            <providers>

                <add name="AspNetSqlProfileProvider"

                 connectionStringName="LocalSqlServer" applicationName="/"

                 type="System.Web.Profile.SqlProfileProvider, System.Web,

                   Version=2.0.0.0, Culture=neutral,

                   PublicKeyToken=b03f5f7f11d50a3a" />

            </providers>

        </profile>

  </system.web>

</configuration>

在这个例子中,使用<add>元素添加了一个提供程序。在这个元素中,connectionStringName属性指向程序清单17-22中<connectionString>属性内声明的内容。

可以指定一个完全不同的Microsoft SQL Server Express Edition文件,来替代在machine.config文件中指定的那个文件。首先,创建一个连接字符串,指向新的SQL Server Express文件,它是ASPNETDB.mdb文件的模板化版本。此时,可以使用<connectionString>指向这个新文件。如果在machine.config文件中修改这些值,位于服务器上的所有ASP.NET应用程序都会使用这个指定的文件。但如果只修改web.config文件,则只有使用该web.config文件的应用程序才会使用这个新数据库。服务器上的其他应用程序不会改变。

17.5.2  使用Microsoft的SQL Server 7.0/2000/2005

使用SQL Server Express文件处理个性化架构是相当容易的。但在处理性能和可靠性要求较高的大型应用程序时,就应使用SQL Server个性化提供程序和SQL Server 7.0、2000或2005。如果这个数据库可用,就应总是使用这个选项,而不是使用默认的SQL Server Express Edition文件。

如果通过SQL Server Express文件使用SQL Server个性化提供程序,就会觉得这很简单。个性化提供程序的工作是一流的,不需要任何设置或配置。但使用SQL Server个性化提供程序和SQL Server的完全版本就是另一番光景了。虽然这并不难,但在使用前必须建立和配置SQL Server。

ASP.NET 2.0提供了两种方式来为个性化架构建立和配置SQL Server。下面几节就介绍这两种方式。一种方式是使用ASP.NET SQL Server Setup向导,另一种方式是运行.NET Framework 2.0提供的一些SQL Server脚本。

提示:

有关ASP.NET SQL Server Setup向导的论述详见第14章。

要使用这个向导为ASP.NET 2.0个性化特性建立SQL Server,必须在Visual Studio 2005 Command Prompt中启动aspnet_regsql.exe,打开它。要打开Visual Studio 2005 Command Prompt,可以选择Start | All Programs | Visual Studio 2005 | Visual Studio Tools |Visual Studio 2005 Command Prompt。在命令提示行中输入 aspnet_regsql.exe,打开ASP.NET SQL Server Setup向导的GUI。如果按照该向导的步骤进行,就可以为许多ASP.NET系统建立SQL Server实例,包括个性化系统。

1. 使用SQL脚本安装个性化特性

另一个选项是使用这些工具和向导使用的SQL脚本。在C:\WINDOWS\Microsoft .NET\ Framework\v2.0.50727\中,可以使用 InstallPersonalization.sql和UninstallPersonalization.sql安装和删除脚本。运行这些脚本可以为数据库提供运行个性化架构所需要的表。在运行个性化脚本(或其他ASP.NET系统脚本)之前,必须先运行InstallCommon.sql脚本。

2.  为SQL Server 2000配置提供程序

现在已建立了SQL Server来使用ASP.NET 2.0提供的个性化功能,下一步是重新定义个性化提供程序,使之使用这个实例,而不是使用默认的SQL Server Express Edition文件。

在web.config文件中完成这个任务。这里要配置提供程序,把这个提供程序实例定义为要使用的提供程序。程序清单17-24中显示了在web.config文件的<profile>段中添加的内容。

程序清单17-24  连接SqlProfileProvider和SQL Server 2000

<configuration>

 

     <connectionStrings>

        <add name="LocalSql2000Server"

         connectionString="data source=127.0.0.1;Integrated Security=SSPI" />    

     </connectionStrings>

</configuration>

     <profile defaultProvider="AspNetSql2000ProfileProvider">

            <providers>

                <clear />

                <add name="AspNetSql2000ProfileProvider"

                 connectionStringName="LocalSql2000Server" applicationName="/"

                 type="System.Web.Profile.SqlProfileProvider, System.Web,

                   Version=2.0.0.0, Culture=neutral,

                   PublicKeyToken=b03f5f7f11d50a3a" />

            </providers>

                <properties>

                       <add name="FirstName" />

                       <add name="LastName" />

                       <add name="LastVisited" />

                       <add name="Age" />

                       <add name="Member" />

                </properties>

       </profile>

</configuration>

对这个配置定义的唯一修改是使用defaultProvider属性,给它指定一个值,即要使用的提供程序名,这里是新创建的SQL Server提供程序AspNetSql2000ProfileProvider。还可以对machine.config文件进行这样的修改,即修改<profile>元素,如程序清单17-25所示。

程序清单17-25  在machine.config文件中把SQL Server用作提供程序

<configuration>

  <system.web>

   ...

    <profile enabled="true" defaultProvider="AspNetSql2000ProfileProvider">

         ...

      </profile>

   ...

  </system.web>

</configuration>

这个修改将迫使服务器上的所有应用程序都使用这个新的SQL Server提供程序,来代替默认的SQL Server提供程序(除非这个命令在应用程序的web.config文件中被重写)。

17.5.3  使用多个提供程序

不仅可以使用单个数据库或提供程序,还可以使用任意多个提供程序。甚至可以为每个定义好的属性指定个性化提供程序。也就是说,可以给大多数属性使用默认的提供程序,让几个属性使用完全不同的提供程序,如程序清单17-26所示。

程序清单17-26  使用不同的提供程序

<configuration>

  <system.web>

     <profile

      defaultProvider="AspNetSqlProvider">

                <properties>

                    <add name="FirstName" />

                    <add name="LastName" />

                    <add name="LastVisited" />

                    <add name="Age" />

                    <add name="Member" provider="AspNetSql2000ProfileProvider"/>

                </properties>

       </profile>

  </system.web>

</configuration>

在这个例子中,指定了一个默认的提供程序AspNetSqlProvider。除非特别说明,否则就使用这个提供程序。改变这个设置的唯一属性是Member。Member属性使用一个完全不同的个性化提供程序。这里它通过<add>元素的provider属性使用Access提供程序(AspNetSql2000ProfileProvider)。通过这个属性可以为每个已定义的属性指定特定的提供程序。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论