SWIFTNet 客户端和服务器

SWIFT 使用术语客户端和服务器来描述发送和接收。 SWIFT 客户端是调用 SWIFTNet Link (SNL) 以通过 SWIFTNet 启动通信的过程。 在BizTalk Server中,这称为发送适配器。 SWIFT 服务器是流量通过 SWIFTNet 传入时由 SNL 调用的程序。 在 BizTalk Server 中,这称为接收适配器。

不要将 SWIFT 客户端和服务器与业务客户端和服务器混淆。 例如,客户端 (组织) 依赖于服务器 (组织) 提供的服务。 如果服务器 (组织) 想要启动与客户端 (组织) 的通信,则必须使用 SNL 客户端应用程序执行此操作,并且客户端 (组织) 必须具有 SNL 服务器应用程序才能接收传入流量。 下图对此进行说明。

客户端和服务器之间的 SWIFTNet 关系

SNL 假定客户端和服务器应用程序都是从命令提示符启动的可执行文件。 它们都链接到与实际 SNL 实例进程通信的 SNL API DLL。

SNL 客户端应用程序

SNL 客户端应用程序依赖于下面所述的 SwCall API。 从技术上讲,典型的客户端应用程序可以如下描述:

Main:  
  Initialize SNL API  
  Repeat  
    Call SwCall API  
  Until shutdown  

SNL 客户端应用程序必须在专用进程中运行,因为 SNL 按进程 ID 引用客户端上下文。 SNL 将使用 Tuxedo 资源的调用同步到 SwCall。 因此,一次只有单个客户端线程才能有效地执行 SwCall。

客户端支持同步通信模式。 这意味着,当响应从服务器返回时,将返回 SWCall。 下一个 SwCall 只能在此返回后执行。

SNL 服务器应用程序

SNL 服务器应用程序比客户端应用程序稍微复杂一些。 服务器应用程序在对 SNL DLL 执行阻止调用之前注册回调函数。 从技术上讲,典型的服务器应用程序可描述如下:

Main:  
  Initialize SNL API  
  Call SwRegisterSwCallback, registering the Callback function  
  Call SwServer, block and receive callbacks  
  
Callback(Request):  
  Process Request  
  Return Response  

服务器应用程序可以在回调函数中调用 SwCall API。 在某些情况下,它必须调用 SwCall 才能生成所需的结果或响应。 但是,服务器应用程序永远无法通过网络启动通信。 服务器应用程序永远不能是客户端应用程序。

在下图中,标记为 Initialize 的调用是 SNL API 初始化过程的抽象,此过程需要多个调用。 标记为 SwCallback () 的调用将重复多次,标记为 SwCall () 的调用是可选的。

SNL 服务器功能

服务器和 SNL API DLL 之间的所有调用都是标准 C 调用约定同步函数调用。

另请参阅

了解 FileAct 和 InterAct 适配器体系结构
SWIFT 发送配器体系结构
SWIFT 接收适配器体系结构