1.webService入门
学习webService前,先来思考一个问题:
请看以下截图:
以上是一个综合网站的部分显示信息,我们能很明显的看出打开该网页所处区域的一些信息,比如:地点是厦门,天气是阵雨,温度是9摄氏度等等...
那么,这些数据都是保存在公司服务器的吗?
显然不是,一个中国那么大,有多少地区,一个公司要存放每一天的相关地区的天气等数据,那得消耗多少资源,所以该信息一般是从气象局获取。
这些数据获取过来是网页形式的吗?
很多门户网站都有相关天气信息的显示,并且很容易看出它们的样式都是不一样的,所以很明显获取的不是网页形式,而是数据,通过获取的数据,再放到网页上去展示出来。
如何获取相关天气的数据呢?
每个网站可能都是不同语言编写的,比如新浪可能是php,可能是.net,可能是java或者其它,而气象局提供给我们调用的接口程序可能也是不同语言开发的,这种不同语言间的通讯以现有的java web技术并不能搞定,所以这类信息的获取,我们使用webService技术。
进入正题:
什么是webService?
1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)
说明:服务器端写webService代码,通过WebService Server将数据暴露出来;客户端写webService代码,调用服务器端的服务获取暴露出来的数据。
2. 一个跨语言、跨平台的规范(抽象)
说明:跨语言解决了不同语言编写的应用之间的通讯难题。
3. 多个跨平台、跨语言的应用间通信整合的方案
以以上网站显示天气预报功能为例:
气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server,而暴露出来的其实就是各种各样的url), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client).
网站提供了天气预报的服务,但其实它们什么也没有做,只是简单了调用了一下气象中心服务器上的一段代码而已。
为什么要用webService呢?
web service能解决:
跨平台调用、跨语言调用、远程调用
什么时候使用webService呢?
网上提供的说法非常准确:
1. 同一家公司的新旧应用之间
2. 不同公司的应用之间
3. 一些提供数据的内容聚合应用:天气预报、股票行情
这里分析一个网上提供的业务需求:天猫网与中通物流系统如何交互?
webService与各应用间的关系:
webService中的重要术语:
WSDL:web service definition language
WebService定义语言
1. 对应一种类型的文件.wsdl
2. 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式
3. 一个web service对应一个唯一的wsdl文档
例如,以下截图是一个天气相关的webService,截图中的url是该webService暴露出来的接口,
当在路径上加上?wsdl后,呈现出来的就是.wsdl文件数据,也就是一个webService对应一个wsdl文档
SOAP:simple object access protocal
简单对象访问协议
1.是一种简单的、基于HTTP和XML的协议, 用于在WEB上交换结构化的数据(结构化的数据就是指xml格式的数据)
2.soap消息:请求消息和响应消息
3.遵循http协议+数据格式为:xml片断
比如查询厦门的天气:
SOAP请求的数据为:
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="Yangzhili" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soapenv:Body>
- <q0:getWeatherCity>
<q0:UserId>厦门</q0:UserId>
</q0:getWeatherCity>
</soapenv:Body>
</soapenv:Envelope>
SOAP得到的响应数据为:
- <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soap:Body>
- <getWeatherCityResponse xmlns="Yangzhili">
- <getWeatherCityResult>
- <WeatherCity>
<Id>0</Id>
<CityName></CityName><!--这里就是响应的数据-->
<CityID>0</CityID>
</WeatherCity>
</getWeatherCityResult>
</getWeatherCityResponse>
</soap:Body>
</soap:Envelope>
SEI:WebService EndPoint Interface(终端)
web service的终端接口
就是WebService服务器端用来处理请求的接口
即以下截图中的定义着各种各样的方法的接口,当然这些方法在服务器端都是有实现的:
CXF:Celtix + XFire
一个apache框架:用于开发webservice服务器端和客户端
1.webService入门的更多相关文章
- RESTful WebService入门(转)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 REST ...
- RESTful WebService入门
RESTful WebService入门 RESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状 ...
- WebService入门实例教程
什么是WebService 通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,它是基于Web的服务,通过Web进行发布.查找和使用. WebService脚本平台需支持X ...
- JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务
1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...
- webservice入门简介
为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 webservice入门简介 1.什么是webservice? webservice是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓的远 ...
- RESTful WebService入门【转】
ESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都非常的轻松容易. 下面写一 ...
- WebService 入门
1. 远程调用技术 2. WebService 概述 WebService 是使用 Http 发送 SOAP 协议数据的一种远程调用技术; WebService 需要开发客户端; WebService ...
- WebService入门案例
关于WebService的作用和好处,大家应该都了解.但如何在Asp.Net中添加Web Service等问题一直是新手朋友的一大难题.鉴于网上没有一个像样的实际案例,特将课程设计中运用到的WebSe ...
- Apache CXF Webservice入门
1.步骤一览 关于CXF的介绍请移步官网.百科,这里仅供初次使用者入门. 2.步骤详情 2.1.环境准备 apache-cxf-3.0.0.zip下载 jdk1.7.0_51 Eclipse4.3.0 ...
- .NET WebService 入门
以 前写博客最主要的就是不知道写什么东西,现在感觉能写点东西,就是感觉博客随笔的标题挺难取的,最近工作中刚好用到了WebService,刚好可以写一 篇博客.去年工作的时候自己也用到过,只是知道调用一 ...
随机推荐
- 解决 VMWARE MAC 10.12无法全屏的问题
昨天我在VMware上装了10.10,然后通过APP store 升级了系统到 10.12,升级前安装VMware tools 能自动全屏,可是升级后不行. 然后在网上查了很多资料,发现并没有这方面的 ...
- bootstarp-table表格中嵌套多个BUTON按钮实现
bootstarp-table表格中嵌套多个BUTON按钮实现 有时我们需要在bootsharp-table表格中嵌套多个按钮,来实现不同的功能,大概界面如下: 实现功能如下: 1:构建表格 ...
- Java广度优先爬虫示例(抓取复旦新闻信息)
一.使用的技术 这个爬虫是近半个月前学习爬虫技术的一个小例子,比较简单,怕时间久了会忘,这里简单总结一下.主要用到的外部Jar包有HttpClient4.3.4,HtmlParser2.1,使用的开发 ...
- [刘阳Java]_避开环境配置快速的使用Java的开发工具_第5讲
我们一般学习Java都应该遵循通过系统的命令工具来编译Java程序,然后对编译好Java程序进行运行,这个是非常好的习惯.但是随着后期学习Java技术的深入我们也得像Java的IDE工具屈服.所以,可 ...
- hibernateTemplate中常用查询方法的使用(原文地址: http://dongruan00.iteye.com/blog/1772311)
一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有Use ...
- 在ubuntu16编译安装nginx-1.10.2(full)完全自带组件
第一步:先安装全部用到的包 apt install gcc libpcre++-dev libssl-dev make \ libxml2-dev libxslt-dev libgd-dev libg ...
- grunt配置太复杂?发布一个前端构建工具,简单高效,自动跳过未更新的文件
做前端项目,如果没有一个自动化构建工具,手动处理那简直就是坑爹O(∩_∩)O.于是上网了解了下,grunt用的人不少,功能也挺强大.看了一下grunt的配置(包括gulp),感觉稍显复杂.当时项目结构 ...
- SpringMVC 400 Bad Request 问题
摘要 SpringMVC 400 Bad Request 在提交表单时,发生400错误,并未进入save方法. @RequestMapping(value="/!save",met ...
- char、wchar_t、strlen、wcslen
第一部分: strlen函数的宽字符版是wcslen(wide-character string length:宽字符串长度),并且在STRING.H(其中也说明了strlen)和WCHAR.H中均有 ...
- hibernate配置文件中的schema="dbo"在MySQL数据库不可用
把项目的数据库由SQL Server更改为MySQL之后,发现hibernate报错. 问题在于schema="dbo",使用SQL Sever数据库时正常,使用MySQL数据库需 ...