一、前言

昨天为止,政府的一个公共部门的项目顺利结束,就系统间消息传输这个点,知识点总结一下。本文主要参考octoperf的文章,链接见文末参考资料。

系统中用到的是SOAP协议进行传输数据,有人会立马会问为什么不用Rest,它更快,更简单。可能会说一大堆东西来反驳这个继续选型。技术,没有好坏,在限定的条件下,合适的就是对的,满足需求的就是好的。下面,进入正文。

二、Rest vs Soap

Rest 是一种构造风格,而Soap是一种传输协议。它们不是同样的东西,因此不能直接进行比较,接下来用一个表格,就某些点来进行比较。

sdfdsf SOAP Rest
当API变化时 客户端代码必须用新的WSDL进行在编译 后台可兼容
同步/异步 异步消息 同步
带宽的使用
可缓存否 不可以 可以
数据格式 只有XML XML,JSON,纯文本等
错误处理  内置错误处理机制 没有
暴露业务逻辑方式 服务接口 URIs
失败处理 内置再尝试机制 期待客户端进行再尝试
可靠性 可靠 不可靠。HTTP delete 即使失败,也会返回OK
安全性 支持SSL和WS-Security 依赖服务设计者提供的文档
需要的工具 需要中间件的支持 只需要支持HTTP即可
哪些领域使用 金融,支付网关,通信 社交媒体,Web,手机

 

 

 

 

 

 

 

 

 

 

2.1 SOAP

SOAP是被Web Services使用的标准的消息协议,主要目标是用于内部的Application的信息传递(SOAP = XML + 通信协议(如HTTP、FTP等))。WSDL(Web Services Description Language)就是描述Web Services的资料。描述了Services的接口,利用相关的工具,可以通过WSDL生成任何语言的、调用services的代码。大多数API测试工具,支持SOAP可以自动测试代码。

2.2 REST

Representational State Transfe

Rest vs Soap 比较

 它通过网络暴露出公共API,来对数据进行CRUD操作。

发送请求的例子:

GET /articles?include=author HTTP/1 

Json返回响应:

HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
  "data": [{
    "type": "articles",
    "id": "1",
    "attributes": {
      "title": "JSON API paints my bikeshed!",
      "body": "The shortest article. Ever.",
    },
    "relationships": {
      "author": {
        "data": {"id": "42", "type": "people"}
      }
    }
  }],
  "included": [
    {
      "type": "people",
      "id": "42",
      "attributes": {
        "name": "John",
        "age": 80,
        "gender": "male"
      }
    }
  ]
}
View Code

相关文章: