DavidJGu's Blog

       尼采说,宁可追求虚无也不能无所追求!  Keeping is harder than winning
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET 操作指南白皮书(转)

Posted on 2005-05-09 16:36  Let's DotNet  阅读(462)  评论(0编辑  收藏  举报
from: http://www.microsoft.com/china/technet/itsolutions/net/maintain/netopsgd.asp

.NET 操作指南

白皮书
作者:Fernando G. Guerrero

摘要

操作各种基于 Microsoft .NET 框架的应用程序和软件解决方案对 IT 专业人员提出了新的挑战。.NET 框架的一个基本目标是提供与现有 Windows 操作工具的无缝操作和集成。但是,掌握有关操作 .NET 应用程序的各种技术可以极大地提高系统性能和可靠性。本《.NET 操作指南》介绍了有关管理基于 Microsoft .NET 框架的应用程序和组件的信息和准则,还提供了指向相关文档的链接,读者可以从这些文档中了解到更详细的信息。

本白皮书是对整套 .NET Web 服务白皮书的补充,这套白皮书还包括《.NET 部署指南》、《保护 .NET Web 服务》、《使用 .NET 进行互操作》和《.NET 部署的性能优化》。

可以将本文档作为模板,以编写各种基于 .NET 框架解决方案的特定 IT 系统的操作指南。本《.NET 操作指南》主要是为 IT 管理员和 IT 支持工程师编写的,目的是帮助他们管理和操作为 .NET 框架开发的各种应用程序和组件并进行故障排除。不过,本指南并不提供有关如何操作 Windows 基础结构或特定 .NET Enterprise Server 的综合信息,它们已超出了本文档的讨论范围。可以在以下 TechNet 网址中查看 Windows 2000 操作指南系列:http://www.microsoft.com/technet/prodtechnol/windows2000serv/maintain/opsguide/opsguide.asp

MSDN 和 TechNet 都提供了有关 .NET Enterprise Server 的操作指南。可以分别在以下 Web 站点中查看这些指南:http://msdn.microsoft.comhttp://www.microsoft.com/technet/default.asp。也可以在以下网址中查看《SQL Server 操作指南》:http://www.microsoft.com/technet/prodtechnol/sql/maintain/operate/opsguide/default.asp

.NET 操作简介

从概念上讲,操作基于 .NET 应用程序和组件的计算机系统和操作其他 IT 系统没有什么不同。基于对信息系统进行系统设计、开发、部署与维护的直接体验,Microsoft 企业服务 (ES) 提供了一系列框架,这些框架共享可应用于任何 IT 系统生命周期的所有阶段的准则和最佳做法。Microsoft 操作框架 (MOF) 就是其中的一个框架,本《.NET 操作指南》就是以这些准则为基础。

MOF 和企业服务

MOF 是最佳做法、原则和模型的集合。它为建立在 Microsoft 产品和技术上的解决方案和服务实现任务关键的生产系统可靠性、可用性、支持性和可管理性提供了全面的技术指导。

Microsoft ES 中的每种框架都侧重于 IT 解决方案生命周期的特定阶段,并提供了有关如何评估与 IT 解决方案生命周期特定阶段有关的过程、团队以及风险的详细准则。

图 1 显示了每个框架及其在总体企业服务策略中的作用。

 

图 1   Microsoft 企业服务框架

MOF 侧重于生命周期的最后阶段:生产环境中 IT 解决方案的成功操作。

企业服务框架与 IT 生命周期

计划

虽然 Microsoft 合作伙伴与 Microsoft 业务价值服务不是任何特定 ES 框架的组成部分,它们仍可以使用特定工具来帮助规划 IT 基础结构,设定项目的优先顺序以及准备常规环境,以便成功地完成特定项目中所涉及的许多活动。这些工具以课件、白皮书、模板和指南的形式发布。您可以从网址 http://www.microsoft.com/business/services/enterprise.asp 找到有关 Microsoft ES 的详细信息。

Microsoft 提供了正式课件,这对于学习任何 IT 解决方案计划阶段所需的技巧非常有用。这些课程并不专门针对于 .NET 框架,但是它们所介绍的技术完全适用于所有 .NET 解决方案。目前正在编写侧重于 .NET 解决方案的新课程;但是以下两门课程提供的培训与所有 IT 解决方案的计划阶段直接相关:

准备

IT 系统管理员可通过使用 Microsoft 准备工作框架,使个人和组织做好使用 Microsoft 产品和技术的准备工作。此外,Microsoft 认证合作伙伴也已做好准备,通过利用技巧准备过程来帮助组织解决这些需求。这些合作伙伴提供了评估和准备工作计划工具、学习指南、与准备工作相关的白皮书、自定进度的培训、课程、认证考试和准备事宜。有关 Microsoft 准备工作框架的详细信息,请参阅 http://www.microsoft.com/technet/ittasks/plan/teamops/319mrfpm.asp

Microsoft 也在许多其他课程中提供 .NET 开发培训。可以从以下网址中找到有关这些课程的信息:http://www.microsoft.com/traincert/training/developer/default.asp

此外,Microsoft 为 .NET 开发人员提供了两个新的认证:

建立和部署

Microsoft 解决方案框架为项目生命周期的规划阶段、建立阶段和部署阶段提供指南。本指南涉及企业体系结构、应用程序开发、组件设计和基础结构部署等方面,其形式有:白皮书、部署指南、案例分析、工具、模板以及课件。可以通过网址 http://www.microsoft.com/business/services/mcsmsf.asp 了解 Microsoft 解决方案框架的详细信息。

Microsoft 提供下列有关 Microsoft 解决方案框架的课程:

操作

MOF 包括一套综合的操作指南,其形式包括白皮书、操作指南、评估工具、操作工具包、最佳做法、案例研究以及支持工具,这些操作指南分别介绍了在当今复杂的分布式 IT 环境中有效地管理生产系统所需的人员、过程和技术。

Microsoft 提供下列有关 MOF 的课程:

.NET 生命周期中的 .NET 操作

MOF 过程模型由 4 个高度集成的操作活动象限组成。MOF 象限包括以下 4 项:

  • 更改
  • 操作
  • 支持
  • 优化

正如我们在本白皮书下一部分中所看到的一样,每个象限都有其独特的服务任务,并通过执行特定的服务管理功能来实现其任务。每个象限均涉及一系列服务管理功能 (SMF)。在 MOF 过程模型中介绍了这些服务和功能的定义。定义执行该过程模型中所描述活动的角色与职责是非常重要的,MOF 团队模型可用于定义这些角色和职责。

.NET 解决方案操作过程从配置特定 .NET 解决方案所涉及的系统和应用程序开始。“操作”象限包含在执行和管理 .NET 解决方案时所进行的活动。支持操作涉及多个过程,用于检测系统上的问题和可能需要改进的地方。

在操作和支持 .NET 应用程序期间获得的经验为完善和优化应用程序设计提供了非常有用的反馈。新的设计将产生更优化的应用程序,而更优化的应用程序又可以进行更有效的操作和支持,这就是为什么将这 4 个象限视为一个动态循环的原因,因为动态循环每经过一次新的循环都会进一步完善系统。

要完成 MOF 过程模型,您需要进行特定的管理审查以评估每个象限的有效性。管理审查包括:

  • 版本准备工作审查
  • 操作审查
  • 服务等级协议 (SLA) 审查
  • 版本批准审查

可以使用 MOF 过程模型中介绍的准则来组织 .NET 解决方案部署和操作中涉及的各项操作,例如:

  • .NET 解决方案的常规操作
  • .NET 解决方案的认证过程
  • 用户验收的评估
  • .NET 解决方案从测试环境到最终生产环境的模拟调试过程
  • 与其他系统和服务集成

.NET 服务管理功能

每个象限都包含不同的任务,常规 MOF 准则将这些任务定义为每个象限的服务管理功能 (SMF) 集合。大多数 SMF 都与 .NET 应用程序的操作直接相关,例如:

  • 配置管理
  • 安全管理
  • 作业调度
  • 服务台
  • 事件管理
  • 容量管理

可以通过网址 http://www.microsoft.com/business/services/MOFpmdetail.asp 了解有关服务管理功能的详细信息

.NET 操作角色与职责

MOF 团队模型定义了角色和每个角色的相关职责以实现每个 SMF 的目标。每个角色可以参与多个 SMF,而且每个象限需要多个角色共同参与。

在基于 .NET 应用程序、组件和服务的系统操作中,我们可以标识以下角色:

  • 版本角色:版本管理员、通信协调员、文档协调员、部署协调员、测试协调员、配置管理员
  • 操作角色:网络管理员
  • 安全角色:安全管理员
  • 支持角色:服务台管理员
  • 基础结构角色:培训管理员、可用性管理员、容量管理员

对于任何 IT 系统,要进行有效的操作,必须明确地定义角色和职责。可以从网址 http://www.microsoft.com/business/services/MOFteam.asp 了解正式 MOF 文档中介绍的这些角色的职责。

.NET 解决方案中每层的特定操作管理

管理一个基于 .NET 应用程序和组件的系统涉及到许多不同的任务,这些任务因系统层而异:

  • 网络基础结构管理
  • 数据存储管理
  • ASP.NET 应用程序管理
  • .NET Web 服务

本白皮书在后面的部分中分别介绍了这些系统层。.NET 框架也可以用来实现独立的 Windows 应用程序和联网的 Windows 应用程序。它们的操作与标准 Windows 应用程序的操作没有多大差别。但是,.NET 框架引入了一些关键的差异,本白皮书将在以下各部分中对它们进行详细的介绍。通过使用这些准则,您可以为特定的 .NET 解决方案编写操作指南。

使用性能监视器监视 .NET 应用程序

.NET 框架公开了几个可以用性能监视器(系统监视器)监视的对象和计数器。可以从 http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfperformancecounters.asp 找到 .NET 应用程序使用的性能计数器的完整列表。

通过使用此工具,您可以按图形方式显示应用程序使用系统资源的方式,如内存利用率和发生的异常数量。

可以从“开始”菜单启动此工具,但其在菜单目录树中的位置因安装的操作系统而异。也可以从命令提示窗口直接运行它,或按照以下方式运行它:

  1. 单击“开始”按钮以显示“开始”菜单,然后选择“运行”。
  2. 键入 Perfmon.exe(如图 2 所示),然后单击“确定”。

     

    图 2   从“开始”菜单启动性能监视器

    此时,性能监视器只显示默认的计数器。

  3. 在工具栏中单击“添加”图标(加号),然后选择要显示的性能计数器,此时 .NET 计数器将出现在列表的开头(如图 3 所示)。


    如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 3   在性能监视器中添加 .NET 计数器

.NET 向导

.NET 框架提供了三个向导以帮助您完成常见任务。这些向导是 ConfigWizards.exe 工具的一部分,该工具位于目录 %Windir%\Microsoft.NET\Framework\%.NETversion%(例如 C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\ConfigWizards.exe)。

此工具属于“管理工具”组,可以从“开始”菜单进行访问。在启动该程序后,将会看到下面的窗体(如图 4 所示):

 

图 4   .NET 向导

调整 .net 安全性

通过使用第一个向导“调整 .net 安全性”,您可以给当前用户或整台计算机调整应用于每个区域的安全级别。这些设置将会影响 .NET 应用程序从 Internet、本地 Intranet、相同计算机中的其他可用资源或局域网访问资源的方式。通过使用此工具,您需要先选择要调整哪些设置(本地计算机或当前用户),然后将看到 Internet Explorer 熟悉的 Internet 设置界面,可以在此界面上调整每个区域的安全级别(如图 5 所示)。


如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 5   调整每个区域的安全级别

信任程序集

可以使用此工具调整特定程序集的安全级别。要实现此操作,可执行以下步骤:

  1. 单击“信任程序集”图标。
  2. 选择更改本地计算机或本地用户,然后单击“下一步”。
  3. 输入要信任的程序集的路径或 URL,然后单击“下一步”。
  4. 选择此特定程序集的信任级别(如图 6 所示)。注意,如果对特定程序集选择“完全信任”,就会给此程序集授予完全访问所有资源的权限。在移动滑块时,请仔细阅读每个级别的说明。


    如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

    图 6   信任程序集

  5. 在确认页中单击“完成”,或者返回到上一页以调整信任级别。

这是一种“蛮横”的方法,除非万不得已,否则不要使用这种方法。使用正确的安全判断编码技术是首选方法,因为您可以完全控制特定用户和用户组能够使用哪些功能。但是,当您需要运行特定应用程序,而且没有权限更改基于代码的安全控制时,此工具可以快速地解决该问题。

修复应用程序

图 7 所示的 .NET 应用程序恢复工具可以从特定保存点恢复应用程序策略设置,或者将应用程序置于安全模式以进行进一步的测试。但是,您应该知道将应用程序置于安全模式可能会产生安全问题或行为问题,因为应用程序在这种模式下会忽略任何发行商的策略。


如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 7   恢复应用程序配置设置

.NET 网络配置

此工具是一个 Microsoft 管理控制台 (MMC) 管理单元(称为 mscorcfg.msc)。它位于 .NET 框架默认目录中:

C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\mscorcfg.msc,可以从“管理工具”菜单组中访问此工具。

可以使用此工具执行以下任务:

  • 程序集
    • 管理全局程序集缓存中的程序集
    • 配置全局程序集缓存中的程序集
  • 远程处理
    • 调整远程处理服务
  • 安全性
    • 查看当前的 .NET 框架安全配置
    • 提高程序集信任
    • 调整区域安全性
    • 评估程序集
    • 创建部署程序包
    • 重置所有的策略级别
  • 单独的应用程序
    • 使用此工具查看以前配置的应用程序
    • 使用此工具添加要配置的应用程序
    • 查看应用程序的属性
    • 查看应用程序的程序集相关性
    • 配置应用程序的程序集
    • 调整应用程序的远程处理服务

有关此工具以及如何执行分步任务的详细信息,请访问 http://msdn.microsoft.com/library/en-us/cptools/html/cpconnetframeworkadministrationtoolmscorcfgmsc.asp

图 8 显示了整个目录树以及此工具的所有可用选项。


如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 8   使用 .NET 框架配置工具完成的主要任务

管理 .NET 网络基础结构

.NET 解决方案的操作指南至少应包含两个图表:

  • 物理网络拓扑图,显示支持 .NET 解决方案所涉及到的网络组件的分布情况。
  • 逻辑流程图,以透视图的方式显示所有的软件组件。此图提供了一个不同的网络拓扑透视图,但两个视图之间应有足够的联系以显示它们的内在关系。此图的主要目的是用于显示不同的组件及其现有的相关性。

操作指南应该介绍网络的逻辑设计,包括内部基础结构和 Internet 连接(如下所示):

  • DNS 基础结构
  • 所有服务器的 IP 配置

应该将 Internet 网络配置定义为只支持有效运行指定服务所需的客户端和协议。启用额外不必要的协议和服务将增加服务器的系统开销,并且对用户没有任何好处。

主要网络操作的详细说明超出了本白皮书的讨论范围。有关网络操作的其他信息和特定指南,请参阅以下网址中的《网络管理操作指南》:http://www.microsoft.com/technet/prodtechnol/windows2000serv/maintain/opsguide/netadmog.asp

管理 SQL Server

通常,Microsoft SQL Server 是大多数 .NET 解决方案必不可少的组成部分,如果 SQL Server 操作不当,则可能会影响 .NET 解决方案的整体性能。SQL Server 使用一种称作 SQL Server 代理的特殊服务,通过定义操作员、警报和作业来执行在 SQL Server 中最频繁发生的自动管理过程。SQL Server 作业引擎提供了一个具有多种功能的编程环境,可以在其中使用 Transact-SQL 语言以及该服务器可用的任何其他脚本语言(通常为 VBScript 和 JScript)来编写复杂的作业。

SQL Server 提供自己的备份功能以保证系统安全和灾难恢复,您应该确保设置的备份策略能够保证系统灾难恢复。正确的备份策略与用于连续检查(确保恢复过程正常工作)的测试过程同等重要。

SQL Server 操作的详细说明超出了本白皮书的讨论范围。有关常规 SQL Server 操作的详细信息,请参阅以下网址中的 SQL Server 2000 操作指南:http://www.microsoft.com/technet/prodtechnol/sql/maintain/operate/opsguide/default.asp

管理 ASP.NET 应用程序

ASP.NET 提供了一个丰富又灵活的配置系统,它可大大地简化基于 .NET 的系统的操作。所有配置信息都存储在基于 XML 的文本文件中,因此可以使用任何文本编辑器方便地修改这些文件,而无需重新编写应用程序代码。

每个应用程序目录都可以有其自己的配置文件(称为 web.config),并管理存储在该目录及其任何子目录中的 ASP.NET 应用程序配置设置。子目录中的任何配置文件都可以将配置设置添加到父目录中的相应配置文件中,配置文件也可以覆盖设置以禁止继承特定的设置。

特殊配置文件 machine.config 可以给整个 Web 服务器提供配置设置。您可以在以下目录中找到该文件:%runtime install path%\Config\Machine.config。在下面的示例中,此文件的位置是 C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\CONFIG\machine.config,其中 v1.0.3705 是安装的 .NET 运行库版本。

以下示例说明了 ASP.NET 是如何应用配置继承的。

  1. 用户启动下面的 ASP.NET 应用程序:

    http://www.sqlclient.net/SalesReports/Year2002/SalesJune.aspx

  2. ASP.NET 浏览 SalesReports 虚拟目录以确定此文件的物理位置。
  3. ASP.NET 搜索位于该物理目录中的任何 web.config 文件。
  4. 随后,ASP.NET 搜索位于 Year2002 子目录中的任何 web.config 文件,如果该文件存在,就会将该配置设置与上一步找到的配置设置合并。
  5. 然后,ASP.NET 缓存此配置信息,以便在以后执行同一应用程序或该逻辑目录中的其他应用程序时使用。

注意,如果另一个用户请求以下 URL:http://www.sqlclient.net/GeneralReports/SalesReports/Year2002/SalesMay.aspx,而该 Year2002 目录恰好与前一个目录是相同的物理目录,则得到的配置设置可能是不同的。原因是在这种情况下,ASP.NET 需要在以下级别合并在 web.config 文件中找到的配置设置:

  • GeneralReports 虚拟目录所指向的物理目录。
  • SalesReports 子目录。
  • Year2000 子目录。

ASP.NET 检测对配置文件所做的更改,并自动将新的配置设置应用于受更改影响的 Web 资源。您无需重新启动服务器,更改就能生效。如果层次结构中的配置文件发生变化,就会自动重新计算并重新缓存层次结构配置设置。<processModel> 部分是个例外。

ASP.NET 配置 Microsoft Internet Information Server (IIS) 以明确禁止浏览访问这些配置文件,您应该检查这些文件的所有其他访问路径以免受到安全威胁。

此 .NET 系列部署白皮书详细介绍了可以在 web.config 文件中找到的各种配置设置。可以在以下网址中找到有关 ASP.NET 配置文件的详细信息:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconaspnetconfiguration.asp

监视 ASP.NET 应用程序

ASP.NET 为每个应用程序单独提供一个性能计数器,并提供一个全局计数器来监视整个 ASP.NET 系统。

要查看这些对象,请遵循以下步骤:

  1. 按本文前面所述,运行 perfmon.exe 应用程序。
  2. 在工具栏中单击“查看报告”图标(类似于记事本的图标)或按 Ctrl+R 键。
  3. 单击“添加”图标(加号)或按 Ctrl+I 键。
  4. 在“性能对象”下拉列表中,选择“ASP.NET 应用程序”。
  5. 选择“所有计数器”“从列表中选择计数器”(如果您只对特定计数器感兴趣,则选择后者)。
  6. 现在,可以选择要监视的特定 ASP.NET 应用程序(从列表中选择实例),或者选择所有 ASP.NET 应用程序的合计性能计数器(所有实例)。单击“添加”按钮将选定的计数器添加到报告中(如图 9 所示)。

     

    图 9   将 ASP.NET 应用程序计数器添加到性能监视器中

  7. 可以添加与整个 ASP.NET 系统相关的计数器(通过 ASP.NET 性能对象),或选择与特定 ASP.NET 应用程序相关的计数器(通过 ASP.NET 应用程序性能对象)。如果您选择 ASP.NET 应用程序对象,则可以指定要监视的应用程序,或者检索全部 ASP.NET 应用程序的合计计数器(使用 _Total_ 实例)。但是,如果您选择 ASP.NET 性能对象,则不能选择特定的应用程序实例,因为这些计数器全部来自 ASP.NET 系统(如图 10 所示)。

     

图 10   将 ASP.NET 计数器添加到性能监视器中

注意,如果在系统上安装了多个版本的 .NET 框架,则可以从特定版本选择性能计数器,如图 11 所示,该图有两个不同的版本(1.0.3215.14 和 1.0.3705.0)。在这种情况下,ASP.NET 性能对象与 ASP.NET v1.0.3705.0 相同,而 ASP.NET 应用程序性能对象与 ASP.NET Apps v1.0.3705.0 相同。


如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 11   通过性能监视器公开的 .NET 性能对象

在选择完性能对象和计数器后单击“关闭”,就可以看到如图 12 所示的报告。


如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 12    报告性能监视器中的 .NET 计数器

通过选择工具栏中的其他图标,您可以将此信息显示为图表 (Ctrl+G) 或直方图 (Ctrl+B)。

应该注意的一些重要计数器包括:

  • Physical Disk\reads/secPhysical Disk\writes/sec。这两个计数器是常规计数器,但可以使用它们提供的关键信息检测存储系统中的物理瓶颈。
  • Process: ASP.NET\% Processor Time。如果此计数器的数值高,则意味着应该将 ASP.NET 工作负荷分配给多个服务器(例如,在 Web 群中)。注意,在多处理器服务器中将该值除以处理器数,即可得到每个处理器的实际工作负荷。
  • Process: ASP.NET\Private Bytes。此计数器应该和“Application Running”计数器一起监视。如果应用程序数量保持不变,但“Private Bytes”计数器随时间的推移而增加,则在某些 ASP.NET 应用程序中可能存在内存泄漏。
  • ASP.NET Applications\Requests/sec。此计数器提供了 ASP.NET 子系统实际工作负荷的精确度量信息。

基本上,这些选定的计数器提供检测主要系统组件中潜在问题的信息:CPU、内存和存储器。可以在以下网址的 MSDN 的 ColdStorage 应用程序示例中找到有关如何使用这些性能计数器的例子:

http://msdn.microsoft.com/library/en-us/dncold/html/storcpctyplan.asp

工作负荷分配和 ASP.NET 应用程序

如果预计 ASP.NET 应用程序的请求数量很大,则应该考虑安装一个由运行 Windows 网络负载平衡 (WNLB) 的 Web 服务器组成的 Web 群。如果这样做,则可以向您的用户公开一个虚拟访问点,并且 WNLB 将在 Web 群的所有成员之间透明地分配工作负荷。

ASP.NET 在保存会话状态方面具有很高的通用性,这可解决在 Web 群中运行旧式 ASP 应用程序时遇到的大多数问题。可以使用特定应用程序的 web.config 文件来指定如何保存状态。可用选项包括:

  • InProc.:InProc 模式将数值存储在 ASP.NET 辅助进程的内存中。因为此进程不涉及进程间通信,所以此模式提供了最快捷的方法在 ASP.NET 中存储状态。但是,如果由于某种原因,工作线程重新初始化或者用户会话命中 Web 群中其他服务器,则所有状态信息会丢失殆尽。下面的示例显示了如何在 web.config 文件中设置此选项。

    <configuration>

       <system.web>

          <sessionState mode="Inproc"

                   cookieless="true"

                   timeout="20" />

          </sessionState>

       </system.web>

    </configuration>

  • StateServer。此模式使用一个称为 ASP.NET 状态服务(或 aspnet_state)的独立 Windows 服务来维护有关会话状态的信息。如果 ASP.NET 应用程序在特定会话期间回收其辅助进程,则该状态是安全的,因为没有将它存储到给该辅助进程分配的本地内存中。要提高可伸缩性,您可以将会话状态存储到其他服务器上,ASP.NET 状态服务将会保存此信息。为此,您只需要知道该服务器的名称和此服务使用的 IP 端口(默认端口为 42424)即可。这种模式还有另外一个优点:在重新启动 IIS 时会话状态不会丢失,但是这种进程间通信将产生一些系统开销,因此其效率不如 InProc 模式。如果系统具有一个 Web 群,则将会话状态存储在其他服务器上通常是最佳解决方案。

    <configuration>

       <system.web>

          <sessionState mode="StateServer"

             stateConnectionString="tcpip=stateserver.mydomain.com:42424"

                cookieless="false"

             timeout="20" />

          </sessionState>

       </system.web>

    </configuration>

    可以在注册表中的以下注册表项更改 aspnet_state 服务的默认端口:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port。

    可以使用控制面板中的“服务”小程序启动和停止 aspnet_service,也可以打开命令提示窗口并执行:

    Net start aspnet_state

    Net stop aspnet_state。

  • SqlServer。StateServer 允许在 Web 群中集中存储会话状态,但是 aspnet_state 服务不是关系数据库,并且缺少给大多数关系数据库系统提供可靠性的事务处理功能。可以使用 SQL Server 来保存会话。此进程不如 InProc 有效,因为需要将信息存储在不同进程中或存储在不同服务器上。但是,根据实际的工作负荷和数据库配置,它可能比使用 aspnet_state 服务更有效。可以在 web.config 文件中按如下方式指定此选项:

    <configuration>

       <system.web>

          <sessionState mode="SqlServer"

    sqlConnectionString="data source= mysql.mydomain.com;User id=StateUser;password=StatePassword;"

                   cookieless="false"

                   timeout="20" />

          </sessionState>

       </system.web>

    </configuration>

    记住,默认情况下用户不能浏览 web.config 文件,因此他们不能读取存储在此文件中的密码。但是,您应该确保此用户名和密码只能访问 ASPState 数据库(保存会话状态时必须使用该数据库),否则可能会产生潜在的安全威胁。

可以使用以下位置的 .NET 框架文件中包含的 InstallSqlState.sql 脚本来创建 ASPState 数据库:

C:\Windows\Microsoft.NET\Framework\v1.0.3705

(注意:应根据您的具体情况检查路径是否正确,因为在本示例中,Windows 安装在 C:\Windows 目录中,并且 .NET 框架的版本是 1.0.3705。)

要达到更高的可靠性,您可以在故障转移群集中设置 SQL Server,并保护会话状态以防给定 SQL Server 服务出现潜在故障。

可以在《.NET 部署的性能优化》白皮书中找到有关 ASP .NET 应用程序工作负荷分配的详细信息。

ASP.NET 应用程序故障排除

可以使用事件查看器查找 ASP.NET 应用程序生成的事件。也可以指定筛选器,以便在应用程序日志中只显示 ASP.NET 事件(如图 13 所示):

 

图 13   在事件查看器中创建筛选器以便只显示 ASP.NET 事件

提供的信息类似于图 14 所示的信息。


如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 14   在事件查看器中查看经过筛选的 ASP.NET 事件

跟踪 ASP.NET 应用程序

ASP.NET 提供了一个非常强大的工具,可通过跟踪调试语句来调试应用程序。可以从下面的 Web 站点了解此功能的详细信息:

http://msdn.microsoft.com/library/en-us/cpguide/html/cpcontracefunctionality.asp

但是,在生产服务器中应禁用此功能。可通过编辑该 ASP.NET 应用程序的 web.config 文件的 <system.web> 部分来禁用跟踪功能(如以下配置文件所示):

<configuration>

   <system.web>

      <trace enabled="false"

            pageOutput="true"

            requestLimit="15" />

   <system.web>

</configuration>

可以在《.NET 部署的性能优化指南》白皮书中找到有关跟踪 ASP.NET 应用程序的详细信息。

管理 .NET Web 服务

除了讨论的 ASP.NET 应用程序信息(在多数情况下也适用于 Web 服务)外,.NET 框架软件开发工具包还提供用于创建、部署和管理基于 .NET 框架的应用程序和组件的各种工具。这些工具的说明已超出了本文档的范围,但您可以通过下面网址的 .NET 框架 SDK Web 站点了解到这些工具的详细说明:

http://msdn.microsoft.com/library/en-us/cptools/html/cpconnetframeworktools.asp

监视 .NET Web 服务并排除故障

通过使用性能监视器,您可以访问某项 Web 服务(如 CPU 和内存利用率)的特定计数器。在某些情况下,您可以间接地监视 Web 服务活动,如查看 IIS Post Requests/sec 计数器以跟踪对虚拟服务器的请求。如果该服务器主要用作运行 Web 服务的中层服务器,则可通过该计数器了解 Web 服务的繁忙程度。

如果使用 HTTP 来发送对 Web 服务的请求,则可以使用 IIS 中包含的日志记录工具来监视来自 IIS 本身的这些请求。可以使用事件查看器来查看与特定 Web 服务有关的事件日志,如果此 Web 服务智能地使用 System.Diagnostics.EventLog 命名空间,则此信息通常对排除 Web 服务和 .NET 应用程序故障非常有帮助。例如,可以使用 EventLog 类搜索事件日志中的特定事件并将新事件写入到该事件日志中,这样提供的应用程序故障排除信息比 .NET 框架和其他 Windows 服务生成的标准错误信息要丰富得多。

应用程序调试是非常有用的故障排除技巧。但是,您应考虑在测试环境下调试 Web 服务,否则,您的生产系统将出现不能接受的(尽管可能是断断续续的)停机时间。在某些情况下,也可以使用跟踪技术仅在测试环境中调试应用程序,以免在生产服务器中产生不必要的系统开销。可以在下面的网址找到有关 Web 服务故障排除的详细信息:

http://msdn.microsoft.com/library/en-us/dnservice/html/service12192001.asp

分布式事务管理

如果 Web 服务使用 COM+ 的事务处理功能,则当它们使用自动事务处理时,可通过使用组件服务工具 (C:\WINDOWS\system32\Com\comexp.msc) 来访问有关这些事务处理的信息。可从“开始”菜单的“管理工具”中找到此工具(如图 15 所示)。


如果您的浏览器不支持嵌入式框架,请单击此处在单独的页中查看。

图 15   使用组件服务显示分布式事务处理统计信息

此工具不仅给出了系统中同时运行的事务处理数量,而且还给出了响应时间信息,您可以使用这些信息来优化事务处理系统。

Microsoft .NET 框架提供了一个功能强大且可靠的平台,可以在该平台上运行安全的、可伸缩的服务器应用程序和客户端应用程序。.NET 解决方案将其功能的重要部分建立在网络基础结构和后端服务的基础上,如 IIS、SQL Server 和其他 .NET Enterprise Server。本白皮书详细介绍了如何操作 .NET 应用程序及其相关 IT 系统。但是,一定要了解正确且一致的管理结构(如 MOF 建议的结构)的重要性,以便成功地操作基于 .NET 应用程序的 IT 基础结构。