简单对象访问协议 (Simple Object Access Protocal,SOAP)
Web服务描述语言 (Web Services Description Language,WSDL)
Web Service
Web Service 指的是通过网络提供的服务,通过 WSDL (Web Services Description Language) 来描述服务和操作。使用 XML 作为消息格式,通过 SOAP 协议传输。
WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成。
WSDL
通过 WSDL,可描述 Web 服务的三个基本属性:
服务做些什么:服务所提供的操作(方法)
如何访问服务:和服务交互的数据格式以及必要协议
服务位于何处:协议相关的地址,如 URL
SOAP 协议
一个基于 XML 的协议。包括 4 个部分:
SOAP 封装 (Envelop),定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架
SOAP 编码规则 (Encoding Rules),用于表示应用程序需要使用的数据类型的实例
SOAP RPC 表示 (PRC Representation),远程过程调用和应答的协定
SOAP 绑定 (Binding),使用底层协议交换信息
gSOAP
SOAP 本质是基于 XML 的通信协议,涉及复杂的 XML 序列化/反序列化、命名空间处理、HTTP 传输等底层细节。
gSOAP 是 C/C++ 开发 WebService 的工具集,通过封装 SOAP/REST 协议底层细节,自动生成通信代码;让 C/C++ 开发者可以像编写本地函数一样,快速实现 WebService 的调用(客户端)和发布(服务端)。
wsdl2h:
- WSDL 是 WebService 的接口说明书,wsdl2h 将其中定义的接口、数据类型、命名空间等信息转换为符合 gSOAP 规范的 C/C++ 头文件 (
.h文件) client.h
soapcpp2:
- 基于
wsdl2h生成的头文件,生成实现 SOAP 通信的核心代码(包括客户端/服务端的框架代码、序列化/反序列化函数、SOAP 消息处理逻辑等),开发者只需要填充业务逻辑即可。 soapH.hsoapC.hsoapClient.hsoapStub.h
SOA 与 微服务 的区别
微服务相比于SOA更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响;
微服务提供的接口方式更加通用化,例如
HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
SOA架构是一个面向服务的架构,可将其视为组件模型,其将系统整体拆分为多个独立的功能模块,模块之间通过调用接口进行交互,有效整合了应用系统的各项业务功能,系统各个模块之间是松耦合的。
REST 规范
目的:为了让不同的软件或应用程序在任何网络环境下,都可以进行信息的互相传递。
表述性状态转移 (Representational State Transfer, REST),可以理解为资源表述性状态转移
RESTful
REST式的,是对遵循 REST 设计思想,同时满足设计约束的一类架构设计或应用程序的统称
人们借助 HTTP、JSON、URI、HTML 等 Web 服务开发中广泛使用的标准和协议,同时使用不同的编程语言编写客户端和服务端,通过 HTTP 方法操作资源状态,最后遵循 REST 设计原则实现的应用程序或服务架构。
资源 (Resource)
REST 是以资源为中心构建,互联网中一切暴露给客户端的事物都可以看做是一种资源
借助 URI (统一资源标识符) 标识 Web 上的资源
URI 和资源不是一一映射,一个资源可以设计多个 URI,但一个 URI 只能对应一种资源
表述 (Representational)
描述资源在 Web 中某一个时间的状态。
客户端和服务端借助 RESTful API 传递数据,实际就是在进行资源表述的交互。
表述在 Web 中常用表现形式有 HTML、JSON、XML、 纯文本等
状态转移 (State Transfer)
应用状态:
- 对某个时间内用户请求会话的相关信息的快照,保存在客户端,由客户端自身维护
资源状态:
- 保存在服务端,是对某个时间资源请求表述的快照
- 如果一段时间内没有对资源状态进行改变,客户端对同一资源请求返回的表述一致
- 状态转移还要借助 HTTP 方法来实现,如 GET 方法、POST 方法、 DELETE 方法等
超链接
通过在页面中嵌入链接和其他资源建立联系