针对应用程序需要,选择适当的会话状态提供程序 ASP.NET 为存储应用程序的会话数据提供了多种方法:进程内会话状态、作为 Windows 服务的进程外会话状态和 SQL Server 数据库中的进程外会话状态。(您还可以创建自定义会话状态提供程序,以在所选数据存储区中存储会话数据。)每种方法都有自己的优点,但进程内会话状态是迄今为止速度最快的解决方案。如果只在会话状态中存储少量易失数据,则建议您使用进程内提供程序。进程外会话状态选项用于跨多个处理器或多个计算机缩放应用程序,或者用于您希望在服务器或进程重新启动时保留会话数据的情况。有关更多信息,请参见 ASP.NET 会话状态。
数据访问
下列准则提供了在应用程序中有效进行数据访问的建议。
将 SQL Server 和存储过程用于数据访问 在 .NET Framework 提供的所有数据访问方法中,使用 SQL Server 进行数据访问是生成高性能、可缩放 Web 应用程序的推荐选择。使用托管 SQL Server 提供程序时,可通过尽可能使用编译的存储过程而不是 SQL 命令获得额外的性能提高。有关使用 SQL Server 存储过程的信息,请参见将存储过程用于命令。
将 SqlDataReader 类用于快速只进数据游标 SqlDataReader 类提供了从 SQL Server 数据库检索的只进数据流。如果您可以在 ASP.NET 应用程序中使用只读流,则 SqlDataReader 类提供比 DataSet 类更高的性能。SqlDataReader 类使用 SQL Server 的本机网络数据传输格式从数据库连接直接读取数据。例如,当绑定到 SqlDataSource 控件时,通过将 DataSourceMode 属性设置为 DataReader,您将获得更好的性能。(使用数据读取器会导致某些功能的丢失。)另外,SqlDataReader 类实现 IEnumerable 接口,该接口也使您可以将数据绑定到服务器控件。有关更多信息,请参见 SqlDataReader 类。有关 ASP.NET 如何访问数据的信息,请参见通过 ASP.NET 访问数据。
尽可能缓存数据和页输出 ASP.NET 提供了一些机制,它们会在不需要为每个页请求动态计算页输出或数据时缓存这些页输出或数据。另外,通过设计要进行缓存的页和数据请求(特别是在站点中预期将有较大通讯量的区域),可以优化这些页的性能。与使用 .NET Framework 的任何其他功能相比,适当地使用缓存可以更好地提高站点的性能。
在使用 ASP.NET 缓存时,应注意以下事项。首先,不要缓存太多项。缓存每个项都有内存开销。不要缓存容易重新计算和很少使用的项。其次,给缓存项分配的有效期不要太短。很快到期的项会导致缓存中不必要的周转,并且会导致额外的代码清除和垃圾回收工作。使用与“ASP.NET Applications”性能对象关联的“Cache Total Turnover Rate”(缓存总流通率)性能计数器,您可以监视缓存中由于项到期而导致的周转。高周转率可能说明存在问题,特别是当项在到期前被移除时。(这种情况有时称作内存压力。)
有关如何缓存页输出和数据请求的信息,请参见 ASP.NET 缓存概述。







