JSON、REST、SOAP、WSDL 和 SOA:它们如何链接在一起

2023-12-20

目前正在做一些考试,我正在努力解决一些概念。这些确实在我的笔记中“提到”过,但我并不真正理解它们是如何联系在一起的。据我的理解是:

SOA - 一种使服务消费者/提供者进行通信的解决方案。 (据我所知,这是其他一切的总称)

WSDL - 一种描述提供者服务的语言。

SOAP - 服务用来发送消息的 XML 协议“包装器”。与 WSDL 结合使用以提供参数?

REST - 一种功能类似于 SOAP 但避免 XML 的设计模式? (这个真的不太确定)

JSON - 使用 javascript 的 XML 替代方案? (也不确定这个)

环顾互联网,似乎没有明确定义所有这些是什么以及它们如何相互联系。


想象一下,您正在开发一个 Web 应用程序,并且您决定将功能与应用程序的表示分离,因为它提供了更大的自由度。

您创建一个 API,并让其他人也通过它实现自己的前端。您刚刚在这里所做的是实施一个SOA http://en.wikipedia.org/wiki/Service-oriented_architecture#Web_services_approach方法,即使用网络服务。

Web 服务使功能构建块可以通过标准访问 互联网协议独立于平台和编程语言。

因此,您在后端(Web 服务)和前端(消耗数据)之间设计一种交换机制,后端(Web 服务)负责处理和生成有用的内容,前端(使用数据)可以是任何东西。 (网络、移动或桌面应用程序,或其他网络服务)。这里唯一的限制是前端和后端必须“说”相同的“语言”。


这就是 SOAP 和 REST 发挥作用的地方。 它们是您选择与网络服务通信的标准方式。

SOAP:

SOAP http://www.w3.org/TR/2007/REC-soap12-part1-20070427/#firstexample内部使用 XML 来回发送数据。 SOAP 消息具有严格的结构,并且需要解析响应 XML。WSDL是可以发出哪些请求、使用哪些参数以及它们将返回什么的规范。它是 API 的完整规范。

REST:

REST是一种设计理念。

万维网代表了系统的最大实现 符合REST架构风格。

它不像 SOAP 那样严格。RESTful Web 服务 https://en.wikipedia.org/wiki/Representational_state_transfer使用标准 URI 和方法来调用 Web 服务。当您请求 URI 时,它会返回表示对象的,然后您可以对其执行操作(例如 GET、PUT、POST、DELETE)。您不限于选择 XML 来表示数据,您实际上可以选择任何内容(包括 JSON)

Flickr 的 REST API 更进一步,还允许您返回图像。


JSON and XML,是功能等效且常见的选择。还有基于 RPC 的框架,例如基于 Protobufs 的 GRPC 和 Apache Thrift,可用于 API 生产者和消费者之间的通信。 Web API 最常用的格式是 JSON,因为它在每种语言中都易于使用和解析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON、REST、SOAP、WSDL 和 SOA:它们如何链接在一起 的相关文章

随机推荐

  • 在 MS SQL Server 2005 中插入忽略?

    MS SQL Server 2005 中是否有 mysql 的 INSERT IGNORE 等效项或类似的功能 我不熟悉 mysql INSERT IGNORE 功能 但我正在阅读的文档听起来好像它所做的只是忽略 默默地失败 尝试插入表中已
  • Android Camera API - 强制关闭不会释放相机资源[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 因此 在开发自定义相机应用程序时 我在极少数情况下和在各种设备上意识到 如果应用程序必须强制关闭 它并不总是释放相机资源 有没有办法找
  • Django 模型过滤器存储在数据库中

    我正在 feincms 中处理内容类型 我想创建一个可以在数据库中存储过滤器的内容类型 大致看起来是这样的 from news models import Entry class NewsContent models Model filte
  • 无法在 RedHat Enterprise Linux 中使用 WebSphere MQ 8 配置 HermesJMS

    我正在尝试配置HermesJMS v1 14 with WebSphereMQ v8 0 但是我不能 我看过几个教程 并且遵循了它们 尽管没有一个完全是这些版本 这就是我所做的 我已经下载了这个试用版MQ V8 0 Trial for Mu
  • 如何在 Windows 10 上注册 ASP.NET?

    当我运行此命令时 出现以下错误 aspnet regiis exe i C Windows Microsoft NET Framework64 v4 0 30319 gt aspnet regiis exe i Microsoft R AS
  • 错误 ITMS-90432:Swift 支持无效。有解决办法吗?

    尝试将我的应用程序分发到 App Store Connect 时出现错误 这是我第一次遇到这个错误 我已经分发了 8 个不同版本的应用程序 没有出现任何错误 完整错误是 错误 ITMS 90432 Swift 支持无效 文件 APP NAM
  • IE8:选项标签默认获得“selected”属性(而cloneNode把它搞得一团糟)

    IE 似乎会自动在选项标签上添加 选定 属性 但如果你克隆Node它 事情就会变得奇怪 如果你在IE8中打开一个页面 代码如下
  • Cordova 忽略屏幕方向锁定[重复]

    这个问题在这里已经有答案了 我正在使用 Cordova 3 3 0 和我的 Galaxy S3 运行最新的 Cyanogenmod 来测试我正在开发的应用程序 我需要应用程序屏幕保持在 纵向 模式并被锁定 即使用户旋转设备也是如此 无论我尝
  • 为什么我会收到模板函数指针的链接器错误?

    我有一个 EventMgr 类 它有一个模板函数来注册侦听器 但是 当我注册监听器时 链接器给了我一个 错误 LNK2019 无法解析的外部符号 开胃菜代码 class EventMgr template lt class T class
  • 如何导入 .R 文件并为其指定别名?就像 import myfile.R as mf

    R 初学者 真的很想念 Python import pandas as pd import my file which is just a file not a package as mf out mf my cool function 我
  • indexedDB openCursor 事务成功返回空数组

    req db openCursor req customerData new Array a 1 req onsuccess function e var cursor e currentTarget result if cursor co
  • 如何撤消供应商/宝石捆绑安装

    I ran bundle install vendor gems所有宝石都按预期保存到宝石目录中 但是当我像这样删除它们时 rm rf vendor gems rails s Could not find rake 0 9 2 2 in a
  • C 库的 Qt 包装器

    我正在开发一个主要基于 C 库的 QT 项目 我喜欢 QT 的工作方式 并且想为我正在使用的每个 C 库制作一个 C 包装器 具有类似的 QT 风格 您有什么建议和建议 我应该做什么 不应该做什么 我想听到基于现实生活经验的答案 Thank
  • 使用 awk 将单个空格作为字段分隔符

    我正在处理一个文件 其中字段由单个空格分隔 awk 解释 FS 作为 一个或多个空格 当其中一个字段为空时 它会误读我的文件 我尝试使用 后面没有空格的空格 作为 FS 但 awk 不支持负向前瞻 简单的谷歌查询 如 单空格字段分隔符 aw
  • 使用 JavaScript 在 div 标签上添加点击事件

    我有一个div在我的表单中标记没有id财产 我需要设置一个on click对此事件div tag 我的 HTML 代码 div class drill cursor div 我不想添加id财产归我div tag 我怎样才能添加一个on cl
  • 从 Java 文本文件中删除特定行?

    我想从文本文件中删除特定行 我找到了那条线 但下一步该怎么办 任何想法 从流中读取文件并将其写入另一个流并跳过要删除的行
  • DIV 背景图像溢出

    我有一个带有背景图像的 DIV 元素 我希望它溢出到 DIV 的尺寸之外 它现在会切断图像 因为图像比 DIV 大 这可能吗 overflow visible不起作用 您可以通过替代方式完成此操作 box margin 50px 0 0 p
  • ASP.NET Web 应用程序/网站中的 IP 地址阻止列表

    我有一组IP地址 部署应用程序后 我希望只能从特定 IP 地址访问我的应用程序 如何使用 Global asax 而不是通过 IIS 实现此目的 This http www hanselman com blog AnIPAddressBlo
  • PyScripter 是否有 Mercurial 或 Git 版本控制插件? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我使用 Python 3 x 和 PyScripter 来编写脚本 我真的很怀念 PyScripter
  • JSON、REST、SOAP、WSDL 和 SOA:它们如何链接在一起

    目前正在做一些考试 我正在努力解决一些概念 这些确实在我的笔记中 提到 过 但我并不真正理解它们是如何联系在一起的 据我的理解是 SOA 一种使服务消费者 提供者进行通信的解决方案 据我所知 这是其他一切的总称 WSDL 一种描述提供者服务