TCP 增强侦听器消息链接
TCP 增强侦听器消息 (ELM) 链接模型允许使用 COMMAREA 在 TI 和服务器 TP 之间传递数据和参数。 该模型还允许并发服务器链接到 CICS DPL 程序。 增强侦听器是在 CICS Transaction Server 版本 1.4 中引入的,它的体系结构通过消除 TRM 和 TRM 回复序列来提高 CICS TCP/IP 环境的效率。 增强侦听器接受来自初始流中的客户端的标头和请求数据,使服务器应用程序无需在应用程序数据可用之前提供单独的响应。 增强侦听器要求客户端执行以下操作:
构造包含请求标头、后跟应用程序请求数据的单个数据流,并发送到服务器应用程序
从服务器应用程序接收包含回复标头和应用程序数据的单个数据流
下图汇总了客户端、增强 CICS 侦听器、并发服务器和大型机事务程序之间发生的工作流。 括号中的数字指示事件发生的大致顺序。 数字后跟对事件的更详细的描述。
TCP ELM 链接编程模型的汇总工作流关系图
TCP ELM 链接编程模型的工作方式如下:
应用程序在组件服务或 .NET Framework 中配置的 TI 组件中调用方法。
TI 运行时调用 TI 自动化代理。
如果应用程序是 COM+ 组件,则 TI 自动化代理将:
读取以前由 TI 设计器创建的类型库
将自动化数据类型映射到 COBOL 数据类型
如果应用程序是 .NET Framework 程序集,则 TI 自动化代理将:
读取以前由 TI 设计器创建的程序集和元数据
将 .NET Framework 数据类型映射到 COBOL 数据类型
然后,TI 自动化代理将:
调用转换例程,将应用程序数据转换为大型机 COBOL 类型
生成表示 COBOL 声明或 copybook 的平展数据流缓冲区。
将消息传递给 TCP 传输组件。
TI TCP 传输使用大型机计算机的 Internet 协议 (IP) 地址和侦听器的端口地址将连接请求发送到增强侦听器。
标准侦听器接受连接请求,并告知 TI 运行时发送 ELM。 然后,增强侦听器将等待 ELM。
ELM 是格式化的数据记录,用于标识要通过使用其 TRANID 调用的服务器 TP。 侦听器 TP 是一种特殊的大型机 TP,其主要功能是接收运行 TCP/IP 的客户端应用程序发送的服务器 TP 调用。 IBM 提供的增强侦听器 TP 的 TRANID 由用户定义。
TI 运行时设置 ELM 的格式,并将其发送到增强侦听器。 然后,TI 会绕过等待 ELM 回复的传输逻辑,并立即在请求标头之后发送应用程序请求数据。 然后 TI 会等待 ELM 回复。
增强侦听器接收 35 字节 ELM,然后读取 ELM 标头的内容。 增强侦听器在事务初始消息中放置 35 个字节 (TIM),但不对其内容进行操作。
TIM 描述服务器正在其中运行的 TCP/IP 环境,并包含并发服务器用来与 COMTI TCP 传输进行通信的 TCP/IP 套接字信息,以及并发服务器用于自定义其执行行为的客户端消息标头。 标头包含要链接到的服务器程序的名称。
增强侦听器启动在侦听器定义中定义的并发服务器 TP 程序(Mscmtics cbl 示例应用程序)。
Mscmtics.cbl 是 Microsoft 示例 TP 文件,用于使用 COMMAREA 在 TI 和服务器 TP 之间传递数据。 Mscmtics.cbl 示例 TP 由 Microsoft 开发,作为 Host Integration Server 软件的一部分提供。 它位于 $\Microsoft Host Integration Server\SDK\Samples\Comti\ProgrammingSpecifics\Tcp。 使用此模型之前,必须在大型机计算机上编译、链接和安装它。
注意
如果增强侦听器无法启动并发服务器,则侦听器将设置错误消息的格式,并将其发送回 COMTI TCP 传输。 侦听器无法启动的原因包括:
由于 CICS 资源有限(例如,超过最大的 CICS 任务数或并发服务器任务数)而拒绝连接
并发服务器的 TRANID 无效或已禁用
与事务 ID 相关联的并发服务器程序无效、已禁用或不可用
注意
CICS 侦听器提供的错误消息基于字符,始终以字母 EZY 开头。 错误消息的长度是可变的,消息的末尾由 CICS 侦听器关闭的套接字决定。
增强侦听器调用主机环境中的套接字应用程序协议接口 (API)。 在增强侦听器为并发服务器事务发出 start 命令后,增强侦听器即不在应用程序处理循环中,可以随意侦听另一个传入请求。
并发服务器检索 TIM,连接套接字,并读取 ELM 的内容。
TI 通过 CICS COMMAREA 将应用程序数据传递给服务器应用程序计划,该计划包含使用标准 EXEC CICS 链接调用的业务逻辑。 TI 运行时还会发出关闭发送 1/2 套接字的命令,并等待回复数据。
服务器 TP 接收应用程序数据、处理请求,并对数据执行业务逻辑。 所有业务逻辑都在服务器 TP 中定义。
并发服务器通过 COMMAREA 将 ELM 回复标头发送到 TI。
服务器 TP 准备回复数据,然后通过 COMMAREA 将响应发送到客户端。
应用程序回复数据流由两部分组成。 第一部分是 ELM 回复,告知传输请求是成功还是失败。 TCP 传输将使用来自流的 ELM 回复,之后,如果 ELM 回复指示调用成功,则接收应用程序回复数据,直到并发服务器关闭套接字。
并发服务器关闭套接字
TI 自动化代理接收回复数据并处理回复。 TI 自动化代理将:
接收来自 TCP 传输组件的消息。
读取消息缓冲区。
如果应用程序是 COM+ 组件,则 TI 自动化代理将:
将 COBOL 数据类型映射到自动化数据。
调用转换例程,将大型机 COBOL 类型转换为应用程序数据。
如果应用程序是 .NET 程序集,则 TI 自动化代理将会:
将 COBOL 数据类型映射到 .NET Framework 数据类型。
调用转换例程,将大型机 COBOL 类型转换为应用程序数据。
TI 运行时将转换后的数据发送回调用方法的 COM 或 .NET Framework 应用程序。
若要实现此模型,必须使用 IP 地址、端口号和 CICS 程序名称提供 TI,以执行并发服务器程序传递的应用程序 (Mscmtics.cbl)。
Host Integration Server 包含演示如何实现 TCP ELM Link 编程模型的示例代码。 该示例代码位于 \安装目录\SDK\Samples\AppInt。 启动 Microsoft Visual Studio,打开所选的教程,并按照“自述文件”中的说明进行操作。
另请参阅
事务集成器组件
事务请求消息
将数据类型从自动化转换为 z/OS COBOL]
将数据类型从 z/OS COBOL 转换为自动化
CICS 组件
TI 运行时
选择适当的编程模型
编程模型