LCSOFT技术论坛
一个由 LCSOFT组织维护的技术论坛。
首页 搜索 用户列表 FAQ 注册 登录  
LCSOFT技术论坛 » 技术专区 » .NET技术专区 » Re: 部署ASP.NET的三大技术
  Re: 部署ASP.NET的三大技术
帖子发起人: 宁影枫   发起时间: 2005-11-21 05:51 下午   回复数: 1
« 上一主题 下一主题 »
楼主
  2005-11-21, 05:51 下午
宁影枫 离线,最后访问时间: 2006-10-12 13:38:47 宁影枫

发帖数前25位

版主
职务: 版主
士兵
等级: 士兵
注册: 2005年11月21日
积分: 5
精华: 0
发贴: 3
  部署ASP.NET的三大技术
 
一、概述

二、ASP.NET Web应用的结构

三、ASP.NET支持的部署机制

四、用XCOPY命令部署

五、用VS.NET复制项目功能部署

六、用Web安装项目部署

  6.1 Windows安装程序

  6.2 VS.NET Web安装项目的特点

七、创建Web安装项目

八、安装ASP.NET Web应用程序

九、结束语

正文:

一、概述

在深入到配置和部署ASP.NET Web应用程序的具体步骤之前,理解配置(Setup)和部署(Deployment)之间的区别是十分必要的。配置是指将应用包装成易于部署的形式,包装好之后的应用程序可以方便地安装到目标服务器上。部署是一个获得应用程序并将它安装到另一台机器上过程,一般通过安装程序完成。

许多用户都曾经遇到过Windows软件安装技术的脆弱点——当我们安装某个软件的新版本时,安装程序将新版的dll文件复制到系统目录,同时执行所有必要的注册表修改操作,但是,安装操作可能影响其他运行在同一机器上的软件,尤其是原有的软件和新安装的软件共享某一组件时,出现问题的可能性更大。如果新安装的组件与它的早期版本向后兼容,当然没有问题,但许多情况下,完全保持向后兼容难以做到,所以经常会遇到安装了一个新软件之后损坏原有软件的情形,这就是臭名昭著的DLL Hell问题。

Visual Studio.NETVS.NET)的设计目标之一就是解决安装Windows软件时经常遇到的问题。VS.NET应用的许多功能都依赖.NET框架类库实现,.NET框架类库建立了一个全新的编程模型,从而为极大地简化安装过程创造了条件。另外,VS.NET应用程序编译成程序集(Assembly),程序集是由一个或多个支持程序集运行的文件构成的部署单元。微软.NET框架引入了许多简化应用程序部署、解决DLL Hell问题的新特性,例如,配置信息可以保存在web.config配置文件,web.config配置文件是一个XML格式的文本文件,可以利用XCOPY之类的命令直接复制和部署到目标服务器。

在探讨各种部署机制之前,我们首先来了解一下ASP.NET应用的结构,因为正是这个结构才使得应用能够方便地部署到目标服务器上。

二、ASP.NET Web应用的结构

ASP.NET应用程序由各种Web页面(.aspxHTML文件)、处理程序、模块、执行代码和其他文件(例如图形文件,配置文件等)构成,这些文件都可以从Web服务器的虚拟目录引用。如果使用了.aspx文件的CodeBehind机制,ASP.NET应用程序还包含编译好的程序集,另外还有其他支持应用程序的程序集,例如,可以把应用的业务逻辑封装成一个单独的程序集。程序集一般位于应用程序虚拟目录的bin子目录下。要理解VS.NET如何简化部署过程,必须理解程序集的结构,因为正是程序集的结构特点才使得简化部署成为可能。程序集包含四种元素:

MSIL代码,即微软中间语言代码:编译应用程序代码时,源代码被编译成所谓的MSIL代码。MSIL代码是.NET公共语言运行时环境(CLR)所理解的代码。

元数据:描述代码中定义的类型、方法和其他元素。

Manifest:包含名称和版本信息,程序集中包含文件的清单,安全信息,等等。

支持文件和资源。

从这个结构可以看出,程序集包含了完整的自我描述信息,所以VS.NET应用程序根本不必象COM组件那样在注册表中注册。这就是说,只要目标机器上也安装了.NET框架,安装VS.NET应用程序时只要简单地将必需的文件复制到目标机器就可以了,这就是所谓的XCOPY部署。不过,除了XCOPY之外,还可以使用VS.NET提供的“Web安装项目实现自动部署。在接下来的内容中,我们将看到如何利用各种不同的部署机制部署一个Web应用。

三、ASP.NET支持的部署机制

ASP.NET Web应用程序支持下列三种部署方案:

XCOPY部署

利用VS.NET复制项目功能部署

使用VS.NET“Web安装项目部署

在接下来的内容中,我们将深入了解所有这三种部署机制。为便于说明,我们先要创建一个Visual C# ASP.NET Web应用程序,应用的名称为DeploymentExampleWebApp,如图一所示。
我们将以这个项目为例,阐述部署Web应用的各种方法。

四、用XCOPY命令部署

.NET框架的主要目标之一就是简化部署,例如支持XCOPY部署。在了解.NET如何支持XCOPY部署之前,我们先来看看XCOPY部署到底是怎么回事。在.NET之前,安装一个组件(例如一个COM组件)意味着不仅要把组件复制到适当的目录,而且还要执行注册表修改之类的操作。但现在有了.NET,安装一个组件的全部操作就是将程序集复制到客户应用程序的bin目录,由于程序集包含完整的自我描述信息,应用程序可以立即开始使用程序集。这一切之所以成为可能,是因为编译器将标识符和元数据信息嵌入到了编译好的模块之中,而CLR利用这些信息来装入程序集的适当版本。标识符包含了装入和运行模块、查找程序集引用的其他模块所需的所有信息。这种安装也称为无干扰(Zero-Impact)安装,因为系统不会因为修改注册表、配置组件而受到影响;另外,无干扰安装也使得组件卸载操作不会对系统产生任何意外的影响,卸载组件时只要从特定的目录删除某些文件就可以了。

执行XCOPY部署时,唯一要做的就是打开一个命令窗口,用XCOPY命令将必要的文件复制到服务器的特定目录。图二显示了如何用XCOPY部署将名为DeploymentExampleWebAppWeb应用部署到目标服务器RemoteServer

可以看到,XCOPY命令有许多选项:

/E:表示将源位置的目录、子目录和文件都复制到目标位置,包括空目录。

/K:保留所有现有的文件和文件夹的属性。默认情况下,XCOPY命令复制文件或目录结构时会忽略文件的属性,例如,如果文件原来有只读属性,复制到目标位置后只读属性丢失。要保留原来的文件属性,必须加上/K选项。

/R:覆盖带有只读属性的文件。

/O:保留文件或文件夹的所有与安全有关的ACL权限设置。

/H:隐藏文件和系统文件也要复制。

/I:要求XCOPY将目标位置视为一个目录,如指定的目录不存在,则创建它。

把文件夹复制到目标服务器之后,接下来在目标服务器上用IIS管理器创建一个虚拟目录,把虚拟目录映射到XCOPY创建的物理目录——这就是用XCOPY将一个ASP.NET Web应用部署到远程服务器所要做的全部操作。

五、用VS.NET复制项目功能部署

VS.NET复制项目功能使我们能够非常轻松地把ASP.NET Web应用部署到目标服务器。这个功能既可以把Web项目复制到同一服务器,也可以复制到不同的服务器。

如果你用VS.NET开发Web应用程序,发布Web应用之前要做的第一件事情是把活动的解决方案配置Debug改成Release,如图三所示,这个选项不仅使编译器优化代码,而且删除所有与调试有关的符号信息,使代码运行速度更快。打开配置管理器的步骤是:在解决方案资源管理器中选择Web应用项目,选择菜单项目”→“XXXX项目属性,其中XXXX是项目名称,再点击配置管理器。在活动的解决方案配置中选择“Release”

要把Web项目复制到目标服务器,在VS.NET中选择菜单项目”→“复制项目...”VS.NET显示出图四的对话框。

复制项目对话框提供了下列选项:

目标项目文件夹:用来指定复制项目的目标位置。目标位置可以在同一个服务器上,也可以在一个远程服务器上。

Web访问方法:将Web项目复制到目标文件夹时所用的方法,可供选择的Web访问方法有两种。首先是文件共享,即通过文件共享机制直接访问Web服务器上的文件系统,不要求Web服务器上安装有FrontPage服务器扩展;其次是“FrontPage”,即通过基于HTTP协议的FrontPage服务器扩展把Web项目的文件传输到服务器,使用该选项要求Web服务器上必须安装了FrontPage服务器扩展,这种Web访问方法能够在目标服务器上自动创建必要的虚拟目录。

复制:包含三个选项,分别是: 仅限于运行该应用程序所需的文件,即只复制生成功能输出的文件(bin文件夹中的 DLL 和引用)以及内容文件(例如.aspx.asmx文件),大多数情况下,我们可以用该默认选项部署应用程序; 所有项目文件,即复制生成功能输出的文件(bin文件夹中的DLL和引用)和项目中的所有文件,包括项目文件和源程序文件, 源项目文件夹中的所有文件,即项目文件夹(或子文件夹)中的所有项目文件和任何其他文件。

根据实际情况选择图四对话框的选项,点击确定,即可把Web项目部署到服务器。

六、用Web安装项目部署

XCOPY部署和VS.NET复制功能简单易用,但不能够满足所有的部署需要。例如,如果应用程序有更加复杂的配置和部署要求,VS.NET“Web安装项目才是最佳的选择。

虽然我们可以用一大堆的生成输出、安装类、数据库创建脚本来发布Web应用,但对于复杂的Web应用项目,通常不如使用Windows安装程序来得方便。为支持Web应用部署,VS.NET专门提供了一种“Web安装项目Web安装项目与普通的安装项目不同,Web安装项目把Web应用安装到Web服务器的虚拟根文件夹上,而普通安装项目一般把应用程序安装到Program Files目录。

由于VS.NET安装程序建立在Windows安装程序的基础上,所以能够利用Windows安装程序的优势。在开始探讨VS.NET Web安装项目之前,我们先来了解一下Windows安装程序的主要特点,因为它是VS.NET Web安装项目的核心基础。

6.1 Windows安装程序

Windows安装程序是一个软件安装和配置服务,Windows 2000Windows XP操作系统都带有Windows安装程序,而且微软为所有Win 9xNT 4平台也提供了功能相似的免费版本。在Win2K/XP中,Windows安装程序的核心是一个Windows Installer服务,Windows Installer