用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助。

WebService是基于网络的、分布式的模块化组件。

我们直接来看WebService的一个简易工作流程

客户端 ——>阅读WSDL文档(了解webservice的请求) ——> 调用WebService 

上面的流程是一个大致的描述,客户端阅读WSDL文档发送请求,然后调用Web服务器最后返回给客户端,这和普通的http请求一样,请求->处理->响应,与普通的请求不一样的就是webservice请求中有一个WSDL文档和SOAP协议,以及.NET Framework自带的Web Service请求处理器 ISAPI Extension。

我们来看一个比较完整的流程

客户端——> 阅读WSDL文档 (根据文档生成SOAP请求) ——>发送到Web服务器——>交给WebService请求处理器 (ISAPI Extension)

——>处理SOAP请求——> 调用WebService——>生成SOAP应答 ——> Web服务器通过http的方式交给客户端

OK,到这里已经明白了的同学你可以走了,去逛逛别的文章,没懂的我们继续往下:

我们先来解释一下上面的流程中出现的几个名词:

1. SOAP: 是以XML形式提供简单、轻量、用于在分散或分布式环境中交换结构化和类型信息的机制。SOAP消息的基本结构通过HTTP协议传递XML数据。简单的说就是一个基于XML的协议。

2. WSDL : 是使用XML文档描述Web服务的标准,是Web服务的的接口定义语言,描述如何访问具体的接口,包含3个基本属性:

a. 如何访问服务:和服务交互的数据格式以及必要的协议。

b. 服务在哪里: 协议相关的地址,比如url信息等

c. 服务具有哪些功能: 服务提供的具体操作方法,=》就是你webservice中提供了哪些可调用的方法

原理详细描述:

无论使用什么工具、语言编写 WebService,都可以使用 SOAP 协议通过 HTTP 调用,其工作原理相同。创建 WebService 后,将其暴露给Web客户,任何语言、平台的客户都可以阅读其  WSDL 文档,以调用 WebService 。客户可以根据 WSDL 描述文档生成一个 SOAP 请求信息。 WebService 部署在Web服务器( 如IIS )上,客户生成的 SOAP 请求会被嵌入在一个 HTTP 请求中并发送到Web服务器,Web服务器(IIS)再将请求转发给 WebService 请求处理器。

对于.Net而言,WebService请求处理器则是一个 .NET Framework 自带的 ISAPI Extension。Web请求处理器用于解析收到的SOAP请求,调用 WebService,然后生成相应的SOAP应答。Web服务器得到SOAP应答后,在通过HTTP应答的方式将其返回给客户端。

WebService优势:

1.平台无关性 。  任何平台都可以使用WebService

2.编程语言无关系。 基于XML,XML本身与平台无关,使用XSD作为数据类型系统,不论用什么语言编写,所有数据类型都会被转换为XSD,只需要遵守WebService的统一标准即可。

3.部署、升级和维护Web服务简单、方便。

4.实现多数据、多服务的聚合。

5.成本低。

6.不受防火墙的影响。使用SOAP协议通信,封装了XML格式的数据,以ASCII文本的方式传输,而非二进制,调试方便,而且可以使数据容易的通过防火墙,不需要单独开通信端口。

总结:

WSDL、SOAP和UDDI(统一描述、发现和集成机制) 一起工作,支持WebService与Internet上的其他服务、应用程序和设备交互作用。UDDI提供了发布和定位Web服务功能(更多请自行了解),WSDL描述了Web服务,SOAP服务提供了传输消息。

申明:代码里(www.daimali.com)原创,转载请注明原文链接。

来源:代码里

链接:http://www.daimali.com/index.php/2016/05/03/448/

轻松搞懂WebService工作原理的更多相关文章

  1. 【转载】轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  2. WebService工作原理

    1.WebService工作原理-SOAP 当客户端调用一个WebService的方法时,首先将方法名称和需要传递的参数包装成XML,也就是SOAP包,通过HTTP协议传递到服务器端,然后服务器端解析 ...

  3. 【转】Github轻松上手1-Git的工作原理与设置

    转自:http://blog.sina.com.cn/s/blog_4b55f6860100zzgp.html 作为一个程序猿,如果没有接触过stack overflow和Github,就如同在江湖中 ...

  4. WebService 工作原理及实例教程

    一.WebService到底是什么? 先来看下标准的定义:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统 ...

  5. Webservice工作原理及实例

    Web Service工作原理及实例   一.Web Service基本概念   Web Service也叫XML Web Service WebService是一种可以接收从Internet或者In ...

  6. 一篇文章彻底搞懂base64编码原理

    开始 在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇文章带领大家了解一下Base64的底层实现. base64是什么东东呢? Base64 ...

  7. 这一次搞懂SpringBoot核心原理(自动配置、事件驱动、Condition)

    @ 目录 前言 正文 启动原理 事件驱动 自动配置原理 Condition注解原理 总结 前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本 ...

  8. 轻松搞懂Java中的自旋锁

    前言 在之前的文章<一文彻底搞懂面试中常问的各种“锁”>中介绍了Java中的各种“锁”,可能对于不是很了解这些概念的同学来说会觉得有点绕,所以我决定拆分出来,逐步详细的介绍一下这些锁的来龙 ...

  9. 搞懂Redis复制原理

    前言 与大多数db一样,Redis也提供了复制机制,以满足故障恢复和负载均衡等需求.复制也是Redis高可用的基础,哨兵和集群都是建立在复制基础上实现高可用的.复制不仅提高了整个系统的容错能力,还可以 ...

随机推荐

  1. 引用Microsoft.Office.Interop.Excel出现的问题

    引用Microsoft.Office.Interop.Excel出现的问题   转自:http://www.hccar.com/Content,2008,6,11,75.aspx,作者:方继祥 操作背 ...

  2. EC笔记,第二部分:5.了解C++默默编写并调用哪些函数

    5.了解C++默默编写并调用哪些函数 1.C++空类 C++会为一个空类建立以下函数 (1).默认构造函数 (2).默认拷贝构造函数 (3).析构函数 (4).赋值运算符(如果成员包含引用类型或con ...

  3. 解决WIN7与虚拟机CentOS的文件夹共享问题

    一.系统与软件 WIN7 64bit.VirtualBox 5.0.14.CentOS 6.5.SecureCRT 7.2.3 二.使用文件夹共享需要安装增强功能,但是安装时无法读取光盘iso文件 三 ...

  4. Singleton

    1.//懒汉模式 //天生线程不安全,但是效率高 public class Singleton { private static Singleton singleton; private Single ...

  5. Spark on Yarn 学习(一)

    最近看到明风的关于数据挖掘平台下实用Spark和Yarn来做推荐的PPT,感觉很赞,现在基于大数据和快速计算方面技术的发展很快,随着Apache基金会上发布的一个个项目,感觉真的新技术将会不断出现在大 ...

  6. 分享20款移动开发中很有用的 jQuery 插件

    今天,很显然每个网站都需要有一个移动优化的界面以提高移动用户的使用体验.在开发任何移动项目时,要尽可能保持每一种资源尺寸都尽可能的小,以给最终用户提供一个好的体验是非常重要的.在这篇文章中我们已经编制 ...

  7. 推荐15个最好用的 JavaScript 代码压缩工具

    JavaScript 代码压缩是指去除源代码里的所有不必要的字符,而不改变其功能的过程.这些不必要的字符通常包括空格字符,换行字符,注释以及块分隔符等用来增加可读性的代码,但并不需要它来执行. 在这篇 ...

  8. 从头开始构建LINUX [LFS]

    “LINUX就是这个范”有一章专门介绍了Linux的构建,过程详细,很有意思.结合这方面的资料简要汇集一下 LFS 这个站点提供了从源代码构建一个Linux的详细步骤 书 http://archive ...

  9. JAVA静态代理模式(从现实生活角度理解代码原理)

    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 代理模式说白了就是"真实对象"的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途. 在 ...

  10. IOS开发基础知识--碎片21

    1:[UIScreen mainScreen].scale知识点 当屏幕分别为640x940时[[UIScreen mainScreen] scale]=2.0 当屏幕分别为320x480时[[UIS ...