部署ASP.NET的三大技术(上) (1)

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.NET(VS.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页面(.aspx和HTML文件)、处理程序、模块、执行代码和其他文件(例如图形文件,配置文件等)构成,这些文件都可以从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部署将名为DeploymentExampleWebApp的Web应用部署到目标服务器RemoteServer。

图二

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

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

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

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

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

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

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

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

时间: 2024-09-20 17:46:01

部署ASP.NET的三大技术(上) (1)的相关文章

部署ASP.NET的三大技术(上) (3)

asp.net 6.2 VS.NET Web安装项目的特点 VS.NET中的部署项目以Windows Installer的功能为基础,允许我们执行如下操作: ⑴ 读取.写入注册键. ⑵ 在目标服务器的Windows文件系统中创建目录. ⑶ 提供注册组件的机制. ⑷ 提供安装期间从用户收集信息的机制. ⑸ 允许设置启动条件,例如检查用户名字.计算机名字.当前的操作系统.已经安装的软件.是否已经安装了.NET CLR,等等. ⑹ 允许在安装结束后运行自定义的配置程序或脚本. 在下面一节中,我们将了解

部署ASP.NET的三大技术(下) (3)

asp.net 除了"启动画面"对话框之外,用户界面编辑器还提供了许多其他预定义的对话框,例如"许可协议"."自述文件"."注册用户"."客户信息"等,这些对话框都可以利用图五的"添加对话框"窗口直接加入. 八.部署IIS配置信息 在准备部署ASP.NET应用程序的时候,一个必须考虑的重要问题是如何在部署应用的同时部署IIS的配置信息.如果用直接复制的方法部署Web应用,例如用XCOPY

部署ASP.NET的三大技术(上) (2)

asp.net 五.用VS.NET的"复制项目"功能部署 VS.NET的"复制项目"功能使我们能够非常轻松地把ASP.NET Web应用部署到目标服务器.这个功能既可以把Web项目复制到同一服务器,也可以复制到不同的服务器. 如果你用VS.NET开发Web应用程序,发布Web应用之前要做的第一件事情是把"活动的解决方案配置"从Debug改成Release,如图三所示,这个选项不仅使编译器优化代码,而且删除所有与调试有关的符号信息,使代码运行速度更

部署ASP.NET的三大技术(下) (1)

asp.net 提纲: 一.不同类型的部署编辑器 二.文件系统编辑器 三.注册表编辑器 四.文件类型编辑器 五.自定义操作编辑器 六.启动条件编辑器 七.用户界面编辑器 八.部署IIS配置信息 九.VS.NET安装项目 VS. 其他部署方案 正文: 在本文的第一部分中,我们看到了如何用各种不同的方式来部署一个ASP.NET Web应用,包括XCOPY部署.VS.NET的"复制项目"功能.VS.NET的Web安装项目.在这一部分,我们将了解如何利用VS.NET Web安装项目提供的功能,

部署ASP.NET的三大技术(下) (2)

asp.net 文件类型编辑器允许设置的属性 属性 作用 Name 为该类文件指定一个类型名称. Command 用户对该类文件执行操作时应当启动的应用程序 Extensions 指定该类文件的扩展名 Icon 指定该类文件的图标. Description 有关该类文件的简短描述 五.自定义操作编辑器 允许在安装时运行其他程序.自定义操作的运行顺序与它们在编辑器中的显示顺序相同.可通过鼠标拖动或使用"编辑"菜单上的"剪切"和"粘贴"命令将自定义操

ASP.NET新手教程:技术上的认识误区

.net如今已经很流行,成为赶时髦的程序员的首选.但是,大量刚刚接触.net的程序员的确存在一定的认识误区,这里先介绍一部分. 一..net程序再运行一次就会更快 许多人对此的解释是:.net程序第一次运行时会被编译成本地代码,所以再次运行会更快.但遗憾的是,其实每次运行,那些IL都会被翻译一次,不会保留下来.所以并不会变快.但为什么有时候真的觉得快了呢?其实所有程序都是这样,这是Windows再为你缓存用过的组件.真正需要CPU时间的程序,多运行是不会加快速度的. 二..net程序运行起来一定

一起谈.NET技术,在Mono 2.8上部署ASP.NET MVC 2

我们知道Mono 2.8对ASP.NET MVC 2的完全支持,下面我们就来测试下在Mono 2.8上部署ASP.NET MVC 2应用程序.我的环境是Opensuse 11.3,通过以下命令部署好Mono 2.8的开发环境,之所以说是开发环境是同时会更新MonoDevelop,支持Mono2.8的程序开发: zypper addrepo http://ftp.novell.com/pub/mono/download-stable/openSUSE_11.3 mono-stable zypper

在虚拟主机上部署ASP.NET AJAX 1.0 Beta的程序集

ajax|asp.net|程序|虚拟主机 由于ASP.NET AJAX 1.0 Beta将所需的程序集注册到了GAC中,因此有朋友担心无法在虚拟主机上部署ASP.NET AJAX了(总不见得让服务商在GAC中安装那些程序集吧).其实解决这个问题的方法非常简单.由于ASP.NET在搜索GAC之前,会首先在Bin目录中查找所需的程序集,因此只需简单地将所需的程序集复制到Web Site的Bin目录下即可. 当然,这只是部署ASP.NET AJAX 1.0程序集的方式,并不排除由于虚拟主机上的设置导致

百度ueditor编辑器部署ASP网站错误:百度编辑器ueditor部署服务器,浏览网页用户无法上传文件。

问题描述 报错信息:(本地能上传文件)--百度ueditor编辑器部署ASP网站错误POSThttp://www.by96.com/admin/ueditor/asp/controller.asp?action=uploadfile&encode=utf-8500(InternalServerError)webuploader.min.js:2b.register.sendwebuploader.min.js:2d.execwebuploader.min.js:1execwebuploader.