辨析Web Service, SOAP, REST, OData之间的关系与区别

news2024/12/23 15:08:05

最近发现,对于刚刚接触HTTP服务的同学,在一些基础概念上容易混乱。很多同学搞不清楚Web Service,SOAP,REST以及OData这些技术之间的关系与区别。

文本会尽量用最简洁的方式,解释这几个概念,并附上一些资料的链接,供有需要的同学进一步阅读。

1. 关系说明

首先,开宗明义,让我们先明白这几者的关系:

Web Service:一种跨编程语言、跨操作系统平台的远程调用技术。这个很好理解,Web Service主要可以实现不同系统之间的通信。如果以SAP系统为例,通过Web Service可以实现两个不同的SAP系统之间,或SAP系统与其它第三方系统(例如,可以是.Net或Java平台的应用)间进行通信。

Web Service有两种实现方式,一种是SOAP协议方式,一种是REST方式。

REST是一组架构约束条件和原则,描述了一种如何访问/使用HTTP服务的方式。(如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。)

OData是REST设计风格的一种实现,OData和其他Restful风格的Web service在于,OData提供了了描述数据和数据模型的一个统一的方式。所以说,OData并非是一种新的通信技术,OData也属于Web Service。

2. 概念辨析

2.1 SOAP方式的Web Service

目前而言,SOAP是一套Web Service(WS)的比较完整的实现方案。

在以SOAP方式实现的Web Service中,SOAP协议和WSDL构成了Web服务的结构单元。

SOAP也即“简单对象访问协议(Simple Object Access Protocol)”,我们知道Web Service通过HTTP协议发送和接收数据,SOAP协议中增加了一些特定的HTTP消息头,来说明HTTP消息的内容格式。客户端按照SOAP的格式便可以通过Web Service调用位于远程系统上的服务。

WSDL也即“Web服务描述语言(Web Services Description Language)”,客户端可以通过WSDL了解这个Web Service所提供的功能,描述了Web Service中提供的函数、函数的输入参数和返回值。

简而言之,在SOAP方式实现的Web Service中,SOAP描述了“访问方式”,通过WSDL描述了“服务内容”,SOAP方式的Web Service是WS的一套完整的实现方案。

2.2 SAP系统中的SOAP方式Web Service

在SAP系统中,开发和消费SOAP方式的Web Service十分方便。

在SAP Netweaver平台上通过UDDI工具,可以将SAP已有的功能(例如RFC, BAPI等)直接封装成web service对象,供其他系统调用,或者通过实现类调用其他系统的web service,进而轻松实现SAP与其它系统的集成。

完成这一Web Service封装和消费,在SAP系统中主要通过T-code 'SOAMANAGER' 完成,对于ABAP开发人员而言,并不需要了解Web Service的封装细节,只要学会如何“发布”和“消费”web service即可。

2.3 REST方式的Web Service - OData

REST也即“表述性状态转移(Representational State Transfer)”,REST是一种HTTP服务的设计风格,描述了一套如何设计和访问HTTP服务的原则。

因此,相较于SOAP,REST并非是一个协议,仅是一种设计风格,并没有强制的约束力。

不同的设计者可以依据自己的实际项目和需求,设计REST风格的Web Service,也正是由于这种“各自为战”的Web Service实现方式,让REST方式的web service在性能和可用性上通常会优于依据SOAP发布的web service, 但由于在细节上没有太多约束,其统一性上不及SOAP。

OData是REST设计风格的一种实现,OData和其他Restful风格的Web service在于,OData提供了了描述数据和数据模型的一个统一的方式。

因此,在一定程度上讲,OData方式的web service很好地解决了RESTful形式的Web Service在统一性上所面临的问题。

2.4 SAP系统中的OData

在SAP系统中,通过Gateway统一管理SAP 系统中的OData服务。

SAP Gateway是SAP Netweaver平台上的一个组件,用于集中管理OData相关的功能,实现SAP系统与外部设备、平台、应用的集成。我们可以通过SAP Gateway来创建并发布相应的OData服务。

在SAP系统中,创建OData服务的事务代码为SEGW。

通过SEGW,我们可将SAP系统内的数据库表、RFC等以OData的形式发布出去,供Web App使用。

因此,类似于SOAP形式的web service, 对于ABAP开发人员而言,并不需要了解Odata的封装细节,学会使用SEGW这个工具即可。此外,在SAP Fiori开发过程中,除了从backend发布OData服务,开发人员也可以直接将CDS发布OData服务。

3. 小结

SOAP和REST是Web Service实现的两种方式,各具特点,没有“那种形式的好,那种形式的不好”这一说。选取那种方式的Web Service主要取决于具体的场景和需求。只要能清晰、高效地解决问题的方案就是好方案。

目前在SAP系统中,SOAP形式的Web Service更多应用于系统间的集成,OData则广泛应用于Fiori应用程序开发中。

最后,分享一些链接,感兴趣的同学可通过以下链接获取阅读相关的资料。

1. RESTful架构详解:https://www.runoob.com/w3cnote/restful-architecture.html

2 Web service概念(SOAP): https://www.cnblogs.com/xdp-gacl/p/4048937.html

3. SAP Gateway与OData用法简介:https://blog.csdn.net/nkGavinGuo/article/details/90295406

4. SAP Web Service简介与配置方法:https://www.cnblogs.com/zohoo/p/7295920.html

5. OData在线帮助文档:https://www.odata.org/documentation/odata-version-3-0/odata-version-3-0-core-protocol/#overview

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章:在Mac OS上安装Go语言开发包

各位朋友们大家好! 本节主要为大家讲解如何在Mac OS上安装Go语言开发包,大家可以在Go语言官网下载对应版本的的安装包,如下图所示。 安装Go语言开发包 Mac OS 的Go语言开发包是 .pkg 格式的,双击我们下载的安装包即可开始安装。…

I.MX6ULL内核开发1:内核模块实验

目录 一、实验环境 二、编译4.19.35版内核 1、下载linux内核源码 2、安装必要的环境工具库 3、一键编译内核 4、获取编译出来的内核相关文件(与makefile文件一致) 三、内核模块代码分析 1、内核模块头文件 2、内核模块打印函数 3、文中语法分析…

filter滤镜实现网页置灰(纪念日)效果

目录 前言关键代码兼容ie的做法定位错乱的原因 前言 一些特殊纪念日的时候,很多网站的首页进行置灰处理。这种效果实际上是用滤镜filter实现的,几行css就可以实现。 在实现整个页面置灰的过程中,要注意页面中有定位的元素,就需…

java中 == 和 equels

1、 和 equals的区别 是操作符 操作符专门用来比较变量的值是否相同。对于基本类型变量来说,只能使用 ,因为基本类型的变量没有方法。使用比较是值比较。对于引用类型的变量来说,比较的两个引用对象的地址是否相等。 equals 是方法 equals方…

Linux kdump配置步骤和注意事项(基于debian、OpenEuler和自定义编译内核的Linux)

1、kdump简单描述 kdump是Linux中的一个内核转储机制,主要用于当Linux内核发生崩溃时,将该内核相关的信息和崩溃原因通过转储的形式保留下来,在debian系统中,相关信息会存储在dump文件中,在OpenEuler和CentOS等系统中…

utils:crypto-js的基本使用和(加密/解密)功能封装

目录一、基本使用1. 资源下载2. 目录结构3. 代码二、功能封装1. 封装代码2. 使用说明(1) 引入utils工具(2) 使用工具一、基本使用 1. 资源下载 crypto-js 2. 目录结构 3. 代码 <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equ…

【Linux】磁盘结构/文件系统/软硬链接/动静态库

文章目录前言一、磁盘结构1、磁盘的物理结构2、磁盘的存储结构3、磁盘的逻辑结构二、文件系统1、对 IO 单位的优化2、磁盘分区与分组3、对分组的具体管理方法4、文件操作三、软硬链接1、理解硬链接2、理解软链接3、理解 . 和 ..四、静动态库1、什么是动静态库2、动静态库的制作…

JavaScript 中的字符串

JavaScript 字符串 什么是字符串&#xff1f; 字符串是用来存储和处理文本数据的 比如&#xff1a;一句话、a等 字符串的创建方式 字面量方式进行创建 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta…

DW 2023年1月Free Excel 第十次打卡 Excel看板

第十章Excel看板 数据下载地址与参考链接&#xff1a;https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 数据看板作为数据动态展示的一种重要方式&#xff0c;被广泛的应用于各个领域&#xff0c;因此本节根据1个案例讲解使用Excel制作数据看板的过程&#xff…

大厂年薪43w测试开发手把手教你搭建Web自动化测试框架,超详细

测试框架的设计有两种思路&#xff0c;一种是自底向上&#xff0c;从脚本逐步演变完善成框架&#xff0c;这种适合新手了解框架的演变过程。另一种则是自顶向下&#xff0c;直接设计框架结构和选取各种问题的解决方案&#xff0c;这种适合有较多框架事件经验的人。本章和下一张…

使用Python读取和处理安卓传感器数据与CSV读取

多年来&#xff0c;数据一直是世界运作的重要组成部分。这些数据可以从GDP到血样&#xff0c;再到世界的各个方面。随着我们数据的增长&#xff0c;统计学找到了从它们中提取更多意义的方法。 这些方法之一被称为方差分析&#xff08;ANOVA&#xff09;。方差分析是一套统计模…

python进阶——人工智能视觉识别

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a;lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

最简单的k8s安装记录(包含dashboard)

使用sealos一键安装k8s集群 sealos-githubsealos使用文档 wget https://github.com/labring/sealos/releases/download/v4.1.4/sealos_4.1.4_linux_amd64.tar.gz && \tar -zxvf sealos_4.1.4_linux_amd64.tar.gz sealos && chmod x sealos && mv se…

编译原理学习笔记15——属性文法与语法制导翻译2

编译原理学习笔记15——属性文法与语法制导翻译215.1 S-属性文法15.2 L-属性文法15.3 翻译模式15.4 递归下降翻译器的设计15.1 S-属性文法 S-属性文法的自下而上计算 S-属性文法的自下而上计算 在分析栈中增加附加域存放综合属性值假设产生式A→XYZ对应的语义规则为a:f(X.x…

OAK深度相机操作温度范围说明

编辑&#xff1a;OAK中国 首发&#xff1a;Luxonis 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手君。…

基于SMOKE多模式排放清单处理技术及EDGAR/MEIC清单制作与VOCs排放量核算

查看原文>>>基于SMOKE多模式排放清单处理技术及EDGAR/MEIC清单制作与VOCs排放量核算 随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注…

String类——Java中常见的类(模拟登录案例练习)

目录 String类的概述及构造方法&#xff08;String类是Java中最常见的类&#xff09; String的特点 String类的判断功能 模拟登录案例 ​ String类的获取功能 两个小练习 String类的转换功能和String类的其他功能 string类练习 String类的概述及构造方法&#xff08;Str…

35/365 java 反射 Reflection Class类

1.动态语言 静态语言 动态语言&#xff1a; 运行时可以改变自身结构的语言eg: JavaScript, C#, PHP, Python 静态语言&#xff1a; 运行时结构不可变的语言eg: Java, C, CJava 不是动态语言&#xff0c;但通过反射机制获得了类似动态语言的特性&#xff0c;具有了一定的动态…

软件测试前沿技术:从中国新车评估规程谈谈自动化驾驶测试

背景C-NCAP全称China NewCarAssessmentProgramme&#xff0c;中国新车评估规程&#xff0c;是由E-NCAP发展而来&#xff0c;两者测试项目多数一致。E-NCAP全称是European NewCarAssessmentProgramme&#xff0c;译为欧洲新车评估规程&#xff0c;成立于1997年&#xff0c;是一个…

基于MirrorMaker与火山引擎的Kafka数据同步

Kafka MirrorMaker是Kafka官网提供的跨数据中心流数据同步方案&#xff0c;其实现原理是通过从Source集群消费消息&#xff0c;然后将消息生产到Target集群从而完成数据迁移操作。用户只需要通过简单的consumer配置和producer配置&#xff0c;启动MirrorMaker&#xff0c;即可实…