【Asp.net精品源码栏目提醒】:网学会员--在 Asp.net精品源码编辑为广大网友搜集整理了:【精品】第16章 部署 - 其它资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
第 16 章 部 署 ............................................................................................................................................... 2 16.1 部署的设计 .................................................................................................................................... 2 16.2 部署选项 ........................................................................................................................................ 2 16.2.1 Xcopy 实用工具 ................................................................................................................... 2 16.2.2 Copy Web 工具 ..................................................................................................................... 2 16.2.3 发布 Web 站点 ..................................................................................................................... 2 16.2.4 部署项目 ............................................................................................................................... 2 16.2.5 ClickOnce ............................................................................................................................... 3 16.3 部署的要求 .................................................................................................................................... 3 16.4 部署.NET 运行库 .......................................................................................................................... 3 16.5 简单的部署 .................................................................................................................................... 4 16.5.1 Xcopy 部署 ........................................................................................................................... 4 16.5.2 Xcopy 和 Web 应用程序 ..................................................................................................... 5 16.5.3 Copy Web 工具 ..................................................................................................................... 5 16.5.4 发布 Web 站点 ..................................................................................................................... 5 16.6 Installer 项目 ................................................................................................................................. 5 16.6.1 Windows Installer ................................................................................................................... 6 16.6.2 创建安装程序 ....................................................................................................................... 6 16.7 ClickOnce ..................................................................................................................................... 12 16.7.1 ClickOnce 操作 ................................................................................................................... 12 16.7.2 发布应用程序 ..................................................................................................................... 13 16.7.3 ClickOnce 设置 ................................................................................................................... 13 16.7.4 应用程序缓存 ..................................................................................................................... 13 16.7.5 安全性 ................................................................................................................................. 13 16.7.6 高级选项 ............................................................................................................................. 14 16.8 小结 .............................................................................................................................................. 16 第 16 章 部 署 编译源代码并完成测试后,开发过程并没有结束。
在这个阶段,需要把应用程序提供给用户。
无论是
ASP.NET 应用程序、智能客户应用程序还是用 Compact Framework 构建的应用程序,软件都必须部署到目标环境中。
.NET Framework 使部署工作比以前容易得多,因为不再需要注册 COM 组件,编写新的注册表项。
本章将介绍可用于应用程序部署的选项,包括
ASP.NET 应用程序和智能客户应用程序的部署选项。
本章的主要内容如下: ● 部署要求 ● 简单的部署情况 ● 基于 Windows 安装程序的项目 ● ClickOnce16.1 部署的设计 部署常常是开发过程之后的工作,如果不下一定的工夫,可能会导致错误。
为了避免在部署过程中出错,应在最初的设计阶段就对部署过程进行规划。
任何部署问题,例如服务器的容量、桌面的安全性或从哪里加载程序集等,都应从一开始就纳入设计,这样部署过程才会比较顺利。
另一个必须在开发过程早期解决的问题是,在什么环境下测试部署。
应用程序代码的单元测试和部署选项的测试可以在开发系统中进行,而部署必须在类似于目标系统的环境中测试。
这是非常重要的,特别是目标计算机上不存在从属文件时。
例如,第三方的库很早就安装在项目的开发计算机上,但目标计算机可能没有安装这个库。
在部署软件包中很容易忘记包含这个库。
在开发系统上进行的测试不可能发现这个错误,因为库已经存在了。
对从属文件的说明可以帮助减少这种潜在的错误。
部署过程对于大型应用程序来说可能非常复杂。
提前规划部署,在部署过程中可以节省时间和精力。
16.2 部署选项 本节概述.NET 开发人员可以使用的部署选项。
其中大多数选项将在本章的后面详细论述。
16.2.1 Xcopy 实用工具 Xcopy 实用工具允许把程序集或程序集组复制到应用程序文件夹中, 从而减少了开发时间。
由于程序集是自我包含的,元数据描述了包含在程序集中的内容,所以不需要在注册表中注册。
每个程序集都跟踪它需要执行的其他程序集。
默认情况下,程序集会在当前的应用程序文件夹中查找从属文件。
把程序集移动到其他文件夹的过程将在本章后面讨论。
16.2.2 Copy Web 工具 如果开发的是 Web 项目,使用 Web 站点菜单中的 Copy Web 选项就会把运行应用程序所需要的组件复制到服务器上。
16.2.3 发布 Web 站点 在发布 Web 站点时,会编译整个站点,然后复制到指定的位置。
在预编译时,所有的源代码都会从最终的输出中删除,找出和处理所有编译错误。
16.2.4 部署项目 Visual Studio 2005 可以为应用程序创建安装程序。
基于 Microsoft Windows Installer 技术有 4 种选择:创建合并模块;为客户应用程序创建安装程序;为 Web 应用程序创建安装程序;以及为基于智能设备Compact Framework的应用程序创建安装程序。
还可以创建 cab 文件。
部署项目为安装过程提供了极大的灵活性和可定制性。
这 4 种部署方式对于大型应用程序都十分有用。
16.2.5 ClickOnce ClickOnce 可以建立自动升级的、基于 Windows 的应用程序。
ClickOnce 允许把应用程序发布到Web 站点、文件共享、甚或 CD 上。
在对应用程序进行升级、重新生成后,开发小组可以把它们发布到相同的位置或站点上。
最终用户在使用应用程序时,程序会检查是否有更新版本,如果有,就进行更新。
16.3 部署的要求 基于.NET 的应用程序一般都有运行要求。
在执行任何托管的应用程序之前,CLR 对目标平台都有一定的要求。
首先必须满足的要求是操作系统。
目前下面的操作系统可以运行基于.NET 的应用程序: ● Windows 98 ● Windows 98,第 2 版SE ● Windows Millennium EditionME ● Windows NT 4.0Service Pack 6a ● Windows 2000 ● Windows XP Home ● Windows XP Professional ● Windows XP Professional TabletPC Edition ● Windows Vista 其次,必须支持下面的服务器平台: ● Windows 2000 Server 和 Advanced Server ● Windows 2003 Server 系列 其他要求有 Windows Internet Explorer 5.01 或更高版本,MDAC 2.6 或更高版本应用程序需要访问数据和用于
ASP.NET 应用程序的 Internet Information ServicesIIS。
在部署.NET 应用程序时,还必须考虑硬件要求。
硬件的最低要求是: ● 客户机:奔腾 90MHz,32MB RAM ● 服务器:奔腾 133MHz,128MB RAM 要获得最佳性能,应增加 RAM,RAM 越大,.NET 应用程序运行得就越好。
服务器应用程序更是如此。
如果要运行使用 Windows Presentation Foundation WPF 、Windows Communication FoundationWCF或 Windows Workflow Foundation WWF的.NET 3.0 应用程序,要求就更严格。
.NET 3.0 至少需要 Windows XP SP2。
上述列表还应添加如下内容: ● Windows XP Home SP2 ● Windows XP Professional SP2 ● Windows XP Professional TabletPC Edition SP2 ● Windows Vista 不包括 IA64 平台 支持下述服务器平台: ● Windows 2003 Server Family SP1 ● Windows Server “Longhorn” IA64 版本 最低的硬件要求也有变化: ● 客户机:奔腾 400 MHz,96 MB RAM16.4 部署.NET 运行库 使用.NET 开发应用程序时,需要依赖.NET 运行库。
这似乎很明显,但有时可以忽略这一点。
如果应用程序不使用任何.NET 3.0 功能,就只需要安装 dotnetfx.exe。
如果使用了.NET 3.0 功能,还需要安装 dotnetfx3.exe。
在下面对创建部署软件包的讨论中,运行库的安装是可选的。
安装程序会检查是否安装了相应的运行库,如果没有,安装程序会从本地媒介中安装运行库,或者到指定的下载站点上下载并安装运行库。
16.5 简单的部署 如果在应用程序的初始设计阶段考虑了部署,那么部署就只是把一组文件复制到目标计算机上。
对于 Web 应用程序,就只需使用 Visual Studio 2005 中的一个简单的菜单选项。
本节就讨论这种简单的部署情况。
为了了解如何设置各种部署选项,必须有一个要部署的应用程序。
从 www.wrox.com 上下载的示例包含 3 个项目: SampleClientApp 、SampleWebApp 和 AppSupport 。
SampleClientApp 是一个智能客户应用程序,SampleWebApp 是一个简单的 Web 应用程序,AppSupport 是一个类库,它包含一个简单的类,该类返回一个包含当前日期和时间的字符串。
SampleClientApp 和 SampleWebApp 使用 AppSupport 的结果填充一个标签。
为了使用这些示例,首先加载并构建 AppSupport。
然后在其他两个应用程序中,设置对新构建的 AppSupport.dll 的引用。
下面是 AppSupport 程序集的代码: using System namespace AppSupport ///ltsummarygt ///Simple assembly to return date and time string. ///lt/summarygt public class Support private Support public static string GetDateTimeInfo DateTime dt DateTime.Now return string.Concatdt.ToLongDateStringquot quot dt.ToLongTimeString 这个简单的程序集足以演示可用的部署选项。
16.5.1 Xcopy 部署 Xcopy 部署就是把一组文件复制到目标计算机上的一个文件夹中,然后在客户机上执行应用程序。
这个术语来自于 DOS 命令 xcopy.exe。
无论程序集的数目是多少,如果文件复制到同一个文件夹中,应用程序就会运行,不需要编辑配置设置或注册表。
为了理解 Xcopy 部署的工作原理,打开示例下载文件中的 SampleClientApp 解决方案SampleClientApp.sln,把目标改为 Release,进行完整的编译。
然后,使用“我的电脑”或文件管理器导航到项目文件夹SampleClientAppbinRelease,双击 SampleClientApp.exe,运行应用程序。
现在单击按钮,打开另一个对话框。
这将验证应用程序是否能正常运行。
当然,这个文件夹是 Visual Studio 放置输出的地方,所以应用程序能正常工作。
创建一个新文件夹,命名为 ClientAppTest。
把这两个文件从 Release 文件夹复制到这个新文件夹中,然后删除 Release 文件夹。
再次双击 SampleClientApp.exe 文件,验证它是否正常工作。
Xcopy 部署只需把程序集复制到目标机器上, 就可以部署功能完善的应用程序。
这里使用的示例非常简单,但这并不意味着这个过程对较复杂的应用程序无效。
实际上,使用这种方法对要部署的程序集的大小和数目没有限制。
不想使用 Xcopy 部署的原因是它不能把程序集放在全局程序集缓存GAC中,或者不能在“开始”菜单中添加图标。
如果应用程序仍依赖于某种类型的 COM 库,就不能很容易地注册 COM 组件。
16.5.2 Xcopy 和 Web 应用程序 Xcopy 部署也可以用于 Web 应用程序,但文件夹结构有点不同。
我们必须建立 Web 应用程序的虚拟目录,并配置合适的用户权限。
这个过程通常需要使用 IIS 管理工具来完成。
在建立虚拟目录后,Web 应用程序文件就可以复制到虚拟目录中。
复制 Web 应用程序的文件有点困难,需要考虑两个配置文件和页面使用的图像。
16.5.3 Copy Web 工具 一种较好的方法是使用 Copy Web 工具。
在 Visual Studio 2005 的 Website Copy Web Site 菜单项中就可以访问工具。
它基本上是一个 FTP 客户程序,用于给远程位置来回传送文件。
远程位置可以是任意 FTP 或 Web 站点, 包括本地 Web 站点、 Web 站点和 RemoteFrontpage IISWeb 站点。
Copy Web 工具的另一个特性是,它会把远程服务器上的文件与源站点上的文件同步。
源站点总是 Visual Studio 2005 中当前打开的站点。
如果当前项目有多个开发人员,就可以使用这个工具与本地开发站点保持同步。
所进行的修改可以与用于测试的公共服务器进行同步。
16.5.4 发布 Web 站点 Web 项目的另一个部署选项是发布 Web 站点。
发布 Web 站点就是预编译整个站点,并把编译好的版本放在指定的位置。
该位置可以是文件共享、FTP 位置,或可以通过 HTTP 访问的其他位置。
编译过程会从程序集中去除所有的源代码,为部署创建 dll 文件。
这也包括.ASPX 源文件中的标记。
.ASPX 文件并不包含一般的标记,而是包含程序集的一个指针。
每个.ASPX 文件都与一个程序集相关。
无论是模型、后台代码或单个文件,这个过程都会执行。
发布 Web 站点的优点是速度快,很安全。
速度有所提高,是因为所有的程序集都已编译。
否则,第一次访问页面时会有一个延迟,因为要编译和缓存页面和从属代码。
安全性有所提高,是因为不部署源代码。
另外,在部署前所有的源代码都进行了预编译,找出了所有的编译错误。
使用 Website Publish Web Site 菜单项就可以发布 Web 站点。
我们需要提供要发布的位置。
这也可以是文件共享、FTP 位置、Web 站点或本地磁盘路径。
在完成编译后,文件就放在指定的位置。
在这里可以把文件复制到阶段服务器、测试服务器或产品服务器上。
16.6 Installer 项目 xcopy 部署使用起来很简单,但有时它缺乏一些功能。
为了克服这个缺点,Visual Studio 2005 提供了 6 个 Installer 项目类型。
表 其中 4 个类型基于 Windows Installer 技术, 15-1 列出了这些项目类型。
表 15-1 项目 类 型 说 明 Setup Project 用于安装客户应用程序、中间层应用程序和运行为 Windows 服务的应 用程序 Web Setup Project 用于安装基于 Web 的应用程序 Merge Module Project 创建合并模块,这些模块可以和其他基于 Windows Installer 的安装应用 程序一起使用 Cab Project 创建 cab 文件,通过旧式的部署技术进行发布 Setup Wizard 帮助创建部署项目 Smart Device CAB Project Pocket PC、Smartphone 和其他基于 CE 的应用程序的 CAB 项目 Setup 和 Web Setup Project 非常相似。
主要的区别是使用 Web Setup,项目会部署到 Web 服务器上的一个虚拟目录中,而使用 Setup Project,项目会部署到文件夹结构中。
这两个项目类型都基于Windows Installer,拥有基于 Windows Installer 的安装程序的所有功能。
在创建包含在多个部署项目中的组件或功能库时,一般使用 Merge Module Project。
创建合并模块时,可以设置专用于组件的配置项目,而无需在主部署项目的创建过程中考虑它们。
Cab Project 类型仅为应用程序创建 Cab 文件。
Cab 文件由旧式的安装技术以及一些基于 Web 的安装过程使用。
Setup Wizard 项目类型逐步完成创建部署项目的步骤,在此过程中向用户询问特定的问题。
下面的几节讨论如何创建这些部署过程,可以改变哪些设置和属性,可以增加什么定制内容。
16.6.1 Windows Installer Windows Installer 是一个服务,负责管理在大多数 Windows 操作系统上安装、更新、修复和删除应用程序。
它是 Windows ME、Windows 2000、Windows XP 和 Windows Vista 的一部分,可以用于Windows 95、Windows 98 和 Windows NT 4.0。
Windows Installer 的当前版本是 2.0。
Windows Installer 在数据库中跟踪应用程序的安装。
在卸载应用程序时,Windows Installer 很容易跟踪和删除已添加的注册表设置、复制到硬盘上的文件,以及已添加的桌面和“开始”菜单图标。
如果有某个文件仍被另一个应用程序引用,安装程序就会把它保留在硬盘上,不会使其他的应用程序中断。
数据库还可以修复应用程序。
如果注册表设置或与应用程序相关的 dll 被破坏或不小心删除了,就可以修复安装。
在修复过程中,安装程序会从上一次安装中读取数据库,并复制该安装。
Visual Studio 2005 中的部署项目可以创建 Windows 安装软件包。
部署项目允许访问大多数需要访问的内容, 以便安装给定的应用程序。
但是,如果需要更多的控制,就应查看 Windows Installer SDK,它在 Platform SDK 中,其中包含了为应用程序创建定制安装软件包的说明。
下面几节将使用 VisualStudio 2005 部署项目创建这些安装软件包。
16.6.2 创建安装程序 为客户应用程序或 Web 应用程序创建安装软件包并不困难。
第一个任务是标识应用程序需要的所有外部资源,包括配置文件、COM 组件、第三方库、控件和图像。
前面说过,在项目的文档说明中应包含一个从属文件列表。
这个文档说明是非常有用的。
Visual Studio 2005 可以询问程序集,提取该程序集的从属文件,但我们仍需要审查这些内容,以防遗漏。
另一个问题是,在过程的什么时候创建安装软件包。
如果设置了一个自动构建过程,就可以把安装软件包的构建包含在项目成功构建的过程中。
在耗时而复杂的大型项目中,过程的自动进行会大大减少出错的可能性,我们可以把部署项目包含在项目解决方案中。
Solution Property Pages 对话框中有一个 Configuration Properties 设置。
使用这个设置可以选择要为各种构建配置包含的项目。
如果选择 Release builds but not for the Debug builds 下面的 Build 复选框,安装软件包就只在创建发布版本时创建。
这也是下面示例所使用的过程。
图 15-1 显示了 SampleClientApp 解决方案的 Solution Property Pages 对话框。
其中显示了 Dubug配置,没有给安装项目选中 Build 复选框。
1. 简单的客户应用程序 在下面的示例中,要为 SampleClientApp 解决方案创建一个.
上一篇:
【精品】基于书签的校园搜索引擎
下一篇:
经济可持续发展论文:将可持续发展内生化的新经济发展方式