一、Webservice的概念和原理
2019-10-01
参考资料:
《Tomcat与Java Web》,孙卫琴。
这一章节,我们主要解决关于Webservice概念性的问题,首先弄明白Webservice的概念和原理,然后弄清楚它的交互流程,这样容易理解后续Webservice的调用方法。
1 Web服务的定义
Web服务架构与Web一样,也是网络应用层的一种分布式架构,同时也是基于客户/服务器通信模式(C/S),并且也能实现异构系统之间的通信。在Web服务架构中,服务器端负责提供Web服务,而客户端则请求访问Web服务。
什么是Web服务呢?有两个重要概念。
1、Web服务确立一种基于Internet的分布式软件架构,它支持两个运行在不同操作系统平台上,并且用不同编程语言实现的系统能够互相通信。一个系统向另外一个系统公开的服务被称为Web服务。
2、Web服务可以被看做是客户端远程调用的各种方法,这些方法能处理特定业务逻辑,或者进行复杂运算等。下图显示客户端请求访问服务器端的一个Web服务的过程。
2 Web服务的通信协议
Web服务结构采用SOAP(Simple Object Access Protocol)作为通信协议。
(1)SOAP规定了客户端与服务器之间一律使用XML语言进行通信。XML是一种可扩展的阔平台的标记语言。
(2)SOAP规定了客户端与服务器发送的Web服务请求的具体数据格式,以及服务器端向客户端发送的Web服务响应结果的具体数据格式。
要实现Web服务架构,就意味着必须创建基于SOAP协议,负责发布和调用Web服务,以及负责发送Web服务响应结果的服务器,还要创建基于SOAP协议的负责请求访问Web服务的客户程序。
·
3 SOAP协议
1、SOAP(Simple Object Access Protocol),简单对象访问协议,是在分布式的环境中采用交换数据的简单协议,它以XML为通信语言。
2、SOAP采用的数据传输协议可以是HTTP/HTTPS协议,也可以是SMTP/POP3协议,还可以是为一些应用而专门设计的特殊数据传输协议。
3、SOAP有两种工作模式。一种称为RPC(Remote Procedure Call),另一种方法不统一,在Microsoft的文档中称为Document-Oriented,在Apache的文档中,称为Message-Oriented,它可以利用XML来交换机构更为复杂的数据,通常以SMTP作为数据传输协议。
可以把SOAP RPC简单地理解为这样一个开放协议:SOAP=RPC+HTTP+XML。它有以下特征:
(1)采用HTTP作为传输协议,并且采用客户/服务器模式。
(2)RPC作为同意的远程方式调用途径。
(3)传送的数据使用XML语言,允许服务提供者和客户经过防火墙在Internet上进行通信。
4、SOAP客户访问SOAP服务的流程如下(Webservice的交互流程):
(1)客户端创建XML格式的SOAP请求,它包含了提供服务的服务器的URI、客户请求调用的方法名称和参数信息。如果参数是对象,则必须进行序列化操作(把对象转化成XML数据)。
(2)客户端的协议连接器把XML格式的SOAP请求头包装为HTTP请求,即把SOAP请求作为HTTP请求的正文,并且增加HTTP请求头。
(3)服务器端的协议连接器接收到客户端发送的HTTP请求,对其进行解析,获取其中的请求正文,请求正文就是客户端发送的XML格式的SOAP请求。
(4)服务器对XML格式的SOAP请求进行解析,如果参数中包含对象,先对其进行反序列操作(把XML格式的参数转换为对象),然后执行客户请求 的方法。
(5)当服务器执行完毕后,如果方法的返回值是对象,则先对其进行序列化操作,把对象转化为XML格式,然后把返回值包装成XML格式的SOAP响应。
(6)服务器端的协议连接器把XML格式的SOAP响应包装为HTTP响应,即把SOAP响应作为HTTP响应的正文,并且增加HTTP头。
(7)客户端的协议连接器接收到服务器端发送的HTTP响应,并对其进行解析,获取其中的响应正文,响应正文就是服务器端发送的XML格式的SOAP响应。
(8)客户端解析XML格式的SOAP响应,如果返回值中包含对象,则先对其进行反序列操作,将XML格式转化成对象,最后获得返回值。
一、Webservice的概念和原理相关推荐
- WebService 基本概念
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- iOS/OS X内存管理(一):基本概念与原理
iOS/OS X内存管理(一):基本概念与原理 发表于21小时前| 1585次阅读| 来源CSDN| 8 条评论| 作者刘耀柱 移动开发iOSObjective-C内存管理内存泄露局部变量开发经验 a ...
- 前端路由的概念与原理
前端路由router的概念与原理 1. 什么是路由 路由(英文:router)就是对应关系. 2. SPA 与前端路由 SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组件的展示与 ...
- 前端路由||路由的基本概念与原理||在开发中,路由分为: 后端路由 前端路由
前端路由 路由的基本概念与原理 vue-router的基本使用 vue-router嵌套路由 vue-router动态路由匹配 vue-router命名路由 vue-router编程式导航 基于vue ...
- git入门:概念、原理、使用
git和Github 概念 Git --- 版本控制工具(命令). 工具介绍官方网站:http://git-scm.com 工具下载地址:http://git-scm.com/download/ gi ...
- mysql优化器分析器_MySQL查询优化器的概念和原理整个执行过程
原标题:MySQL查询优化器的概念和原理整个执行过程 什么是MySQL的Query Optimizer 专门负责优化SELECT语句的优化器模块MySQL Query Optimizer通过计算分析收 ...
- Java注解的基本概念和原理及其简单实用
一.注解的基本概念和原理及其简单实用 注解(Annotation)提供了一种安全的类似注释的机制,为我们在代码中添加信息提供了一种形式化得方法,使我们可以在稍后某个时刻方便的使用这些数据(通过解析 ...
- 机器学习基础图表:概念、原理、历史、趋势和算法
四大会计师事务所之一的普华永道(PwC)发布了多份解读机器学习基础的图表,其中介绍了机器学习的基本概念.原理.历史.未来趋势和一些常见的算法.为便于读者阅读,机器之心对这些图表进行了编译和拆分,分三大 ...
- 泛型与容器连载(一)泛型的基本概念和原理
基本概念和原理 "泛型"的字面意思就是广泛的类型.接口和方法代码可以应用于广泛的类型,代码与他们能够操作的数据不在绑定在一起,同一套代码可以用于多种数据类型,这样不仅可以复用代码, ...
- Java程序员从笨鸟到菜鸟之(四十八)细谈struts2(十)ognl概念和原理详解
引言:众所周知,在mvc中,数据是在各个层次之间进行流转是一个不争的事实.而这种流转,也就会面临一些困境,这些困境,是由于数据在不同世界中的表现形式不同而造成的: 1. 数据在页面上是一个扁平的,不带 ...
最新文章
- Android学习笔记之progressBar(进度条)
- 三维重建新应用:精确还原凶杀现场细节!
- datagridview滚动条自动滚动_Win32编程基础之滚动条
- 零基础代理神器allproxy
- excel如何把顺序倒过来_Excel 中的计算运算符和优先顺序级别
- 【学习总结】《大话数据结构》- 总
- php xmlreader 读xml,PHP中使用xmlreader读取xml数据示例
- idea 启动 springBoot debug很慢,正常启动很快是什么原因
- endnote无法同步原因_endnote不能同步(endnote retrieving references)的解决方法
- vRealize Operations Manager 安装部署
- LC-130 被环绕区域
- SpringBoot的properteis书写[配置对象类型数据、配置数组类型
- [原创]经典软件测试技术分类
- Chrome对开发有用的插件
- 不同以“网”,云端地球全新升级上线!
- Macbook双系统多分区的解决方案
- 本周AI热点回顾:AI技术重现的老北京原声影像又火了、百度ERNIE-ViL刷新5项任务记录、Transformer 3发布
- 深度学习鼻祖Geoffrey Hinton帮你入门带你飞
- Python 抓取微信公众号账号信息
- C++ handle classes