UML软件工程组织

.NET 部署指南
 

摘要

Microsoft .NET 框架提出了一种新的软件开发规范,信息技术 (IT) 的从业者将会面临一些风险,即在他们现有基础结构上来管理和部署这些新的应用程序和组件。这份 .NET 部署指南为部署基于 Microsoft .NET 框架的应用程序和组件提供了信息和指南。该指南提供了成功部署 .NET 应用程序的详细描述,同时为读者提供了附加信息的链接。

*
本页内容
介绍 介绍
 .NET 框架概述 .NET 框架概述
创建一个部署项目规划 创建一个部署项目规划
在 Visual Studio .NET 中部署项目 在 Visual Studio .NET 中部署项目
部署 .NET 框架 部署 .NET 框架
>服务器端部署 >服务器端部署
>客户端部署 >客户端部署
部署 Web 服务 部署 Web 服务
部署 .NET 应用程序使用的 SQL Server 数据库 部署 .NET 应用程序使用的 SQL Server 数据库
总结 总结

介绍

这份 .NET 部署指南的主要阅读对象是 IT 经理、解决方案架构师,以及 IT 技术支持工程师,帮助他们部署为 .NET 框架开发的应用程序和组件。除了提供部署过程的技术细节,这份指南还提供了体系结构指南和示例,帮助解决方案架构师和系统架构师有效地支持新的平台。

这份指南并不提供关于 .NET 框架和 Visual Studio. NET 编程环境的全面信息。您可以从 .NET 框架 SDK 和 Microsoft Visual Studio .NET 的文档以及 MSDN Library Web 站点上 http://msdn.microsoft.com/nhp/default.asp?contentid=28000519 访问这些信息。

.NET 框架概述

.NET 框架是一个新的开发平台,它为局域网 (LAN) 和 Internet 上的分布式企业应用提供了一致和有效的支持。该平台的关键特性包括:

统一的、语言无关的、面向对象开发环境,充分利用开发者已有的编程知识

无冲突软件部署,避免组件的版本冲突

丰富的可执行模式,与存储位置无关,组件可以在本地存储执行,或者远程存储本地执行,或者在 Internet 上远程存储执行

安全代码执行,具有高级安全设置以满足现代组织的安全需求

Windows 和 Web 应用程序具有统一的编程环境

通过在各自环境中高效的代码编译提升 Windows 和 Web 应用程序的执行性能

兼容的通信标准,确保 .NET 应用程序可以与其它应用程序和其它平台的应用程序共存和集成

.NET 框架有两大部分

公共语言运行时 (CLR)

.NET 框架类库

CLR 的作用是作为运行和管理 .NET 代码的代理。该代理负责一些基础系统服务例如内存管理、线程管理、错误控制,以及类型安全。

开发者可以使用任何 .NET 兼容编程语言来编写程序,而相应的编译器会将它们都转换成中间语言 (IL) 。CLR 使用高效的即时编译 (JIT) 技术将语言无关的 IL 代码转换成特定设备的机器代码。

托管代码总是运行于编译模式,并为当前平台做了优化;但是,代码仍然受被托管以防止一般的执行错误。这种新的编程模型对于程序的运行提供了更加严格的控制,使得新的平台对于分布式应用程序来说更加健壮。

.NET 框架类库是一个全面的面向对象的类型集合,您可以使用它来开发任何应用程序、服务或组件。该类库取代了在 C++ 开发中普遍使用的 Microsoft 基础类库 (MFC) ,它被设计成易扩展的以便对其他服务提供面向对象的编程支持,这些服务例如 Microsoft Windows Server System 产品目前仅仅提供了专有的应用程序编程接口 (API) 。

.NET 框架开启了在 Internet 上共享组件的大门。该技术使用了 Web 服务,因此不仅可供基于 Windows 的应用程序访问,也可供运行于其它平台上的应用程序使用,只要该应用程序使用了 Internet 标准如 TCP/IP 、 HTTP 、 XML ,以及 SOAP 。

用 .NET 框架开发的应用程序仍然可以使用 COM 组件,以充分利用以前开发的投资。但是,这种能力也带来一些性能上的损失,因为需要在两种标准之间互相转换。因此,将 COM 组件移植成 .NET 的托管代码能够极大地提升性能。

体系结构图

图 1 中的图可以在 .NET 框架程序员指南中找到,该图也是 MSDN (http://msdn.microsoft.com/library/en-us/cpguide/html/cpovrintroductiontonetframeworksdk.asp) 的一部分。

该图显示了三种不同的应用程序开发方案:

在 CLR 下运行托管代码的程序

运行非托管机器代码的程序

在 ASP.NET 下运行托管代码的 Web 应用程序和 Web 服务

.NET 框架托管应用程序能够与非托管应用程序共存于同一台机器上。根据所选的编程语言,可以按需求编写托管和非托管代码。

Figure 1: .NET architecture diagram

图 1:.NET 体系结构图
查看完整的图像。

开发者可以用 .NET 框架设计很多不同类型的应用程序,例如:

Windows 应用程序

类库

Windows 控件库

ASP.NET Web 应用程序

ASP.NET Web 服务

Web 控件库

控制台应用程序

Windows 服务

安装项目

Web 安装项目

Visual Studio .NET 插件

这些应用程序需要不同的部署过程,本文重点介绍主要的可选方案。

.NET 程序集

为了简化应用程序和组件的部署,.NET 框架引入了程序集的概念。在 Windows Server 系统中,程序集是重用、版本控制、安全性、部署的单位。换句话说,程序集是一组任何类型的文件,它们必须一起部署。在某些情况下,程序集只是一个单独的文件,例如一个 DLL 组件包或一个可执行程序。但是,程序集也可以包含其他文件,例如 HTML 页面、 XML 文件,多媒体文件,或其它类型的文件。

开发者可以使用程序集将程序包需要部署的逻辑单元和需要部署的物理单元分离开来。这些程序集可以是一个应用程序的一部分并和它一起部署,也可以是由多个应用程序使用的共享程序集。

程序集信息存储在清单中,每个程序集都自动包含清单。Visual Studio .NET 集成开发环境生成方案自动将清单插入 .EXE 或 .DLL 文件中,可以使用 ildasm.exe 工具(.NET 框架 SDK 的一部分)来观测程序集清单,如下例所示(一个简单的 HelloWorld VB.NET 应用程序)。

Figure 2: Dissaseembling an assembly's manifest with ildasm.exe

图 2:用 ildasm.exe 反汇编程序集的清单

.NET 的 XCOPY 部署

.NET 程序集的部署与以前版本相比显得简单的多,可以被称为 XCOPY 部署。XCOPY 部署意味着在很多情况下,都只用简单地将 .NET 应用程序目录拷贝到目标位置。

以下的 .NET 特性使得该简单部署过程成为可能。

每个程序集都是自描述的,因为程序集包含定义其内容的元数据。这个特性杜绝了用无止境的注册表登记项来定义各个组件的公共接口的做法。

.NET 程序集中的每个组件都使用标准的位置,因此不需要在注册表中进行定义。

可以用配置文件来修改组件的位置,不过程序集在标准位置查询这些配置文件,从而避免了注册过程。

但是,还有部署过程更加复杂的情形,例如:

.NET 应用程序与 COM 组件的交互仍然需要注册。

在远程计算机上将程序集预编译为本地代码需要比仅仅将文件拷贝到目标目录更多的过程。

将程序集安装到远程计算机的全局程序集缓冲中时需要更多的步骤以使该程序集成为全局共享程序集。

当安装与 .NET 框架一起部署的 Windows 服务时,这些服务需要在目标系统注册。

某些 .NET 应用程序安装过程需要在其它服务中设置对象,如活动目录、 Internet 信息服务,以及集成于 Windows Server 系统的服务器软件,需要运行其他的应用程序或脚本来创建和配置这些对象。

当定制一个用户环境,例如开始菜单项、桌面快捷方式、控制面板小程序、自定义文件夹以及 Office 外接程序时,需要安装程序创建所有这些自定义的项目。

用 Windows 安装程序部署 .NET

Windows 安装程序为所有类型的应用程序和组件的部署提供了统一的解决方案。部署通过 Windows 安装程序文件完成, Windows 安装程序文件具有 .msi 扩展名,它包含了对应用程序安装的描述,包括:

所有的应用程序文件,以压缩模式出现

安装过程中所有可选的选项,包括图形用户界面安装过程或无人自动完成过程

应用程序文件的位置

用户环境设置,例如开始菜单项和桌面快捷方式和图标

卸载信息

注册需求(需要时)

成功安装和注册应用程序的其它必需设置

部署 .NET 应用程序需要 Windows 安装程序 2.0 或更高版本, Windows 2000、Windows XP、以及 Windows Server 2003 的所有版本都提供该安装程序。获取其它平台上 Windows 安装程序的更新版本的详细步骤将在本文后面叙述。

要创建 .msi 文件,需要使用第三方工具。独立软件供应商,如 Installshield Software Corporation (www.installshield.com) 和 Wise Solutions, Inc. (www.wise.com) ,提供了不同的产品来制作 .msi 包。也可以用 Microsoft Visual Studio .NET 来替换这些工具,这些将在本文后面叙述。

MSI 数据库实用工具

Windows 安装程序 SDK (包含在 Windows 平台 SDK 中)允许用 ORCA.EXE 工具查看和编辑已有的 .msi 包。该 SDK 可以从 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/处下载。

该 SDK 包括 msidb.exe 工具,可以用它来导入和导出数据库表和流,合并 .msi 数据库,进行 Windows 安装程序数据库的转换。要了解更多关于 ORCA 和 MSIDB 工具的信息,请参考 Windows 安装程序 SDK 文档。

用 Microsoft Application Center 部属 .NET

Application Center 2000 提供了在负载平衡 Web farm 或故障转移群集服务器上部署 .NET 应用程序的工具。群集中的所有服务器在 Application Center 2000 中作为一个单独的服务器来管理。群集之间的同步保证了应用程序映像在所有成员服务器上被自动复制。

不用关闭任何服务就可以更新服务器应用程序,这样提高了可用性。Application Center 2000 简化了从开发工作站部署新的应用程序或新的版本以及部署失败时进行的回滚。也可以通过 Application Center 2000 使用脚本语言来使部署过程自动化,这依赖于它功能全面的 API 。

关于 Application Center 2000 详细功能的信息超出了本文的范围。要获取该产品的额外信息,请访问 http://www.microsoft.com/applicationcenter/ .

用 Microsoft System Management Server 部署 .NET

Microsoft System Management Server (SMS) 可以为 Windows 安装程序包提供附加的功能,特别针对的情况是向客户端计算机分发 Windows Server 2003 以及向多个 .NET Web 服务器分发 ASP.NET 和 Web服务。

使用 SMS ,可以获得额外的特性和配置优势,例如:

向基于预定义管理规则的目标用户和计算机智能化分发软件

预先进行目标系统硬、软件需求检查

高级软件统计以跟踪软件的使用,以帮助设计合适的基础结构来处理实际和预测中的工作负荷。

高级疑难解答工具以精细调整系统和网络基础结构

要使用 SMS 2.0 部署 Windows 安装程序安装包,,需要执行下列任务:

在目标计算机上验证 Windows 安装程序运行时的可用性

使用 Windows 安装程序的管理安装来设置一个源包的路径。

创建一个包。

配置弹性资源(可选)。

使用 Windows 安装程序命令行语法为包创建一个程序。

为包指定分发点。

为包指定访问账户(可选)。

创建一个公布

要获取更多关于使用 SMS 部署 Windows 安装程序安装包的信息,请参阅“使用 System Management Server 2.0 部属 Windows 安装程序安装包”,见 (http://www.microsoft.com/smserver/techinfo/deployment/20/deployosapps/deploymsi.asp) 。

但是,建议使用 Microsoft Application Center 在群集或 Web farm 中部署 Web 服务和 ASP.NET 应用程序。

创建一个部署项目规划

项目规划是部署 .NET 应用程序的逻辑过程中一个重要的步骤。设计项目规划是为了满足商业基础结构和需求。Microsoft 操作框架 (MOF) 提供了部署过程指南。要获取关于 MOF 的额外信息,请访问 MOF Web 站点 www.microsoft.com/mof 。

生成一个项目规划时需要考虑的步骤是:

创建一个项目规划大纲:

定义项目范围和目的

确定适当的部署进度表

按照常规 MOF 指南的定义规划部署

确定资源/人员需求

建立项目团队

收集当前环境信息

建立标准和指导方案

风险管理

培训

测试和试验概述

确定技术参考和依赖

完成项目规划

部署 .NET 解决方案的过程通常是一个重复的任务,因为一个新的 .NET 解决方案的部署与上一个解决方案并没有很大的区别。但是,虽然大多数解决方案都会遵循一个十分相似的过程,遵循一个适当的部署规划可以确保用最小的风险来成功地进行部署。

部署管理结构应该与目前的管理结构紧密结合,但是管理结构应该适合管理下列阶段:

规划 .NET 解决方案的部署

设计和管理一个 .NET 实验室来测试 .NET 解决方案的部署

完成最终在产品环境中的部署

开发项目规划过程

.NET 解决方案的部署遵循一个生命周期,从目的和目标的定义到最后在产品环境中的部署。规划一个部署项目的过程中应该提供一个供遵循的合理指导方案,该指导方案详细描述了怎样进行设计、实现、测试、修改,以及执行每个动作。

确定目的和目标

在规划过程的这个阶段,需要确定将要部署的 .NET 解决方案的主要逻辑配置并特别强调安全性和功能可用性。网络基础结构在该阶段扮演至关重要的角色,因为网络基础结构被设计为业务的安全性和功能性提供服务。

该阶段的目的是定义部署项目的框架,以确保在部署过程中获取必需的执行批准。这第一阶段应该回答与特定部署项目相关的问题,例如:

为什么您的组织要部署这个特定的 .NET 解决方案?

该解决方案何时能够启用?

该项目的具体范围?

该项目会影响到谁?

怎样才算是成功的部署?

系统中是否已经实现了其它 .NET 解决方案?如果是,它们与该项目中将要部属的解决方案之间是否会发生潜在的交互?

有没有其它应用程、系统或软件会受到该解决方案部署的影响? 如果是,是否需要将它们集成到新的解决方案中?怎样进行集成?

有什么样的风险?

整个过程将包括哪些人?

在这个阶段可能创建的文档包括:

目的和目标文档

当前环境概述

风险评估

该阶段对于确定部署的里程碑非常重要。您需要向所有参加的团队提供一个清晰的概念如为什么要部署该解决方案、它会怎样影响目前环境、以及将怎样进行部署。

逻辑项目大纲:策略问题

一个典型的 .NET 解决方案包含一些不同的实体

后端服务器

应用程序服务器

Web 服务器

终端用户应用程序

用户

图 3 显示了一个 .NET 解决方案典型的网络拓扑结构。

Figure 3: A typical .NET solution

图 3 : 一个典型的 .NET 解决方案
查看完整的图像。

用户可以是内部或外部用户,对于两者来说,确定他们可以访问该解决方案的哪些功能是非常重要的。内部用户应该按照他们与该解决方案相关联的访问级别来分组。而对外部用户来说,情况就稍稍复杂一些,因为必须区分客户、供应商以及合作伙伴,甚至从外部网络连接进来的员工。定义对于每个组哪些可用哪些不可用需要细心的规划。

在很多情况下,终端用户应用程序会是 Web 服务器上基于 ASP.NET 的应用程序。因此,需要确定哪些内部 Web 服务器的功能能够在内部防火墙以内访问,而哪些功能能够被内部防火墙以外的外部用户访问。

这些 ASP.NET 和 Windows 应用程序能够使用 .NET Web 服务提供的功能。在这种情况下,确定哪些服务只能本地访问(只为 intranet 用户提供 )而哪些 Web 服务可以在 intranet 以外访问。

但是,确定过程并不止这些。使一个 Web 服务可用并不意味着该服务对任何类型的使用方式都开放。必须按照上下文确定什么是“私有“和“公有”。然后,可以将 Web 服务分为几个主要的组:

私有 Web 服务只对预定义的运行在所选的 Web 服务器上的 ASP.NET 应用程序可用。

私有 Web 服务只对预定义的 .NET 应用程序可用。这与上一种情况一致,因为 ASP.NET 应用程序和 Windows 应用程序可以被看作相同 Web 服务纯粹的消费者。

私有 Web 服务对任何被设计在 intranet 上运行的应用程序可用。

公有 Web 服务只对运行在所选公有 Web 服务器上的预定义 ASP.NET 应用程序可用,但对于其它应用程序不可用。

公有 Web 服务对于任何能够访问该服务宿主服务器的应用程序可用。

为基础结构和平台组件服务的 Web 服务应该放置在本地 intranet 中。它们能够被完全发现,因为在 intranet 内部访问它们已经受到了保护。但是,放置在私有局域网以外的公有 Web 服务应该只暴露有限的被发现能力。相似的考虑也适用于私有和公有 .NET Web 应用程序,因为必须考虑哪些只能供企业用户使用,哪些可以供外部用户使用。

在某些情况下,您也许想在 intranet 应用程序中用 .NET Remoting 来代替 Web 服务。要了解 Remoting 和 Web 服务的对比,请参阅 Microsoft Web 站点 ( http://msdn.microsoft.com/library/en-us/dnadvnet/html/vbnet10232001.asp) 。 Web 服务是运行于不同平台的应用程序间通信的理想选择,而 Remoting 在基于 .NET 的应用程序之间的通信会更有效和可靠。

在任何情况下,确定每个组件将使用什么验证方法以及怎样验证使用该方法验证那些资源也是非常重要的。可以用程序来确定,这样在部署阶段这些设置将不能改变。但是在部署阶段,可以通过修改配置文件来定制这些设置,本文将后面将进行论述。

设计和管理一个 .NET 测试实验室

要测试一个部署规划的可行性,方便的办法是运行一个试验部署项目。该试验项目的目的是在不需要面对产品环境的情况下跟踪和解决任何潜在的问题并精细调整部署过程。该阶段对于达到部署目标、保持进度、不超出预算边界来说都是至关重要的。

.NET 测试实验室应该是产品环境的一个复制品,包括最终所包含的所有的网络层次和系统。越接近产品环境,试验项目的效率就越高。

试验项目稳定以后,部署团队就能够获得最终的可行性。该阶段的重要事件是:

功能规格的完成和稳定

概念验证的完成

产前测试完成

试验完成

风险管理规划更新

您可能想开发额外的文档来辅助将要进行部署的操作团队。这些文档可能包括:

培训计划

支持或问询规划

操作转换规划

灾难恢复规划

在该阶段,部署规划将是一个随着测试程序进行中发生的连续变化而变化的动态规划。应该特别注意灾难恢复规划,它应该被全面测试并尝试预测和解决所有已知的潜在问题。

获取反馈

为了帮助确定是否超出了试验项目,需要从试验所包含的所有小组获取反馈。可以使用不同的技术来获取这些反馈,例如:

Web 站点反馈表单

与业务经理的会议

问题报告

调查

对 IT 项目和网络操作的观测

试着从各个角度获取尽可能多的部署该 .NET 解决方案信息,例如:

培训

首发过程

支持

通讯

发生的问题

改进的建议

产品首发

部署项目的最后阶段是产品首发。在这个阶段,作为试验程序的一部分已经测试了所有任务,并且定义了所有风险和意外事故规划。由于测试实验室与真实地产品环境之间的区别,需要继续测试并且已经在调整测试项目中初始化的过程。

产品首发过程应该在产品首发首发规划中全面文档记录,包括不同组件是如何部署的详细信息。应特别关注组件之间的依赖性,如果存在依赖性,要清楚地详细说明部署的顺序。已经在测试实验室测试过的灾难恢复规划在该阶段可做精细调整已符合产品环境的实际情况。

在部署完毕并为执行主管准备好项目完结报告之后,应进行一次项目复查。项目复查可以客观地反映整个项目的优势和弱点,并分析如何运用获得的知识和经验提高将来基础结构的部署水平。

在 Visual Studio .NET 中部署项目

要使用 Windows 安装程序部署 .NET 应用程序,可以使用 Visual Studio .NET 中的安装和部署项目之一,如图 4 所示:

Figure 4: Adding a Setup Project with Visual Studio .NET

图 4 :用 Visual Studio .NET 添加一个安装项目
查看完整的图像。

安装项目 为一个基于 Windows 的应用程序创建了一个 Windows 安装程序项目。

Web 安装项目 创建了一个 Windows 安装程序 Web 项目,在开发过程中可以手动向该项目添加文件

合并模块项目 将可能被多个应用程序共享的组件打包。

安装向导 帮助开发者一步一步创建安装项目。

Cab 项目 为旧式的 Web 浏览器准备 Cab 文件。

为 Web 部署创建一个项目后(在 VS.NET 集成开发环境中叫做 Web 安装项目),不能将它转换为一个 Windows 安装程序项目(在 VS.NET 集成开发环境中叫做安装项目),反之亦然。要获取这样的功能,必须创建两个不同的安装项目。使用安装向导来创建一个直接安装程序;但是,所有其它项目类型提供了极大地灵活性。

安装程序提供了几个编辑器。通过从安装项目上下文菜单中选择相应的项目来查看这些编辑器,如图 5 所示

Figure 5: Selecting the editor from the View menu of the Setup Project

图 5 :从安装项目的查看菜单选册编辑器
查看完整的图像。

以下是可为特定应用程序选择的编辑器:

文件系统编辑器。使用该编辑器,可以定制用户桌面和开始菜单以及向应用程序文件夹添加文件和快捷方式。

Figure 6: Viewing available options from the File System Editor

图 6 :查看文件系统编辑器可选项

注册表编辑器。使用该编辑器向注册表添加键值,用来存储默认设置。

Figure 7: Viewing available options from the Registry

图 7 :查看注册表可选项
查看完整的图像。

文件类型。使用该编辑器添加文件类型和对这些文件类型的动作,这由其扩展名决定。例如,在下面的图中,文件类型 FGG (扩展名为 .fgg )定义了打开动作。

Figure 8: Defining file types and actions

图 8 : 定义文件类型和动作

用户界面。 使用该编辑器定制安装程序的外观。这些设置可以从一组模板式样隐藏或添加安装向导中的某些画面或。在下图中,可以看到能够定义显示哪些文字和向导的特定部分(注意图中的文字太长,无法在图中完整显示,但是实际上可以编辑)。

Figure 9: Defining User Interface Dialog

图 9: 定义用户界面对话框
查看完整的图像。

自定义动作。使用该编辑器来指定在特定的动作被选择后应该执行哪个程序。这个功能对于安装将来的组件或创建特定的数据库对象来说非常有用。这些动作在特定的事件发生时运行,例如:

安装应用程序

提交

安装回滚

卸载应用程序

Figure 10: Defining custom actions

图 10 :定义自定义动作

启动条件。使用该编辑器指定检查目标机器上的那些条件。

Figure 11: Defining Launch Conditions

图 11 :定义启动条件

安装项目配置

安装项目属性页用来访问配置设置。要访问该页,在项目上下文菜单中选择属性,如图 12 所示:

Figure 12: Setup Project Property Pages

图 12 :安装项目属性页
查看完整的图像。

使用该配置页,可以确定生成配置和创建结果文件的文件夹。这些文件可以以不同的方式创建,如图 13 所示:

Figure 13: Defining how to package setup files

图 13 :定义如何打包安装文件

使用图 14 所示的引导选项,可以选择将提供哪种类型的 Windows 安装程序(在目标机器需要时)。

Figure 14: Selecting a bootstrapper

图 14 :选择引导

如同任何 .NET 项目一样,该安装项目可以在大小和速度上进行优化,如图 15 所示:

Figure 15: Selecting compression optimization type

图 15 :选择压缩优化类型

安装文件

生成安装项目的过程中在 Debug 或 Release 文件夹(视所选的生成类型而定)下创建了以下文件,如表 1 所示:

表 1 安装中创建的文件

文件 描述

YourSetupProgram.msi

该文件是 Windows 安装程序所需的安装程序数据库,用来安装您的应用程序。

如果目标系统上已经安装了 Windows 安装程序,那么只需发布者一个文件。但是推荐您发布整个文件集以确保在没有 Windows 安装程序的系统上也能够进行安装。

InstmsiA.exe

该程序在 Windows 95/98/Me 上安装 Windows 安装程序

InstmsiW.exe

该程序在 Windows NT/2000/XP/.NET 上安装 Windows 安装程序

注意 Windows 2000 、 XP 、以及 Microsoft Windows Server 2003 已经含有 Windows 安装程序,但是该发布文件可能包含更新的版本。

setup.exe

该程序执行 Windows 安装程序以使用所提供的 .msi 文件安装您的应用程序。

该程序检查系统中是否有 Windows 安装程序可用,如果没有则进行安装,然后再安装应用程序。

Setup.ini

该文件是 setup.exe 所用的配置文件,用来指定 .msi 文件

部署 .NET 框架

要在特定的计算机中执行为 .NET 框架设计的应用程序或服务,该计算机需要安装 .NET 框架。由于目前所有的 Microsoft 平台都不包含 .NET 框架,因此第一步就是确定目标计算机上 .NET 框架是否可用。

运行任何版本 Microsoft Windows Server 2003 的计算机都已经安装了 .NET 框架,因为它是标准操作系统安装过程中的一部分。运行 Microsoft Windows XP 的计算机可以通过 Microsoft Windows Update Web 站点安装 .NET 框架。推荐使用 Microsoft Windows Update Web 站点来更新 .NET 框架的最新服务包或新发行版本。

对于运行其它平台的计算机来说,通过 Dotnetfx.exe 应用程序来实现 .NET 的重新发布。目前它可以从下列位置和产品获得:

Microsoft 下载站点 http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/829/msdncompositedoc.xml.

.NET 框架 SDK ,位于 dotNETRedist 目录下。 您可以从 MSDN 下载 .NET 框架 SDK http://msdn.microsoft.com/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml.

Microsoft Visual Studio .NET Windows 组件更新 CD ,位于 dotNetFramework 目录。

Microsoft Visual Studio .NET DVD ,位于 \wcu\dotNetFramework 目录。

不要在您的 intranet 或 Web 站点上重新发布 .NET 框架。将用户引导到 Microsoft Windows 更新 Web 站点,为他们提供最新版本的组件。

该重新发布将安装所有服务器和客户端所需要的组件。 .NET 框架重新发布包支持如下平台:

Windows 98

Windows 98 第二版

Windows ME

Windows NT 4.0 (工作站版或服务器版) Service Pack 6

Windows 2000 (Professional 、 Server 、或 Advanced Server)

Windows XP (家庭版和专业版)

Windows Server 2003

>要运行 .NET 框架组件,还需要

>Internet Explorer 5.01 以上版本。您可以从以下位置下载 Internet Explorer 的最新版本

>Microsoft Windows 更新 Web 站 http://v4.windowsupdate.microsoft.com/en/default.asp

>Internet Explorer 下载站 http://www.microsoft.com/windows/ie/downloads/default.asp

>Windows 安装程序 2.0 以上版本。 可以从以下位置下载最新版本的 Windows 安装程序

>The Microsoft Windows 更新 Web 站 http://v4.windowsupdate.microsoft.com/en/default.asp

>Microsoft 下载中心

http://www.microsoft.com/downloads/release.asp?ReleaseID=32831 (Windows 95 、 98 、 98 SE 、和 Me)

http://www.microsoft.com/downloads/release.asp?ReleaseID=32832 (Windows NT 4.0 和 Windows 2000)

>注意 Windows XP 和 Windows Server 2003 已经包括了这个新版本。但是,检查 Microsoft Windows 更新 Web 站点上的更新是一个好主意

>服务器数据访问组件(推荐 MDAC 2.7 )。可以从以下位置下载这些组件的最新版 http://www.microsoft.com/data/download.htm>

>Internet 信息服务 (IIS) 安装在 Windows 2000 、 Windows XP (专业版)、和 Windows Server 2003 (运行 ASP.NET 应用程序)

>服务器端部署

ASP.NET 应用程序和 Web 服务被设计作为服务器组件运行,通常运行于本地或远程网络中的中心计算机上。要运行这些应用程序和服务,必须确保满足所有先决条件。运行 Windows Server 2003 操作系统的服务器包含了所有运行 .NET 应用程序的先决条件。

如果要部署的应用程序不使用客户端组件,就只需要部署服务器端。在这种情况下,这些应用程序提供的功能将由 Internet 浏览器或 Windows 应用程序使用,与 .NET 应用程序相关的任何过程都不包含“宿主”应用程序。

确定需求

要确保 .NET 服务器应用程序运行时的性能,您应该观测表 2 所列出的需求:

表 2 部属 .NET 应用程序的服务器需求

类型 需求

支持的操作系统

Microsoft® Windows® 2000 专业版加 Service Pack 2.0

Microsoft® Windows® 2000 服务器版加 Service Pack 2.0

Microsoft® Windows® 2000 高级服务器版加 Service Pack 2.0

Microsoft® Windows® XP 专业版

Microsoft® Windows Server 2003 Web 服务器

Microsoft® Windows Server 2003 标准服务器

Microsoft® Windows Server 2003 企业服务器

要使用 SQL Server .NET DataTo use the SQL Server .NET 数据提供程序

Microsoft 数据访问组件 (MDAC) 2.7 。

该组件的最新版本可以在以下位置下载:

http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp.

要运行 ASP.NET 应用程序

Microsoft IIS 5.0 以上版本(Windows XP Pro 包含 5.1 版, Windows Server 2003 包含 6.0 版。)

处理器

最低需求为 Intel Pentium 或相同能力 133 MHz 以上,如同已安装的 Windows 所需。

如果期望高负荷水平,推荐在多处理器机器上使用 Pentium III XEON

>由于 .NET 服务器组件将被多个用户重复执行,因此需要处理器具有相应的能力。处理器连续加速,速度通常高于 2 MHz

内存

>最低需求为 128 MB ,或者更大,如同已安装的 Windows 所需

>推荐使用尽可能大的内存以发挥 .NET 框架高级缓冲功能的优势

>存储空间

>对于存储空间没有特殊需求,只要满足已安装的 Windows 的一般需求和组成应用程序的文件大小

>为了优化磁盘访问并为存储子系统提供容错能力,推荐在可能的情况下使用高质量的 SCSI 磁盘和 RAID 配置

>配置为 Web farm 带有 Windows 负载平衡服务 (WLBS) 的系统可以受益于网络存储系统,例如 SAN 或 NAS 设备

>网络

>网络需求基于所期望的工作负荷和带宽利用而定

>网络需求对于内部客户端和远程客户端是不同的。但是,这些需求的管理依赖于纯粹的网络管理。Network requirements will be different for the internal clients than for remote clients. However, the management of these requirements relies on pure network administration

>客户端部署

>ASP.NET 应用程序和 Web 服务被设计作为服务器组件运行。客户端设备使用宿主应用程序,例如 Internet Explorer ,来运行这些 .NET 应用程序,或者它会运行一个 .NET 应用程序来远程使用这些服务。运行 Windows Server 2003 操作系统的服务器包含了将 .NET 应用程序作为客户端设备运行的所有先决条件

在某些情况下, .NET 应用程序需要部署客户端组件,在这种情况下的部署所要考虑的问题与部署 .NET 服务器应用程序非常相似。

确定需求

为了确保运行于客户端的 .NET 应用程序的功能和性能,您因该观测表 3 列出的需求。

表 3 运行 .NET 的客户端需求

类型 需求

支持的操作系统

Microsoft® Windows® 98

Microsoft® Windows® 98 第二版

Microsoft® Windows® Me

Microsoft® Windows® NT 4.0 工作站版加 6.0a 以上 Service Pack

Microsoft® Windows® NT 4.0 服务器版加 6.0a 以上 Service Pack

Microsoft® Windows® 2000 专业版

Microsoft® Windows® 2000 服务器版

Microsoft® Windows® 2000 高级服务器版

Microsoft® Windows® XP 家庭版

Microsoft® Windows® XP 专业版

Microsoft® Windows Server 2003 Web 服务器

Microsoft® Windows Server 2003 标准服务器

Microsoft® Windows Server 2003 企业服务器

Internet 浏览器

Microsoft® Internet Explorer 5.01 以上版本

Windows® 安装程序

Microsoft® Windows® 安装程序 2.0 以上版本

要使用 SQL Server .NET 数据提供程序

MDAC 2.7.

该组件的最新版本可以在以下位置下载:

http://msdn.microsoft.com/library/default.asp?url=/downloads/list/dataaccess.asp.

访问系统管理信息

Windows 管理规范 (WMI)(同 Windows 2000 、 Windows Me、 Windows XP 、以及 Windows Server 2003 一起安装)

COM+ 服务

Windows 2000 Service Pack 2.0 、或 Windows XP 、或 Windows Server 2003

要运行 ASP.NET 应用程序

Microsoft IIS 5.0 或以上版本(Windows XP Pro 包含 5.1 版, Windows Server 2003 包含 6.0 版)

处理器

最低需求为 Intel Pentium 或相同能力 90 MHz 或以上,如同已安装的 Windows 所需。

当运行包含客户端组件的 .NET 应用程序时,推荐使用高于最低要求的 Pentium III/IV 处理器。

内存

最低要求为 32 MB 以上,如同已安装的 Windows 所需。

推荐使用尽可能大的内存以发挥 .NET 框架高级缓冲功能的优势

存储空间

对于存储空间没有特殊需求,只要满足已安装的 Windows 的一般需求和组成应用程序的文件大小

网络

网络需求基于带宽利用而定。

安全性考虑

Web 服务上的验证和授权遵循与 ASP.NET 应用程序授权和验证相同的规则。表 4 总结了不同的验证方法。

表 4 验证方法

验证方法 描述

Windows – 基础

该方法用基 64 字符串发送用户名和密码,但是不加密。因此,网络监视工具可以截该获数据并危及应用程序或服务的安全。

建立于 SSL 上的 Windows – 基础

用户安全套接字层 (SSL) 将用户名和密码加密传送到 Internet ,它容易配置但是降低了性能。

Windows – 摘要

通过哈希技术对 Internet 客户进行安全鉴别,也通过代理服务器,但是在其它平台上并不常用。

Windows - 集成 Windows

使用 NTLM 或 Kerberos 。与 Microsoft Internet Explorer 的通信使用了 NTLM 或 Kerberos 密码标准进行了加密。

Windows - 客户证书

为 Intranet 和 Internet 用户提供安全验证。每个客户都需要一份相互信任证书。证书也可以映射到 Windows 账户上,在该情况下 IIS 能够自动验证对于 Web 服务的访问。

表单

使用 HTTP 客户端重定向在 HTTP Uses HTTP 表单上提供验证。Web 服务不直接支持它。

SOAP 头 – 自定义

通过在 SOAP 头中传递凭据而提供平台无关的对 Web 服务的验证和非验证访问。

安全配置文件。 .NET 应用程序的安全配置文件安装在表 5 所列出的位置。

表 5 配置文件的位置

策略类型 配置文件

企业策略

 

Windows 2000

%运行时安装目录%\Config\Enterprisesec.config

Windows NT

%运行时安装目录%\Config\Enterprisesec.config

Windows 98 和 Windows ME

%运行时安装目录%\Config\Enterprisesec.config

机器策略

配置文件

Windows 2000

%运行时安装目录%\Config\Security.config

Windows NT

%运行时安装目录%\Config\Security.config

Windows 98 和 Windows ME

%运行时安装目录%\Config\Security.config

用户策略

配置文件

Windows 2000

%USERPROFILE%\Application data\Microsoft\CLR security config\vxx.xx\Security.config

Windows NT

%USERPROFILE%\Application data\Microsoft\CLR security config\vxx.xx\Security.config

Windows 98 和 Windows ME

%WINDIR%\用户名\CLR security config\vxx.xx\Security.config

为了避免安全文件损坏,您应该使用以下工具:

.NET 框架配置工具 (Mscorcfg.msc)

代码访问安全策略工具 (Caspol.exe)

配置 .NET 应用程序

.NET 应用程序配置位于几个文件中,我们将在以下部分详细叙述。该部分的目的是提供关于这些文件的位置信息,解释他们的目的和主要组成部分。

配置文件是标准的 XML 文件。配置设置使用 XML 标签被安排为一套预定义元素。如果要直接编辑配置文件需要熟悉 XML ,请记住 XML 标签和属性是大小写敏感的。

每个配置文件都使用了一个 <configuration> 格式如下:

<configuration>
<!-- configuration settings -->
</configuration>

该元素可能包含一些子元素,如表 6 所示。该表显示了这些配置文件中不同的部分以及这些部分由那些元素所定义。

可以在以下位置找到这些 XML 配置文件的一些例子:

http://msdn.microsoft.com/library/en-us/dndotnet/html/remotingconfig.asp

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

表 6 .NET 配置文件的内容

定义该节的元素 描述

开始

<startup>

使用 <requiredRuntime> 元素来指定运行应用程序的 CLR 的版本。

可以再以下位置找到关于该节的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfstartupsettingsschema.asp.

该节对于指定运行某个应用程序的特定运行时是非常有用的。在系统里安装了多个版本的 CLR 时,该设置可以避免因特定版本 CLR 不存在而造成的兼容性错误。

运行时

<runtime>

指定 CLR 怎样处理垃圾回收以及配置文件中使用的程序集的版本。

可以在以下位置找到关于这些的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfruntimesettingsschema.asp.

该节对于指定哪些版本范围内的特定程序集与应用程序兼容以及指定某些程序集的替换路径是非常有用的。

Remoting

<system.runtime.remoting>

包含用来将自定义设置放置于远程应用程序配置文件的标签。

可以在以下位置找到关于这些的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gnconremotingsettingsschema.asp.

使用该节指定应用程序需要哪些远程对象以及应用程序为远程使用暴露了那些对象。

网络

<system.net>

指定 .NET 框架怎样与 Internet 连接。可以在以下位置找到关于该节的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfnetworksettingsschema.asp.

以下是主要元素:

<authenticationModules> 指定验证 Internet 请求的模块。

<connectionManagement> 指定连接到 Internet 主机的最大连接数。

<defaultProxy> 指定供 HTTP 请求到 Internet 上的代理服务器。

<system.net> 包含 Internet 应用程序的设置。

<webRequestModules> 指定从 Internet 主机请求信息所用到的模块。

密码

<mscorlib>

将算法名字映射到实现密码算法的类上。

可以在以下位置找到关于该节的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfcryptographysettingsschema.asp.

配置

<configSections>
<appSettings>
<MyCustomSettings>

将自定义配置设置放置到配置文件中。

可以在以下位置找到关于该节的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfconfigurationsectionsschema.asp.

跟踪和调试

<system.diagnostics>

声明用来用来收集、存储和路由消息的跟踪监听器,设置跟踪开关。

可以在以下位置找到关于该节的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrftracedebugsettingsschema.asp.

ASP.NET

<system.web>

控制 ASP.NET Web 应用程序的行为。

可以在以下位置找到关于该节的全部信息:

http://msdn.microsoft.com/library/en-us/cpgenref/html/gngrfaspnetconfigurationsectionschema.asp.

机器配置文件。 machine.config 文件在 %runtime install path%\Config 目录下,包含影响整个安装 .NET 的机器的设置。由于这个原因,将应用程序设置存储在不同的位置会更加方便,稍候将进行讨论。

使用 Windows 安装程序部署 .NET 应用程序能够自动对 machine.config 文件应用更新,但是使用 XCOPY 部属则不行。

应用程序配置文件。 CLR 首先在应用程序配置文件中搜索应用程序设置,然后再搜索机器配置文件。应用程序配置文件的名称和位置依赖于应用程序宿主,它可以是以下之一:

可执行宿主应用程序。 一个可执行宿主包含的应用程序的配置文件与应用程序再同一个目录下。配置文件的名字是应用程序的名字加上 .config 扩展名。例如一个名位 myApp.exe 的应用程序的配置文件叫做 myApp.exe.config 。

下面是示例应用程序配置文件 (caspol.exe.config) :

<?xml version ="1.0"?>
<configuration>
<startup>
<requiredRuntime  safemode="true"  imageVersion="v1.0.3705" version="v1.0.3705"  />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<publisherPolicy apply="no"/>
</assemblyBinding>
</runtime>
</configuration>

ASP.NET 宿主应用程序 ASP.NET 配置文件名为 Web.config 。 ASP.NET 应用程序的配置文件继承URL 路径中配置文件设置 。例如 URL www.nwtraders.msft/marketing/year2002 , www.nwtraders.msft/marketing是 Web 应用程序,与之对应的配置文件存放在 www.nwtraders.msft/marketing 。 子目录 /year2002 下的ASP.NET 页面同时使用应用程序级别和 /year2002 下的配置文件设置。关于 ASP.NET 配置文件的更多信息,请查阅 http://msdn.microsoft.com/library/en-us/cpguide/html/cpconaspnetconfiguration.asp.

Internet Explorer 宿主应用程序 如果宿主于 Internet Explorer 的应用程序拥有配置文件,那么该文件的位置在下面标签中指定: <link> tag with the following syntax: <link rel="Configuration" href="location">.

在该标签中, href 告诉 Internet Explorer 配置文件的 URL 。配置文件必须与应用程序位于同一个 Web 站点上。

部署 Web 服务

前面所有叙述应用于任何类型的 .NET 应用程序和服务。但是,对于 Web 服务还有一些特别要注意的地方。

部署一个 XML Web 服务包括将 .asmx 文件和该 XML Web 服务所用到的任何程序集拷贝到 Web 服务器上,但是不包括 Microsoft .NET 框架的那部分。例如,如果要部署一个名为 StockServices 的 XML Web 服务,要在 Web 服务器上创建一个虚拟目录并将该服务的 .asmx 文件放置于此。虚拟目录也是一个 IIS Web 应用程序,虽然不是必需的。这样一个应用程序的树形结构是:

\Inetpub
\Wwwroot
\StockServices
StockServices.asmx
\Bin

Under \Bin ,可以对所有非 Microsoft .NET 框架部分而由 XML Web 服务使用的程序集添加引用。

与 Web 服务一起部署的项目

发布一个 XML Web 服务时,表 7 中的项目也被部署到 Web 服务器上。Service, the following items in Table 7 are deploye

tting role="bold">表 7

项目 描述

Web 应用程序目录

作为 XML Web 服务的根目录。所有保留得文件都放置在该目录。该目录可以被标记为一个 IIS Web 应用程序。

<MyXMLWebService>.asmx 文件

作为客户调用 XML Web 服务的基 URL 。文件名可以是任何合法的文件名。

<MyXMLWebService>.disco 文件 (可选)

作为 XML Web 服务的一种发现机制。.disco 文件并不自动为 XML Web 服务创建。

关于为 XML Web 服务创建发现文件的信息,请在以下位置查阅 XML Web 服务的发现允许:

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

文件的名字可以使任何合法的文件名。

Web.config 文件 (可选)

如果需要改写默认得配置设置,可以包含一个 Web.config 文件。XML Web 服务使用该配置文件来允许自定义和扩展系统。

例如,如果一个 XML Web Service 需要验证但是系统中的其它 Web 应用程序不需要,就可以提供一个 XML Web 服务所特定的 Web.config 文件。

可以在以下位置获得关于 Web 服务配置选项的更多信息:

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

\Bin 目录

包含 XML Web 服务的二进制文件。如果 XML Web 服务类不在同一个 .asmx 文件中,那么包含该类的程序集必须在 \Bin 目录中。

部署 .NET 应用程序使用的 SQL Server 数据库

某些 .NET 应用程序和 Web 服务使用 SQL Server 数据库来存储应用程序数据。应该定义部署过程来自动安装所有需要存储的项目,可以使用下列任何策略:

使用任何可用的 SQL Server. 如果已经有 .NET 应用程序运行了 SQL Server ,该应用程序可以配置为在服务器上存储数据,安装程序应该提供选项来指定下列设置(通过用户界面或配置设置):

SQL Server 运行所在的服务器,如果需要包括实例名称。应该直接写要连接的服务器实例的名称或 IP 地址和端口号(格式为 nnn.nnn.nnn.nnn, pppp )。可选的,程序可以提供一个搜索按钮来搜索可用的 SQL Server 实例。

数据库名。根据应用程序的需要,可以是一个已存在的数据库或新数据库。如果需要新数据库,安装程序可以连接一个现存的数据库文件(作为安装程序的一部分部署)。

验证方法。应该提供 SQL Server 验证 (提供用户名和密码) 或 Windows 集成验证。

安装一个新的 SQL Server 实例 这种安装基于安装或配置过程中特定的输入。关于安装设置 SQL Server 的特别向导,请参阅 SQL Server 部署 Web 站点 http://www.microsoft.com/sql/techinfo/deployment/2000/default.asp

安装新的 SQL Server 桌面引擎。 如果部署数据库的唯一目的是为将部署的 .NET 应用程序提供服务,那么可以安装简便的 SQL Server 桌面引擎。按照许可证中定义的使用指南,该 SQL Server 版本不需要任何服务器或客户端访问许可证。只要开发者持有合法的许可证使用 SQL Server 桌面引擎开发应用程序而且桌面引擎的性能能够满足需要,它就是一个优秀的解决方案。要了解关于 SQL Server 桌面引擎更多的信息,访问以下 Web 站点: http://www.microsoft.com/sql/msde/default.asp。关于怎样将 SQL Server 桌面引擎迁入自定义应用程序的特别信息可以在以下位置找到: http://msdn.microsoft.com/library/en-us/dnsql2k/html/sql_embeddingmsde.asp

连接 SQL Server 数据库

如果 .NET 应用程序的部署包括 SQL Server 数据库,如此部署的最简单方法是使用 SQL Server 的连接数据库功能。下面是部署一个将要连接到现存或新安装的 SQL Server 的 SQL Server 数据库的步骤:

在应用程序的部署阶段创建完整的 SQL Server 数据库。该数据库应该包含启动应用程序所需的所有的对象、用户、权限,以及默认数据。使用现有的 SQL Server 2000 实例来创建该数据库。

分离该数据库。使用 sp_detach_db 存储过程来取消该数据库同 SQL Server 的连接。该系统存储过程的语法可以在以下位置找到: http://msdn.microsoft.com/library/en-us/tsqlref/ts_sp_da-di_83fm.asp

将该数据库包含进部署项目。为了部署的目的,仅需要部署数据文件。这些文件通常以 .mdf 扩展名的文件为主文件,如果有副文件,扩展名为 .ndf 。日志文件扩展名为 .ldf ,对于部署来说并不是必需的,因为数据库进程将创建一个空的事务日志文件。

设计安装程序在目标系统中连接数据库。遵循本文档早先详细介绍的方案来选择连接到哪个数据库。使用 sp_attach_db 存储过程将数据库连接到目标服务器。sp_attach_db 存储过程的语法可以在以下位置找到: http://msdn.microsoft.com/library/en-us/tsqlref/ts_sp_ae-az_52oy.asp

总结

Microsoft .NET 框架为开发者提供了一个强大的可扩展的平台来生成安全的、可伸缩的解决方案。.NET 框架 还扩展了 Windows 2000、IIS、以及 SQL Server 已有的某些功能,但是这些新的解决方案的部署与过去有着很大的区别。本文提供了关于如何使用 Windows 安装程序和 XCOPY 的方式部署 .NET 应用程序的详尽说明。但是本文最重要的目标是强调在部署过程中进行谨慎地设计和测试以在最终产品环境中成功地进行部署。


 

版权所有:UML软件工程组织