当前位置:文档之家› 第十讲:部署

第十讲:部署

C#.NET编程技术

第十讲部署

中科院计算机所培训中心

第十讲部署

文档作者:王强

日期:2004/7/20

中科院计算机所培训中心版权所有不得复制

文档修改记录

目录

第一节.NET部署 (6)

一、.NET程序集 (6)

二、.NET的XCOPY部署 (7)

三、用W INDO WS 安装程序部署.NET (8)

四、MSI数据库实用工具 (8)

五、用M ICROSO FT A PPLICAT IO N C E NTER 部属.NET (9)

六、M ICROSO FT S YS TEM M ANAG EMENT S ERVER 部署.NET (9)

第二节部署项目规划 (11)

一、开发项目规划过程 (11)

二、逻辑项目大纲:策略问题 (12)

三、设计和管理一个.NET测试实验室 (14)

四、获取反馈 (15)

五、产品首发 (15)

第三节在VS .NET中部署项目 (17)

一、概述 (17)

二、创建部署项目 (17)

三、为W INDO WS 应用程序制作S ETUP安装程序 (19)

四、安装和部署应用程序(实现基本的安装程序) (21)

五、为S ET UP安装程序创建桌面快捷方式 (22)

六、为S ET UP安装程序创建“开始”菜单的快捷方式 (24)

七、添加自定义安装对话框 (27)

第四节部署.NET 框架 (38)

一、服务器端部署 (38)

二、客户端部署 (40)

三、配置.NET应用程序 (42)

四、部署W E B 服务 (45)

五、部署.NET应用程序使用的SQL S E RVE R 数据库 (46)

六、总结 (47)

第十讲部署

导读:

(1)重点:掌握为 Windows 应用程序制作Setup安装程序方法。

(2)难点:设置部署项目的各个可选属性。

(3)要点:每次制作完成后一定要重新在“生成”菜单上选择“生成我的文本编辑器安装程序”以产生新的安装文件。

第一节.NET部署

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

一、.NET 程序集

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

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

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

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

二、.NET 的XCOPY 部署

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

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

?每个程序集都是自描述的,因为程序集包含定义其内容的元数据。这个特性杜绝

了用无止境的注册表登记项来定义各个组件的公共接口的做法。

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

?可以用配置文件来修改组件的位置,不过程序集在标准位置查询这些配置文件,

从而避免了注册过程。

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

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

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

多的过程。

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

成为全局共享程序集。

?某些.NET 应用程序安装过程需要在其它服务中设置对象,如活动目录、Internet

信息服务,以及集成于Windows Server 系统的服务器软件,需要运行其他的应

用程序或脚本来创建和配置这些对象。当安装与.NET 框架一起部署的Windows

服务时,这些服务需要在目标系统注册。

?当定制一个用户环境,例如开始菜单项、桌面快捷方式、控制面板小程序、自定

义文件夹以及Office 外接程序时,需要安装程序创建所有这些自定义的项目。

三、用Windows 安装程序部署 .NET

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

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

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

?应用程序文件的位置

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

?卸载信息

?注册需求(需要时)

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

部署.NET 应用程序需要Windows 安装程序 2.0 或更高版本,Windows 2000、Windows XP、以及Windows Server 2003 的所有版本都提供该安装程序。

要创建.msi 文件,需要使用第三方工具。独立软件供应商,如Installshield Software Corporation (https://www.doczj.com/doc/812292481.html,) 和Wise Solutions, Inc. (https://www.doczj.com/doc/812292481.html,) ,提供了不同的产品来制作.msi 包。也可以用Microsoft V isual Studio .NET 来替换这些工具。

四、MSI 数据库实用工具

Windows 安装程序SDK (包含在Windows 平台SDK 中)允许用ORCA.EXE 工

具查看和编辑已有的.msi 包。该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 。

六、Microsoft System Management Server 部署 .NET

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

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

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

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

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

中的工作负荷。

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

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

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

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

?创建一个包

?配置弹性资源(可选)

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

?为包指定分发点

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

?创建一个公布

要获取更多关于使用SMS 部署Windows 安装程序安装包的信息,请参阅“使用System Management Server 2.0 部属Windows 安装程序安装包”,但是,建议使用Microsoft Application Center 在群集或Web farm 中部署Web 服务和https://www.doczj.com/doc/812292481.html, 应用程序。

第二节部署项目规划

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

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

?创建一个项目规划大纲:

?定义项目范围和目的

?确定适当的部署进度表

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

?确定资源/人员需求

?建立项目团队

?收集当前环境信息

?建立标准和指导方案

?风险管理

?培训

?测试和试验概述

?确定技术参考和依赖

?完成项目规划

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

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

?规划.NET 解决方案的部署

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

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

一、开发项目规划过程

.NET 解决方案的部署遵循一个生命周期,从目的和目标的定义到最后在产品环境中的部署。规划一个部署项目的过程中应该提供一个供遵循的合理指导方案,该指导方案详

细描述了怎样进行设计、实现、测试、修改,以及执行每个动作。

确定目的和目标

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

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

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

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

?该项目的具体范围?

?该项目会影响到谁?

?怎样才算是成功的部署?

?系统中是否已经实现了其它.NET 解决方案?如果是,它们与该项目中将要部属

的解决方案之间是否会发生潜在的交互?

?有没有其它应用程、系统或软件会受到该解决方案部署的影响?如果是,是否需

要将它们集成到新的解决方案中?怎样进行集成?

?有什么样的风险?

?整个过程将包括哪些人?

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

?目的和目标文档

?当前环境概述

?风险评估

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

二、逻辑项目大纲:策略问题

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

?后端服务器

?应用程序服务器

?Web 服务器

?终端用户应用程序

?用户

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

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

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

这些https://www.doczj.com/doc/812292481.html, 和Windows 应用程序能够使用.NET Web 服务提供的功能。在这种情况下,确定哪些服务只能本地访问(只为intranet 用户提供)而哪些Web 服务可以在

intranet 以外访问。

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

?私有Web 服务只对预定义的运行在所选的Web 服务器上的https://www.doczj.com/doc/812292481.html, 应用程

序可用。

?私有Web 服务只对预定义的.NET 应用程序可用。这与上一种情况一致,因为

https://www.doczj.com/doc/812292481.html, 应用程序和Windows 应用程序可以被看作相同Web 服务纯粹的消费

者。

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

?公有Web 服务只对运行在所选公有Web 服务器上的预定义https://www.doczj.com/doc/812292481.html, 应用程

序可用,但对于其它应用程序不可用。

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

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

在某些情况下,您也许想在intranet 应用程序中用.NET Remoting 来代替Web 服务Web 服务是运行于不同平台的应用程序间通信的理想选择,而Remoting 在基于.NET 的应用程序之间的通信会更有效和可靠。

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

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

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

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

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

?功能规格的完成和稳定

?概念验证的完成

?产前测试完成

?试验完成

?风险管理规划更新

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

?培训计划

?支持或问询规划

?操作转换规划

?灾难恢复规划

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

四、获取反馈

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

?Web 站点反馈表单

?与业务经理的会议

?问题报告

?调查

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

五、产品首发

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

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

际情况。

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

第三节在VS .NET中部署项目

一、概述

1、应用程序的部署

首先定义一下“部署”指的是什么,部署,指的是一个把应用程序打包并安装在另一台计算机上的过程。它适用于:传统的Winows应用程序、需要安装在另一个Web服务器上的Web应用程序。

2、创建 Windows 应用程序:项目名称为:我的文本编辑器--TextEdit

二、创建部署项目

1.在“文件”菜单上指向“添加项目”,然后选择“新建项目”。

2.在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然

后选择“模板”窗格中的“安装项目”。在“名称”框中,键入“我的文本编辑器

安装程序”。

3.项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。

4.在解决方案资源管理器中选择“我的文本编辑器安装程序”项目。

然后在“属性”窗口中,选择ProductName属性,并键入“我的文本编辑器”。

注意:ProductName属性确定应用程序显示在文件夹名称以及“添加/删除程序”对话框中的名称。

三、为Windows 应用程序制作Setup安装程序

1.在解决方案资源管理器中选择“我的文本编辑器安装程序”项目。在“文件系统编

辑器”中,选择“应用程序文件夹”节点。

2.在“操作”菜单上,选择“添加”->“项目输出”。

3.在“添加项目输出组”对话框中,从“项目”下拉列表中选择“TextEdit”。

4.从列表中选择“主输出”组,并单击“确定”。

将产生如下的结果

相关主题
文本预览
相关文档 最新文档