企业 Web 部署:方案概述

作者 :Jason Lee

这组教程使用具有实际复杂性的示例解决方案,以及虚构的企业部署方案,提供参考实现并为任务和演练提供通用上下文。 本主题介绍教程方案并介绍示例解决方案。

方案描述

Fabrikam, Inc.是一家虚构公司,它正在创建一种解决方案,允许远程销售团队从 Web 界面存储和检索联系人信息。

Fabrikam, Inc. 的应用程序生命周期管理 (ALM) 流程要求在软件开发过程的不同阶段将解决方案部署到三个服务器环境:

  • 开发人员测试或“沙盒”环境。
  • 基于 Intranet 的过渡环境。
  • 面向 Internet 的生产环境。

其中每个环境都有不同的配置和安全要求,并且每个环境都带来了独特的部署挑战。

Fabrikam, Inc. 服务器基础结构

这是 Fabrikam, Inc. 的高级开发和部署基础结构。

Fabrikam, Inc. 的高级开发和部署基础结构。

开发人员工作站、源代码管理基础结构、开发人员测试环境和过渡环境都驻留在 Fabrikam.net 域中的 Intranet 网络上。 生产环境驻留在外围网络 (也称为外围网络、外围安全区域和屏蔽子网) 上,该子网通过防火墙与 Intranet 网络隔离。 这是一种常见的部署方案:通常通过使用防火墙或网关服务器将面向 Internet 的 Web 服务器与内部服务器基础结构隔离开来。

在本示例中:

  • 具有单独生成服务器的 Team Foundation Server (TFS) 2010 服务器提供源代码管理和持续集成 (CI) 功能。
  • 开发人员测试环境包括 Internet Information Services (IIS) 7.5 Web 服务器和 SQL Server 2008 R2 数据库服务器。
  • 生产环境包括多个由 Web 场框架 (WFF) 控制器服务器同步的 IIS 7.5 Web 服务器,以及一个 SQL Server 2008 R2 数据库服务器。 实际上,数据库服务器可以使用聚类分析或镜像来提高可伸缩性和可用性。
  • 过渡环境旨在尽可能密切地复制生产环境的配置。
  • 防火墙和网络隔离策略不允许从 Intranet 直接自动部署到外围网络。

第二个教程为 Web 部署配置服务器环境更详细地介绍了其中每个环境的配置。

ALM 的团队角色

这些用户参与创建、管理、生成和发布 Contact Manager 解决方案:

  • Matt Hink 是 Fabrikam, Inc. 的 Web 应用程序开发人员。他是使用 Visual Studio 2010 开发 Contact Manager 解决方案的团队的一员。 Matt 在开发人员测试环境中的服务器上拥有完全管理员权限,这使他能够配置环境以满足他的需求。 他还具有对 Visual Studio 2010 TFS 实例的用户访问权限,他在其中存储了 Contact Manager 解决方案的源代码。

  • Rob Walters 是 Fabrikam, Inc. 开发团队的服务器管理员。 Rob 对 TFS 服务器具有管理访问权限,因此他可以配置 TFS 和 Team Build 的所有方面。 Rob 还具有对测试和过渡 Web 服务器的管理访问权限,并充当数据库管理员, (DBA) 测试和过渡环境中的数据库服务器。 Rob 已在 TFS 服务器上配置 Team Build 来执行以下任务:

    • 每当用户将文件签入到 TFS 时,在应用程序上生成并运行单元测试。 这称为 CI。
    • 在应用程序通过单元测试后,将自动将 Contact Manager 应用程序部署到测试环境。 这包括在初始部署时将数据库发布到测试服务器,并在初始部署后向数据库发布任何更新。
    • 通过单步过程将 Contact Manager 应用程序部署到过渡环境。
    • 创建 Web 包,Web 服务器管理员和 DBA 可以使用该包将应用程序发布到生产环境。
  • Lisa Andrews 是一名服务器管理员,负责将应用程序部署到 Fabrikam, Inc. 生产服务器。 她对 TFS Team Build 在生成 Contact Manager 应用程序后存储 Web 部署包的共享具有读取访问权限。 她还对生产 Web 服务器具有管理访问权限,以便将应用程序部署到生产环境。 此外,她还充当 DBA,在生产环境中将数据库和数据库更新部署到数据库服务器。

Contact Manager 解决方案

Contact Manager 解决方案旨在允许已注册、已登录的用户通过 Web 界面添加和编辑联系人信息。 Contact Manager 解决方案由四个单独的项目组成:

Contact Manager 解决方案旨在允许已注册、已登录的用户通过 Web 界面添加和编辑联系人信息。

  • ContactManager.Mvc。 这是一个 ASP.NET MVC3 Web 应用程序项目,表示解决方案的入口点。 它提供一些基本的 Web 应用程序功能,例如为用户提供创建和查看联系人详细信息的功能。 应用程序依赖于 Windows Communication Foundation (WCF) 服务来管理联系人,依赖于 ASP.NET 应用程序服务数据库来管理身份验证和授权。
  • ContactManager.Database。 这是一个 Visual Studio 2010 数据库项目。 项目定义存储联系人详细信息的数据库的架构。
  • ContactManager.Service。 这是一个 WCF Web 服务项目。 WCF 公开一个终结点,该终结点允许调用方对 Contact Manager 数据库执行创建、检索、更新和删除 (CRUD) 操作。 该服务依赖于 Contact Manager 数据库和ContactManager.Common.dll程序集。
  • ContactManager.Common。 这是一个类库项目。 WCF 服务依赖于此程序集中定义的类型。

本系列的第一篇教程“ 企业中的 Web 部署”中提供了解决方案及其部署要求的完整回顾。

部署任务

将应用程序部署到大型组织中的不同环境涉及多个不同的任务。 以下是教程涵盖的关键任务:

将应用程序部署到大型组织中的不同环境涉及多个不同的任务。

下面是从本文档前面所述的用户的角度介绍部署过程中每个步骤的列表:

  1. 团队的所有成员都会查看 Visual Studio 2010 中的 Contact Manager 解决方案,以确定关键部署要求和问题。
  2. Matt Hink 可以直接将 Contact Manager 解决方案从开发人员工作站部署到开发人员测试环境,以便对部署逻辑进行初始测试。
  3. Matt Hink 将应用程序添加到 TFS 中的源代码管理。
  4. Rob Walters 为 Team Build 中的 Contact Manager 解决方案创建各种生成定义。 每当用户签入新代码时,一个生成定义使用 CI 将解决方案部署到开发人员测试环境。 另一个生成定义允许用户根据需要触发到过渡环境的部署。
  5. 每次用户签入新代码时,Team Build 都会自动生成解决方案组件、运行单元测试,并在生成成功且单元测试通过的情况下将解决方案部署到开发人员测试环境。
  6. 当用户触发到过渡环境的部署时,解决方案将打包并部署在一个步骤中。 此过程还会生成一个包,用于手动部署到生产环境。
  7. Lisa Andrews 通过手动导入步骤 6 中创建的 Web 包,将应用程序部署到生产环境。

关键部署问题

Contact Manager 解决方案和 Fabrikam, Inc. 方案突出显示了在部署复杂的企业级解决方案时可能会遇到的各种常见问题和挑战。 例如:

  • 需要能够将项目部署到多个环境,例如开发人员或测试环境、过渡平台和生产服务器。 需要为每个环境使用不同的配置设置部署解决方案。
  • 需要同时部署多个依赖项目,作为单步或自动生成和部署过程的一部分。
  • 你需要能够从自动化过程推动部署。 例如,你希望在签入新代码时使用 CI 过程将 Web 应用程序部署到过渡环境。
  • 你需要能够控制部署过程并从 Visual Studio 外部设置部署变量,因为开发人员不可能为每个目标环境拥有正确的配置设置或必要的凭据。
  • 需要部署基于架构的数据库项目,并在后续部署中保留现有数据。
  • 需要临时部署成员身份数据库,而无需部署用户帐户数据。 可能还需要更新已部署的成员资格数据库的架构,而不会丢失现有用户帐户数据。
  • 将内容部署到各种目标环境时,需要排除某些文件或文件夹。

此外,在频繁更新和增量更新时管理部署会引发一些额外的挑战。 例如:

  • 每次开发人员签入新代码时,都会运行单元测试。 仅当代码通过单元测试时,才想要部署解决方案。
  • 将 Web 应用程序部署到过渡环境或生产环境时,需要在部署过程中将用户重定向到 app_offline.htm 文件。
  • 你想要记录部署活动。 部署过程应将成功或失败的部署电子邮件通知发送给指定的收件人。
  • 如果自动部署失败,部署过程应重试当前部署或部署以前的 Web 包。