更新应用程序的最佳做法

本主题介绍更新 BizTalk 应用程序和项目时应考虑使用的最佳做法。

版本控制

实现版本控制策略

  • 如果使用长时间运行的事务或无法关闭 BizTalk 应用程序来执行升级或 bug 修复,则良好的版本控制策略至关重要。 应规划所有 BizTalk 项目的版本控制策略:架构、映射、自定义适配器、管道、管道组件、业务流程、业务规则、BAM 以及业务流程和映射中调用的自定义类。

    对比全局程序集缓存(GAC)与 BizTalk 管理数据库中的程序集

  • 确保程序集的版本与 GAC 中的 BizTalk 管理数据库中相同,以便应用程序正常运行。 如果在部署 GAC 时并不总是在 GAC 中安装程序集,则可能在 GAC 和 BizTalk 管理数据库中有不同的版本,这将导致在运行时处理错误。

    使用 BizTalk 程序集检查器和远程 GAC 工具验证版本控制

  • BizTalk 程序集检查器和远程 GAC 工具(BTSAssemblyChecker.exe)检查部署到 BizTalk 管理数据库的程序集版本,并验证它们是否已在所有 BizTalk Server 计算机上的 GAC 中正确注册。 可以使用此工具验证包含特定 BizTalk 应用程序项目的所有程序集是否已安装在所有 BizTalk 节点上。 该工具与坚实的版本控制策略结合使用特别有用,用于验证每个 BizTalk 计算机上是否安装了一组程序集的正确版本,尤其是在使用并行部署方法时。

  • 该工具适用于支持\Tools\x86\BTSAssemblyChecker.exe的 BizTalk Server 安装介质。

    使用版本控制产品

  • 应使用版本控制产品(如 Microsoft Visual Studio® Team Foundation Server 2010)来跟踪和版本控制 BizTalk 项目。 有关 Microsoft Visual Studio® Team Foundation Server 2010 的详细信息,请参阅 Microsoft Visual Studio® Team Foundation Server 2010https://go.microsoft.com/fwlink/?LinkId=210637

    将项目分解成多个 BizTalk 应用程序

  • 为了执行 BizTalk 项目的程序集版本控制,需要以这样的方式对 BizTalk 解决方案程序集进行分解(打包),以便进行 BizTalk Server 版本控制。 有关因子分解的详细信息,请参阅 向应用程序添加构件

更新应用程序

使用 .msi 文件更新应用程序

  • 在生产中,升级应用程序通常是刻意的和精确的操作。 升级应用程序时,通常应使用手动清单。 但是,可以使用 .msi 文件简化某些步骤。 使用 .msi 文件时,可以将应用程序项目包装到可分发包中。 将更新的 DLL 推出到多个运行时框或执行组级部署时,.msi 文件特别有用。 创建 .msi 文件时,应从包中排除所有其他未更改的资源和绑定。

  • 如果更新 BizTalk 程序集,则应停止、取消登记、重新登记,然后在导入并安装 .msi 文件之前和之后手动启动 BizTalk 项目。 有关更新 BizTalk 程序集的详细信息,请参阅 清单:更新程序集

  • 如果使用并行版本控制升级 BizTalk Server 程序集,则必须在使用 .msi 文件之前和之后执行手动步骤。 有关所需手动步骤的详细信息,请参阅 清单:使用并行版本控制更新应用程序

更新程序集

在生产环境中递增程序集的版本

  • 如果要更新生产环境中运行的程序集,应始终递增程序集版本号。

    使用更新的程序集更新 GAC

  • 更新包含业务流程、架构或映射的程序集时,必须使用包含新版本的程序集更新 GAC。 否则,BizTalk Server 将使用过时的版本。 为此,在运行应用程序绑定到的主机实例的每台计算机上,从 GAC 卸载包含已更新项目的程序集的过时版本,并确保安装了新版本。

    更新程序集后重启主机实例

  • 如果现有应用程序中的 BizTalk 程序集已更新,可能需要重启主机实例,使更改生效。 重启主机实例会停止在主机实例上运行的所有其他应用程序。

更新工件

在依赖的项目之前取消部署依赖项目

  • 如果要取消部署另一个项目所依赖的项目,必须先取消部署依赖项目。

    注释

    如果不首先取消部署依赖项目,BizTalk Server 管理控制台将显示警告,并阻止按不正确的顺序取消部署项目。

    不要停止另一个应用程序依赖的项目

  • 如果停止一个应用程序中的项目(这可能会导致停止另一个应用程序所依赖的整个应用程序),则依赖的应用程序将无法正常运行。 有关停止应用程序的详细信息,请参阅 如何启动和停止 BizTalk 应用程序https://go.microsoft.com/fwlink/?LinkID=154729)。

    在移动工件之前添加对程序集的引用

  • 当您将一个工件移动到一个新应用程序时,任何它所依赖的其他工件也会被移动,除非新应用程序已经引用了包含这些依赖工件的应用程序。 此外,除非包含它们的应用程序已引用新应用程序,否则,任何依赖于被移动工件的工件也将被移动。 移动项目时,会显示还将移动的其他项目的列表。

更新绑定

自动重新配置绑定

  • 在应用程序中更新程序集时,通常会覆盖其绑定,否则程序集可能根本没有绑定,从而强制你手动重新配置绑定。 可以使用绑定文件自动执行此过程。 如果要更新同一版本的程序集,可以先导出程序集的绑定文件,然后更新程序集,然后将程序集导入应用程序,然后通过导入绑定文件重新应用以前的绑定。 如果要使用较新版本更新程序集,则可以导出绑定文件,编辑该文件以反映新的程序集版本,将新程序集导入应用程序,然后通过导入绑定文件来应用新绑定。 有关绑定文件的详细信息,请参阅 如何将绑定导出到绑定文件。 有关编辑绑定文件的详细信息,请参阅 自定义绑定文件https://go.microsoft.com/fwlink/?LinkID=155000)。

启动或停止应用程序

停止应用程序以更新项目

  • 如果您不停止应用程序以更新应用程序中的项目,则需要通过禁用终结点来暂时暂停发布到 MessageBox 数据库,并停止任何正在运行的实例,同时取消其注册。 若要停止并解除正在运行的实例,所有脱水或挂起的实例都必须手动恢复并完成,或者终止。

  • 尽管不需要停止应用程序才能更新项目或安装应用程序,但建议在更新项目时始终停止应用程序。

另请参阅

如何将绑定导出到绑定文件