小步前进之WebService
WebService
Web Service
什么是Web Service?
有这样的需求,我们已经有一个使用JAVA编写的服务端程序,但是客户端使用C#语言编写,当我们的客户端想获取服务端的一个数据的时候,我们该如何做呢?
Web Service由此而生。
Web Service是一种跨编程语言和跨操作系统平台的远程调用技术。
从表面上看,Web Service就是一个应用程序向外界透露出一个能通过Web进行调用的API,
也就是说能用编程的方法通过Web来调用这个程序,即我们的客户端,而提供Web Service的叫做服务端。
从深层来看,Web Service是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。
你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web Service,
只要我们可以通过Web Service标准对这些服务进行查询和访问。
为什么使用Web Service
跨平台协同工作
我们可以用不同语言相互开发后,通过Web Service进行交互。
可重复使用的应用程序组件
像天气预报、语言翻译等我们可以直接通过Web Service进行访问,不需要重新开发。
WebService交互的过程就是,WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。
XML
什么是XML?
可扩展标记语言,标准通用标记语言的子集,简称XML,是一种用于标记电子文件使其具有结构性的标记语言。——《百度百科》
首先,我们得知道什么是标记?在现实生活中,标记指的是记录某个信息的符号,而在计算中,标记指计算机所能理解的信息符号。
为什么使用XML?
可扩展性
通过此标记,计算机可进行处理包含的信息。它不像HTML,将已有的标记定义好,用户只能按照它的格式进行编写,xml是可拓展的,用户可自行定义软件的配置信息、版本号、使用语言等相关信息。
SOAP(Simple Object Access Protocol)
什么是SOAP?
(SOAP)简单对象访问协议, 当双方需要进行数据交互的时候,数据应该采取一定的格式,这个格式就叫做协议。
简单理解为:**soap=RPC+HTTP+XML,**即采用http作为通信协议,
RPC作为一致性调用途径,XML作为数据传送的格式,从而允许服务提供者和服务客户经过防火墙在Internet上进行交换。
它的作用就是 规定发送消息的格式和使用HTTP进行消息交换 ,
因为使用HTTP进行应用间的通信,而所有浏览器都支持HTTP,所以SOAP使用广泛。
一条SOAP消息就是一个XML文档,它是基于XML的,它包含下列元素:
- 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
- 可选的 Header 元素,包含头部信息
- 必需的 Body 元素,包含所有的调用和响应信息
- 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
在下面的例子中,一个 GetStockPrice 请求被发送到了服务器。此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数。此功能的命名空间被定义在此地址中: http://www.example.org/stock
SOAP 请求:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
SOAP 响应:
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
这样就完成了一次获取价格参数的数据交互。
SOAP和HTTP关联和区别
Soap | http |
---|---|
xml形式 | 纯文本格式 |
可以传递机构化的数据 | 只能传输纯文本数据 |
是简单对象访问协议 | 标准超文本传输协议 |
做个比喻就好理解了。
TCP和 UDP 都是公路,暂且把TCP认为是一般公路,UDP 高速公路, SOAP和http就都是汽车,
那么SOAP和http都可以在TCP和UDP 上跑。 说SOAP可以通过http来传送,
实际就是说SOAP是小轿车,http是装轿车的卡车, 把SOAP的信息装到http里面,
然后再运输,当然走的道路还是TCP或UDP 。 说SOAP可以通过http协议来传输,
这句话不太准确,比较准确第说法是: SOAP信息可以通过http协议包装后通过TCP或UDP 传输。
WSDL(web service definition language)
web service的定义(描述)语言。当我们想调用WebService 的时候,怎样知道有什么函数可以调用以及函数调用时的参数呢?
我们需要一个文档,用来描述相关函数信息,自己阅读文档是需要成本的,能不能让机器阅读呢?
解决方法是:用机器能阅读的方式提供一个正式的描述文档。
web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述web service及其函数、参数和返回值。
因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。
一些最新的开发工具既能根据你的web service生成WSDL文档,又能导入WSDL文档,生成调用相应web service的代码。
通俗来说,WSDL就是一本说明书,主要用来说明有什么函数可以调用以及相关参数。
总结
WebService服务器端首先要通过一个WSDL文件来说明自己有什么服务可以对外调用。简单的说,WSDL就像是一个说明书,
用于描述WebService及其方法、参数和返回值。 WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。
客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。
WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。
作者信息
2年crud码农一枚,如有错误请指正,如果本文对你有所帮助,请点赞,谢谢。
参考 菜鸟教程 、SOAP与HTTP区别 、WebService
小步前进之WebService的更多相关文章
- solr6.4.2之webservice兼容升级
摘要:这次solr底层升级是一次比较大的升级.从底层搜索引擎 solr4.8 升级到 solr6.4.2,由于solr底层从6.x开始以来的jdk必须指定为1.8,而且很多内部实现类都已经废弃或者干脆 ...
- webService
什么是webService WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用. 1:从WebService的工作模式上 ...
- 开始webservice了
一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...
- Spring WebService入门
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...
- 浅谈跨域以及WebService对跨域的支持
跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1. ...
- java调用CXF WebService接口的两种方式
通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...
- VS2010编写WebService与在IIS的发布<之简单讲解>
工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1.新建空web应用程序项目 2.新建web服务 3.自动生成 4.直接跑起来,可以看到有2个方法 5.点击H ...
随机推荐
- 区块链从零开始做开发(0):hyperledger Fabric2.3安装
一.前言 各位看官好,这是本人第一篇技术博客. 写博客的契机是因为原来配的环境在虚拟机扩容后莫名奇妙崩了(具体情况我以后会写),为了以后的自己特此从头开始记录.以前都是作为一个读者,这次终于有机会能够 ...
- CentOS安装TensorFlow
1.升级python 系统自带的python是2.6,不能用,升级到2.7,方法见:http://www.cnblogs.com/stAr-1/p/9055980.html 2.升级python带来的 ...
- Android驱动学习-内部机制_回顾binder框架关键点
内部机制_回顾binder框架关键点server注册服务时, 对每个服务都提供不同的ptr/cookie,在驱动程序里对每个服务都构造一个binder_node, 它也含有ptr/cookie cli ...
- 论文翻译:2018_Deep Learning for Acoustic Echo Cancellation in Noisy and Double-Talk Scenarios
论文地址:深度学习用于噪音和双语场景下的回声消除 博客地址:https://www.cnblogs.com/LXP-Never/p/14210359.html 摘要 传统的声学回声消除(AEC)通过使 ...
- sql操作数据库(1)-->DDL、DML、DQL
SQL 操作数据库 概念:结构化查询语言 Structured Quary Language 作用: 1.是一种数据库的查询的标准,对所有的数据库都支持 2.不同的数据库SQL语句可能有点不同 ( ...
- centos7 在虚拟机中装好后的网络连接问题
1.首先设置网卡连接方式:点"设置",在弹出的界面中点"网络",最后选择"连接方式"为"桥接网卡" 2.用Vim编辑器打 ...
- RabbitMQ常用的几种消息模型
第一种模型(HelloWorld) 上图来自官方文档 P代表生产者用来生产消息,发送给消费者C,中间的共色部分代表消息队列,用来缓存消息. 首先导入依赖 <dependency> < ...
- InheritableThreadlocal使用问题排查
背景 在做一个微服务系统的时候,我们的参数一般都是接在通过方法定义来进行传递的,类似这样 public void xxx(Param p, ...){ // do something } 然后这时有个 ...
- SQL Server解惑——查询条件IN中能否使用变量
在SQL Server的查询条件中,能否在IN里面使用变量呢? 如果可以的话,有没有需要注意的地方或一些限制呢?在回答这个问题前,我们先来看看这个例子: IF EXISTS (SELECT 1 FRO ...
- RPC 是通信协议吗 ?→ 我们来看下它的演进过程
开心一刻 一实习小护士给我挂针,拿着针在我胳膊上扎了好几针也没找到血管 但这位小姑娘真镇定啊,表情严肃认真,势有不扎到血管不罢休的意思 十几针之后,我忍着剧痛,带着敬畏的表情问小护士:你这针法跟容嬷嬷 ...