图2 Web Service作为外部合作伙伴的中央访问点
Web Service的功能基本上遵循经典的客户端/服务器调用序列,由服务请求者(客户端)和服务器(服务提供者)组成,如图3 所示。在这种情况下,客户端通过 HTTP POST 向服务器的网络服务发送消息。消息和随之发送的数据由Web Service根据实际服务支持的数据格式进行准备。应用程序根据服务实现中存储的业务逻辑处理数据,并将结果返回给接口。Web Service封装数据,并相应地将其作为 HTTP 响应发送回发送者。
图3 Web Service架构
在此过程中,通信基于两个核心组件:XML和HTTP。
在其底层架构中,Web Service通过另一个组件:服务注册表,扩展了这种经典的客户端/服务器架构。服务注册表包含所有可用网络服务的目录以及它们的服务描述。
因此,服务注册表作为通用描述,发现和集成(UDDI)服务——也就是说,作为网络服务的基于网络的信息目录。通常,应用程序向 UDDI 提交一个特定服务的搜索查询,并收到适当网络服务的服务描述,然后实际的调用会被指向这个服务。当今,UDDI 的应用越来越少,因为它缺乏对服务管理的规定,尤其是对单个服务请求者和服务提供者的记录。
在集成环境中,SOAP 协议迅速成为基于 XML 的数据交换的标准消息协议。HTTP 被用作传输协议。SOAP 通过将服务调用转换为 XML 消息进行传输(在服务请求者一侧)并从 XML 转换为相应的服务调用(在服务提供者一侧)来实现分布式系统之间的通信。换句话说,SOAP 使用 XML 实现远程过程调用。通过 HTTP 协议在客户端和服务器之间传输数据通常是无状态的。因此,所有消息都是独立传输和处理的,不参考上游数据传输。
SOAP 的优势在于,大多数集成系统可以导出 Web Service Description Language(WSDL)文件,扩展名为 .wsdl,这是定义基于 XML 的网络服务的标准。WSDL 描述了服务的功能,如何调用它,以及其访问点或URL。
RESTful
在 SAP 环境中,远程函数调用(Remote Function Calls,RFCs)仍然在使用。尽管 SAP 近年来将其他集成技术,如 Web Service或 OData 服务,纳入其产品组合,但在 SAP 环境中,大部分集成仍然使用 RFCs 完成。
RFCs 是 SAP 对远程服务或过程调用(也称为远程过程调用(Remote Procedure Calls,RPCs))的实现。通过 RPC,客户端可以从服务器程序调用服务或过程。服务器程序也可以安装在另一台计算机上。
图5 显示了 RPC 调用的示意表示。在客户端中调用一个占位函数。占位函数的任务是将传输的数据从客户端的格式转换为数据交换的定义格式。你可以在占位函数中实现其他服务(例如,序列化服务)。这个占位符确保所有消息按正确的顺序处理。在占位函数的最后一步,消息被传递给客户端的通信组件。客户端和服务器之间的传输通过两个通信组件进行。在服务器中,接收到消息后,通过调度程序选择正确的服务,并将消息传递给其占位函数。在占位函数中,进行反序列化(如果实现的话)和之后的消息转换到服务器的格式。然后,消息传输到实际的服务器程序。
具体参考:SAP RFC介绍:关于sRFC,aRFC,tRFC,qRFC和bgRFC
可以在两个 SAP 系统之间,或者在 SAP 系统与非 SAP 系统之间实现 RFC,但它们在两个 SAP 系统之间工作得最好。在 RFC 服务器中,可以通过为相应的函数模块设置远程启用选项,使 RFC 函数模块可用。在 RFC 客户端中,可以使用 CALL FUNCTION ... DESTINATION 语句从任何 ABAP 程序实现调用。使用前,必须首先通过事务 SM59 将目标创建为 RFC 连接。
对于在 SAP 系统和非 SAP 系统之间使用 RFC,SAP 提供了一个名为 SAP 连接器的工具集。一些常见的连接器: