部署应用程序的最佳做法

本主题列出了部署 BizTalk 应用程序时应遵循的最佳做法。

部署 BizTalk 应用程序

记录应用程序部署过程

  • 请确保详细记录了应用程序部署中使用的所有过程,以便你了解部署的执行方式,并知道如何进一步部署或取消部署。 任何未编写脚本的任何内容都应记录在详细步骤中。 这应包括记录对外部系统和第三方组件的部署的任何更改。

    编写应用程序部署脚本

  • 尽可能多地编写应用程序部署步骤的脚本。 脚本可降低部署过程中人为错误的风险。

创建 BizTalk 应用程序

编写 BizTalk 应用程序和 .msi 文件的创建脚本

  • BtsTask.exe 可用于编写 BizTalk 应用程序的创建脚本。 如果编写了应用程序的创建脚本,则可以使用生成服务器上的自动化过程自动生成包。 有关编写应用程序创建脚本的详细信息,请参阅 部署和管理 BizTalk 应用程序

部署 BizTalk 程序集

从不在生产计算机上从 Visual Studio 部署程序集

  • 在开发过程中,开发人员通常必须从 Visual Studio 重新部署程序集。 若要启用重新部署,Visual Studio 可能会取消部署、取消绑定、停止和取消列出程序集中包含的项目。 尽管这在开发环境中是必需的且合适,但在生产环境中可能会导致意外和不希望的后果。 因此,为了防止任何人在生产计算机上从 Visual Studio 部署程序集,我们建议不要在生产计算机上安装 Visual Studio。

  • 此外,从不引用运行 Visual Studio 的计算机的生产数据库。

将工件添加到 BizTalk 应用程序

在单个应用程序中将相关项目组合在一起

  • 尽可能多地将相关项目放置在同一 BizTalk 应用程序中。 这样,就可以将项目作为单个实体进行管理和部署,从而简化管理。 可以将支持相同业务流程的项目或执行类似功能的项目分组到单个应用程序中。

    在单独的应用程序中部署共享项目

  • 如果项目将由两个或多个应用程序共享,请将共享项目部署到单独的应用程序中。 例如,如果两个应用程序共享架构,请将架构放置在单独的应用程序中。 建议这样做,因为 BizTalk 组中只有一个项目可以有一个本地唯一标识符(LUID)。 LUID 由项目名称和(可选)其他属性组成。 如果在一个应用程序中包括项目,然后从另一个应用程序创建对它的引用,则在停止包含该项目的应用程序时,引用应用程序可能无法正常工作。

    此最佳做法适用于除文件(如自述文件和脚本)以外的所有项目类型,这些文件作为项目文件类型添加到应用程序。 这是因为在 BizTalk 组中可以部署多个同名的文件工件。 因此,可以在两个或多个应用程序中使用同名的文件。 在这种情况下,停止一个应用程序不会影响另一个应用程序。 有关添加文件项目的详细信息,请参阅 如何向应用程序添加文件

    在单独的应用程序中部署共享网站

  • 如果网站将由多个业务解决方案共享,请在单独的应用程序中部署网站。 这是因为当您卸载 BizTalk 应用程序时,作为该应用程序一部分的任何正在运行的网站的虚拟目录也会被删除。 如果网站与其他业务解决方案共享,则其他业务解决方案将不再正常运行。

    在单独的应用程序中部署共享策略

  • 如果策略由两个或多个应用程序使用,则应将其部署到单独的应用程序中,而不是创建从一个应用程序到另一个应用程序的引用。 这是因为当停止应用程序时,其策略将被撤回。 如果停止包含另一个应用程序使用的策略的应用程序,该策略将不再在任一应用程序中运行。

    在单独的应用程序中部署共享证书

  • 如果发送端口或接收位置在两个或多个应用程序中使用证书,则应在单独的应用程序中部署证书,然后从需要使用证书的应用程序引用此应用程序。 这是因为 BizTalk 组中只有一个项目可以具有单个 LUID,因此无法在两个不同的应用程序中导入相同的证书。 如果尝试导入两个使用相同证书的应用程序,则第一个导入将成功,第二个应用程序将不会成功。 在这种情况下,使用“覆盖导入”选项无法解决问题,因为要覆盖的现有证书包含在另一个应用程序中。

导出和导入 BizTalk 应用程序

部署大型 .msi 文件时,可能需要增加 BizTalk Server 用于部署应用程序的 COM+ 组件的默认事务超时

  • 如果尝试部署一个非常大(超过 100 MB)的 .msi 文件,则应用程序可能不会在应用程序部署期间 BizTalk Server 使用的 COM+ 组件的默认事务超时内部署。 如果与这些 COM+ 组件关联的事务在部署完成之前超时,则部署将失败。 如果要部署非常大 .msi 文件,请考虑采用以下方法之一来缓解此问题:

  • 部署几个较小的 .msi 文件,而不是一个大型 .msi 文件。

    • 在组件服务管理界面中增加与 Microsoft.BizTalk.ApplicationDeployment.Group 和 Microsoft.BizTalk.Deployment.DeployerComponent 组件关联的默认事务超时 3,000 秒。 这些组件分别属于 Microsoft.BizTalk.ApplicationDeployment.Engine 和 Microsoft.Biztalk.Deployment COM+ 应用程序。 有关详细信息,请转到 “设置事务超时”。

    防止绑定被覆盖

  • 如果不希望要导出的应用程序中的绑定覆盖要将 .msi 文件导入到的应用程序中的绑定,则不应选择绑定文件作为导出作期间要导出的资源。

    确保 .msi 文件安全

  • .msi 文件可能包含敏感数据。 请务必采取措施来帮助确保文件安全。 有关 .msi 文件安全性的详细信息,请参阅 安全和 Windows Installer

    确保绑定文件安全

  • 绑定文件可能包含敏感数据。 请务必采取措施来帮助确保文件安全。

    在没有人对工件进行更改时安排导出

  • 在用户不太可能更改制品的时间内安排导出操作。 这很重要,因为如果用户在导出作正在进行时修改基于数据库的项目、虚拟目录、证书或策略,更改将不会反映在导出的 .msi 文件中。

导入 BizTalk 应用程序

编写导入 .msi 文件的脚本

  • BtsTask.exe 可用于编写导入现有 BizTalk .msi 文件的脚本。 有关脚本 .msi 文件导入的详细信息,请参阅 部署和管理 BizTalk 应用程序

    注释

    白皮书也适用于 BizTalk Server。

  • 可以添加脚本以作为预处理或后期处理脚本运行。 但是,必须在脚本中包含逻辑来检查环境变量,以确定脚本正在执行哪个上下文(导入、安装或卸载),并相应地进行处理。 有关使用预处理和后处理脚本的详细信息,请参阅 使用预处理和后处理脚本自定义应用程序部署

    验证引用的项目是否存在

  • 导入的应用程序对另一个应用程序的引用时,BizTalk Server 会验证引用的应用程序是否存在。 但是,它不验证应用程序包含依赖项的项目是否包含在引用的应用程序中。 导入依赖于另一个应用程序中的项目的应用程序时,建议验证引用的应用程序是否包含所需的项目或项目。

    从 .msi 文件导入会阻止将更改的程序集存储在全局程序集缓存中

  • 若要更新应用程序中的项目,请将已更改的项目或更新的项目从 .msi 文件导入到应用程序中。 如果不使用 .msi 文件导入工件,您将需要通过将更改后的程序集存储到全局程序集缓存中来更新该组内的所有服务器。

    主机处理组用于更新部分服务器

  • 更新应用程序中的项目时,通常必须更新 BizTalk 组中的所有服务器。 但是,如果使用主机处理组,则只需更新组中服务器总数的子集。

    如果导入操作超时,请将应用程序拆分为额外的 .msi 文件

  • 导入操作如果持续时间超过3,600秒,将会超时。 如果尝试导入 .msi 文件并且操作超时,则应通过重新导出应用程序并选择要导出的工件子集,将应用程序的内容划分为多个 .msi 文件。 有关将应用程序导出到 .msi 文件的详细信息,请参阅 导出 BizTalk 应用程序