部署应用程序的最佳做法
本主题列出了在部署 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 由项目名称和(可选)其他属性组成。 如果在一个应用程序中包括某个项目,然后从另一个应用程序创建对它的引用,则在停止包含该项目的应用程序时,引用应用程序可能无法正常运行。
此最佳实践适用于所有项目类型,但文件除外(比如 Readme 文件和脚本,它们是以文件类型的项目添加到应用程序中的)。 这是因为可以在 BizTalk 组中部署多个同名的文件项目。 因此,您可以在两个或多个应用程序中使用具有相同名称的文件。 在这种情况下,停止一个应用程序不会影响另一个应用程序。 有关添加文件项目的详细信息,请参阅 如何向应用程序添加文件。
在单独的应用程序中部署共享网站
如果某个网站将由多个业务解决方案共享,应将该网站部署在一个单独的应用程序中。 这是因为在卸载某个 BizTalk 应用程序时,作为该应用程序一部分的任何网站的虚拟目录也会被删除,尽管该网站正在运行。 如果该网站与另一个业务解决方案共享,则会导致这个业务解决方案不能正常工作。
在单独的应用程序中部署共享策略
如果某个策略将由两个或多个应用程序使用,应将该策略部署在一个单独的应用程序中,而不是创建从一个应用程序到另一个应用程序的引用。 这是因为当其中一个应用程序停止时,会取消部署其策略。 如果您停止一个应用程序,而该应用程序包含另一个程序所使用的策略,则该策略将不能在另一个应用程序中起作用。
在单独的应用程序中部署共享证书
如果某个证书由两个或多个应用程序的发送端口或接收位置使用,应将该证书部署在一个单独的应用程序中,然后从需要使用该证书的应用程序中引用该程序。 这是因为 BizTalk 组中只有一个项目可以有一个 LUID,因此无法在两个不同的应用程序中导入相同的证书。 如果尝试导入两个使用同一证书的应用程序,则第一个导入将会成功,而第二个导入将会失败。 在这种情况下,使用“覆盖”导入选项并不能解决问题,因为您要覆盖的现有证书包含在另一个应用程序中。
导出和导入 BizTalk 应用程序
部署大型 .msi 文件时,可能需要增加BizTalk Server用于部署应用程序的 COM+ 组件的默认事务超时
如果尝试部署 .msi 文件 (超过 100 MB) ,则应用程序可能不会在应用程序部署期间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 应用程序。