部署 BizTalk 解决方案时需要执行两项操作。
为什么部署 BizTalk 解决方案是一个两步操作?
- 将 BizTalk 解决方案注册到 BizTalk 管理数据库
- 将 BizTalk Artefacts 和依赖项安装到文件系统
首先,构成您的解决方案的 BizTalk 程序集必须注册到 BizTalk 管理数据库。这将使 BizTalk 知道哪些架构、地图、管道和编排可用。
这是通过将您的 Windows 安装程序包导入 BizTalk 来完成的。
请记住,典型的 BizTalk 平台通常由许多物理服务器组成。但是,BizTalk 组中的所有服务器共享一个 BizTalk 管理数据库。
因此,需要对整个 BizTalk Group 进行一次导入操作。
其次,已注册到 BizTalk 的 BizTalk 程序集需要物理存在于某个地方。因此,它们必须安装到文件系统中。
这是通过双击 Windows 安装程序包来完成的。
请注意,需要在属于 BizTalk Group 的任何物理服务器上重复安装操作。而且,由于 BizTalk 管理数据库中只有一个关于哪些程序集是解决方案的一部分的定义,这解释了为什么 BizTalk 程序集必须安装到全局程序集缓存 (GAC)。
请注意,到目前为止,规则很简单:
- BizTalk 程序集必须安装在 BizTalk 组中每台服务器的 GAC 中
- BizTalk 程序集必须在 BizTalk 管理数据库中导入(或注册)一次
但是,我们只处理了 BizTalk 程序集。此两步操作不涵盖 BizTalk 解决方案在运行时所需的所有其他程序集或其他依赖项(业务规则定义、COM 对象、绑定、配置文件等)。
跨环境部署
但是,当解决方案运行时,这些依赖项还必须根据需要存在于每个 BizTalk 服务器上。
这就是大多数这些人工制品也注册到 BizTalk 管理数据库的原因。但是这一次,这样做只是为了在创建 BizTalk 解决方案的 Windows Installer 程序包时引入依赖项,以便可以在目标服务器上适当地安装这些依赖项。
为什么 BizTalk 程序集在卸载时未从 GAC 中删除?
作为一般经验法则,注册到全局程序集缓存的程序集被视为共享资源。因此,出于安全原因,卸载时不会从 GAC 中删除 BizTalk 程序集。考虑当多个应用程序使用自定义 BizTalk 管道时会发生什么。在这种情况下,BizTalk 管道必须是单独的、通用的 BizTalk 应用程序的一部分。卸载此共享 BizTalk 应用程序将破坏依赖此管道的所有其他应用程序...
将资源添加到 BizTalk 管理数据库时,您可以选择在导入时或安装时将程序集安装到 GAC 。我强烈建议不要使用“ GacOnImport ”功能,这在大多数典型的多服务器 BizTalk Groups 中没有意义。
但是,对于 Windows Installer 程序包,有一种更简单、最灵活的方式来自定义可以对 BizTalk 程序集或其他依赖项执行的操作。这是通过预处理和后处理脚本完成的。
这些脚本允许在导入/安装操作期间在四个特定时间运行任意应用程序。
如果您希望在卸载时从 GAC 中删除程序集,只需在操作的“安装前”阶段安排适当的命令行即可。