本主题介绍更新 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 2010 (https://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 数据库,并停止任何正在运行的实例,同时取消其注册。 若要停止并解除正在运行的实例,所有脱水或挂起的实例都必须手动恢复并完成,或者终止。
尽管不需要停止应用程序才能更新项目或安装应用程序,但建议在更新项目时始终停止应用程序。