Biztalk运行时的结构


BizTalk Server 本质上就是消息处理引擎。个人认为在了解Biztalk之前必须要知道的一部分便是BizTalk Server 的整体架构,只有对架构烂熟于心这样才能为往下深入学习做好基础。

首先来看一下Biztalk的整体架构图

wKioL1cfdZDQFgkfAACqZigrubk377.png

如上图所示,完整的绘制了Biztalk在接受端口接收到文件后整个处理文件的过程。

 

接下来分开叙述:(参照微软官方文档)


接收端口和接收位置

“接收端口”是一个或多个接收位置的集合,是BizTalk Server 的特定入口点。“接收位置”是接收消息的单个终结点(URL) 的配置。该位置包含接收适配器和接收管道的配置信息。“适配器”负责接收消息的传输和通信部分。

发送端口和发送端口组(多个发送端口)

“发送端口”是发送管道和发送适配器的组合。发送端口组是发送端口的集合,作用很像电子邮件分发列表。发送到发送端口组的消息将被发送到该组中的所有发送端口。发送管道用于准备来自 BizTalk Server 的消息以将其传输到其他服务。发送适配器负责使用特定协议实际发送消息。

业务流程

业务流程可以通过 MessageBox 订阅(接收)和发布(发送)消息。此外,业务流程可以构造新的消息。使用已讨论过的订阅和路由机制接收消息。在填入业务流程的订阅后,将激活新的实例并传送消息;对于实例订阅,如有必要,将解除对该实例的冻结,然后传送消息。如果从业务流程发送消息,则这些消息将发布到 MessageBox,发布的方式如同消息到达接收位置,相应的属性将插入数据库以用于路由

MessageBox 数据库

BizTalk Server 中发布/订阅引擎的核心是 MessageBox 数据库。MessageBox 由两个组件构成:一个或多个 Microsoft SQL Server 数据库和消息代理。SQL Server 数据库为许多对象(包括消息、消息属性、订阅、业务流程状态、跟踪数据和用于路由的主机队列)提供持久化存储


适配器的作用

接收适配器通过读取数据流和创建消息来启动接收消息的过程。例如,文件适配器发现某文件已置于其配置的位置中,然后在流中读取该文件。 适配器将创建消息(Microsoft.BizTalk.Message.Interop.IBaseMessage接口实现)、向该消息添加部分(Microsoft.BizTalk.Message.Interop.IBasePart接口实现)、然后将数据流作为该部分内容进行提供。

此外,适配器还将写入和升级到与位置、适配器类型以及其他内容(与适配器相关)相关的消息上下文属性。在创建消息及其上下文后,适配器将消息传递到终结点管理器。 然后,通过为接收位置配置的接收管道处理该消息。 在消息由管道处理后,终结点管理器使用消息代理发布该消息前,使用映射将消息转换为所需格式。

管道的作

尽管初始消息是由适配器创建的,但对收到消息的处理过程大部分发生在接收管道中。管道处理针对消息内容以及消息上下文。 消息内容通常在解码、拆装和验证阶段进行处理,而对消息上下文的处理则可发生在所有阶段。 但是,管道无需作用于内容或上下文。例如,默认的直通管道并未配置任何组件并且不会对消息内容或上下文进行处理。 为简单起见,此文档将重点介绍拆装组件,因为这些组件通常对消息路由的影响最大。

拆装器的工作是处理来自适配器的传入消息并将其拆装成多个消息,以及对消息数据进行解析。在传入消息具有多个较小的消息时,称为交换。 通过使开发人员能够配置与包装内容(即,平面文件拆装器的头部架构和尾部架构以及 XML 拆装器的信封架构)以及(可能重复)正文内容有关的信息,平面文件拆装器和 XML拆装器可以处理交换。 此外,这两种拆装器都可将原始消息解析为 XML 内容。 如果在 BizTalk Server 中不需要做进一步的 XML 处理,则自定义拆装器无需将内容解析为 XML。 示例方案包括简单的路由方案,在此方案中,在特定接收位置进入系统的消息将发送到不具有映射或其他基于 XML 的处理的特定发送端口


下一章(主机、主机实例)