WebService 从“心”定义

本文介绍了WebService的基本概念,包括其跨编程语言、跨操作系统和远程调用的特点。通过XML、SOAP协议和WSDL规范详细阐述了WebService的工作原理,并提供了Java和PHP编写WebService服务端和客户端的简单示例。
摘要由CSDN通过智能技术生成

【特别说明:本文档仅属个人心得,大家各取所需】

什么是WebService

DL:听过webservice吗?公司业务需要你来搞一下吧
W:emmm。。。。
W:打开Chrome,找到CSDN,搜索“怎么写webservice”,回车;。。。 。。。
W:哇,真是博大精深,“云雾缭绕”。。。。。。
W:研究了一篇又一篇。。。。。。
DL:做好了吗?
W:快了,快了;
DL:懂了吗?什么是webservice?要如何开发一个webservice服务呢?
W:它是能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据的一种技术。
DL:理解了吗?

嗯?理解了吗?
webservice官网
打开这个官网,看不到任何醒目的解释。所以大可不必去找到底什么是webservice,请记住下面三个关键字
跨编程语言 + 跨操作系 + 远程调用
记住了吗?

  • 是的,我记住了

没记住就再看一遍,记住了请打钩!!!


记住的人才可以看下面的内容,没记住请继续记

三个关键字简明扼要的表达了该技术的NB,那到底真的有那么厉害吗?

跨编程语言:通俗点说就是PHP可以调用Java写好的webservice,Java可以调用C#写好的webservice…
跨操作系统:这个比较好理解,可以用Linux服务器调用Windows发布的webservice…
远程调用:举个栗子,你认识了很多不同地方的小姐姐,你可以通过A地给B地的张某某打招呼,也可以从A地给C地的李某某送祝福…,谨慎使用哈!(因为远程调用需要注意安全)

怎么写webservice?

写之前一定要知道的几个术语:
客户端:调用这个WebService的应用程序
服务端:提供这个WebService的应用程序
当两端不管用什么编程语言或者在何种操作系统上,只要均保持统一的一套标准(规范),那么“跨出一小步”就易如反掌了。

知道了客户端和服务端,以及大致明白了它们如何达到该技术特性的,怕大家不太理解,下面搞个图分析一下:

客户端(要调用) 服务端(来提供) 通过一套标准封装参数及返回值发送远程调用请求 客户端:根据标准封装参数,发起远程调用请求. 服务端:根据标准发布一个包含请求标准的服务供客户端调用 接收到远程调用请求,完成业务执行,封装标准返回值,完成远程调用响应 客户端(要调用) 服务端(来提供)

看图必懂

这套标准到底有多神奇呢?
1、XML+XSD
XML格式封装数据(XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的 返回结果是什么)优点在于它与平台、厂商无关。
XML Schema(XSD)是一套数据类型标准。确保数据能有效传输和有效读取。
2、SOAP
SOAP协议 = HTTP协议 + XML数据格式
SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。
举个栗子更好理解:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。
3、WSDL
“物品清单(使用说明书)”:告诉客户端(调用的人)我的地址,我有哪些方法,要怎么调用,参数是什么等。
WSDL(Web Services Description Language)是基于XML的语言,用于描述Web Service及其函数、参数和返回值的文件,通过一个url地址访问。

注意:WebService三大规范:JAXM&SAAJJAX-WS(JAX-RPC)JAX-RS

到这里,我觉得有必要补一下全网很多帖子不足的地方,那就是WSDL的解析,如下:
WSDL 文档是利用这些主要的元素来描述某个 web service 的:

<portType>	web service 执行的操作
<message>	web service 使用的消息
<types>		web service 使用的数据类型
<binding>	web service 使用的通信协议

了解了基本元素的含义后,我们上一个还热乎的wsdl文件:
天气预报wsdl

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://WebXml.com.cn/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://WebXml.com.cn/">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><a href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a> <strong>2400多个城市天气预报Web服务</strong>,包含2300个以上中国城市和100个以上国外城市天气预报数据。数据每2.5小时左右自动更新一次,准确可靠。<br />使用本站 WEB 服务请注明或链接本站:<a href="http://www.webxml.com.cn/" target="_blank">http://www.webxml.com.cn/</a> 感谢大家的支持!<br /><br /><img alt="PDF" title="PDF file" src="http://www.webxml.com.cn/images/icon/pdf.gif" style="vertical-align: middle;" /> <a href="http://www.webxml.com.cn/files/WeatherWsHelp.pdf" target="_blank">接口帮助文档</a> &nbsp;&nbsp;&nbsp; <img alt="ZIP" title="ZIP file" src="http://www.webxml.com.cn/images/icon/zip.gif" style="vertical-align: middle;" /> <a href="http://www.webxml.com.cn/files/about_city.zip">部分城市介绍和气候背景</a> &nbsp;&nbsp;&nbsp; <img alt="ZIP" title="ZIP file" src="http://www.webxml.com.cn/images/icon/zip.gif" style="vertical-align: middle;" /> <a href="http://www.webxml.com.cn/files/city_photo.zip">部分城市图片</a> &nbsp;&nbsp;&nbsp; <img alt="HTML" title="HTML file" src="http://www.webxml.com.cn/images/icon/html.gif" style="vertical-align: middle;" /> <a href="http://www.webxml.com.cn/zh_cn/weather_icon.aspx" target="_blank">天气现象和图例</a><br />&nbsp;</wsdl:documentation>
<wsdl:types>
...
</wsdl:types>
<wsdl:message name="getRegionDatasetSoapIn">
...
</wsdl:message>
...(太多了,省略)
<wsdl:portType name="WeatherWSSoap">
<wsdl:operation name="getRegionDataset">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h3>获得中国省份、直辖市、地区;国家名称(国外)和与之对应的ID</h3><p>输入参数:无,返回数据:DataSet。</p><br /></wsdl:documentation>
<wsdl:input message="tns:getRegionDatasetSoapIn"/>
<wsdl:output message="tns:getRegionDatasetSoapOut"/>
</wsdl:operation>
<wsdl:operation name="getRegionProvince">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h3>获得中国省份、直辖市、地区和与之对应的ID</h3><p>输入参数:无,返回数据:一维字符串数组。</p><br /></wsdl:documentation>
<wsdl:input message="tns:getRegionProvinceSoapIn"/>
<wsdl:output message="tns:getRegionProvinceSoapOut"/>
</wsdl:operation>
<wsdl:operation name="getRegionCountry">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h3>获得国外国家名称和与之对应的ID</h3><p>输入参数:无,返回数据:一维字符串数组。</p><br /></wsdl:documentation>
<wsdl:input message="tns:getRegionCountrySoapIn"/>
<wsdl:output message="tns:getRegionCountrySoapOut"/>
</wsdl:operation>
<wsdl:operation name="getSupportCityDataset">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h3>获得支持的城市/地区名称和与之对应的ID</h3><p>输入参数:theRegionCode = 省市、国家ID或名称
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值