出现

如今基于浏览器的client应用程序越来越流行,而从开发角度来看,一方面是client浏览器的安装配置不再须要我们再去花费非常大的精力。还有一方林则是由于client和server之间通信的问题。

传统的Windows客户应用程序使用DCOM来与server进行通信和调用远程对象。而使用DCOM却来完毕通信是个特别繁琐和麻烦的工作,特别的不方便,在此情况下。http协议完美的攻克了client与server之间的通信问题,这是由于任务执行的web浏览器都在使用http协议,同一时候当前很多防火墙也配置为仅仅同意HTTP连接。

应用程序除了通信这个问题之外,另一个特别严峻的问题。那就是异构系统的互操作。

假设全部应用程序都是同一种平台或语言就不会出现这个问题了,但事实却不是这样。实用COM或.NET语言写的还有使用C++、Java、VisualBasic和其它各种各样的语言编写的应用程序。全部这些不同语言编写的应用程序假设之间须要集成并进行数据交互,方式多种多样,各不同样。没有一个统一的应用程序通信标准。是独立与平台、语言的。

所以WebService应运而生,通过Web Serviceclient和server能够自由的用HTTP协议进行通信,採用XML语言作为数据交互格式和服务描写叙述语言,不论两个程序的平台和编程语言是什么。

是什么

从小的说。Web Service就是一个技术,它向外界暴露出一个可以通过Web进行调用的api,我们可以直接调用这个Web
Service的api进行开发。

从大的说,WebService是一个平台,这个平台能够用来建立能够互操作的分布式应用程序。所以WebService平台就是一套标准。这个标准它定义了应用程序怎样在Web上实现互操作性。

你能够用不论什么你喜欢的语言。在不论什么你喜欢的平台上写Web service,仅仅要我们能够通过Web service标准对这些服务进行查询和訪问。

一句话总结WebService定义。Web Service是一种跨越编程语言和跨越操作系统平台的远程调用技术。

平台技术

XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。

XML+XSD:

WebService採用HTTP协议数据传输,採用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法。传递的參数是什么,以及服务对象的返回结果是什么)。XML是WebService平台中表示数据的格式。

除了易于建立和易于分析外,XML基本的长处在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

XML攻克了数据表示的问题,但它未定义一套标准的数据类型。更没有说怎么去扩展这套数据类型。比如。整形数究竟代表什么?16位,32位。64位?这些细节对实现互操作性非常重要。

XMLSchema(XSD)就是专门解决问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。

WebService平台就是用XSD来作为其数据类型系统的。

当你用某种语言(如VB.NET或C#)来构造一个Webservice时,为了符合WebService标准,全部你使用的数据类型都必须被转换为XSD类型。

你用的工具可能已经自己主动帮你完毕了这个转换,但你非常可能会依据你的须要改动一下转换过程。

SOAP:

WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都採用XML格式封装。并添加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用WebService。

SOAP协议 = HTTP协议 + XML数据格式

SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的。SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的快速公路。

WSDL:

好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买。商家的做法就是张贴广告海报。

WebService也一样,WebServiceclient要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法能够调用。所以。WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务能够对外调用,服务是什么(服务中有哪些方法,方法接受的參数是什么。返回值是什么),服务的网络地址用哪个url地址表示。服务通过什么方式来调用。

WSDL(Web Services DescriptionLanguage)就是这样一个基于XML的语言,用于描写叙述WebService及其函数、參数和返回值。它是WebServiceclient和server端都能理解的标准格式。由于是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。这将是一个非常大的优点。

一些最新的开发工具既能依据你的Webservice生成WSDL文档,又能导入WSDL文档。生成调用对应WebService的代理类代码。

WSDL文件保存在Webserver上,通过一个url地址就能够訪问到它。client要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商能够通过两种方式来暴露它的WSDL文件地址:1.注冊到UDDIserver,以便被人查找;2.直接告诉给client调用者。

应用场景

WebService的http通信和跨平台决定了它的应用场景。

前面提到当前很多防火墙也配置为仅仅同意HTTP连接,所以WebService使用于跨防火墙通信;

WebService跨语言的特性使它在异构系统的集成方面。有独特的优势,所以用它将不同语言不同操作系统的应用程序进行集成;

Web Service将商业逻辑做到互操作,仅仅要把商务逻辑“暴露”出来。成为WebService。就能够让不论什么指定的合作伙伴调用这些商务逻辑,而无论他们的系统在什么平台上执行。使用什么开发语言,这一块如今在B2B集成上特别广泛。

跨公司的商务交易集成通常叫做B2B集成,通过WebService实现逻辑业务的互操作,这样就大大降低了花在B2B集成上的时间和成本,让很多原本无法承受EDI的中小企业也能实现B2B集成;

这一点和上面一点事实上本质是一样的,都利用了WebService的互操作性,採用WebService应用程序能够用标准的方法把功能和数据“暴露”出来。供其他应用程序使用,达到业务级重用。

最后

本篇文章主要介绍了WebService为了解决什么问题而出现。同一时候介绍了Web Service的定义、核心技术最后介绍了Web Service的使用场景,关于WebService的学习才刚刚開始,有不正确的请大家多多指正。

Web Service那点事的更多相关文章

  1. 翻译-使用Spring调用SOAP Web Service

    原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP ...

  2. Web Service 小练习

    对于网站与网站之间数据互动,这是我的说法,不是专家说的,不要相信.应该有专业的说法. 从他人的网站通过一个接口获取数据,这一直是我感到神奇的事,怎么实现的,一直萦绕于心,想要弄过究竟,怎么是实现的啊! ...

  3. Web service是什么?

    原文:http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html 我认为,下一代互联网软件将建立在Web service(也就是&q ...

  4. Web service是什么?(转)

    我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上. 我把学习笔记和学习心得,放到网志上,欢迎指正. 今天先写一个最基本的问题,Web service到 ...

  5. 转:Web service是什么?

    作者: 阮一峰 我认为,下一代互联网软件将建立在Web service(也就是"云")的基础上. 我把学习笔记和学习心得,放到网志上,欢迎指正. 今天先写一个最基本的问题,Web ...

  6. Web Service学习笔记(webservice、soap、wsdl、jws详细分析)

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  7. Web Service学习笔记

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  8. Web Service学习笔记(webservice、soap、wsdl、jws详细分析) (转)

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  9. C# Web Service 初级教学

    原文连接:http://www.codeproject.com/cs/webservices/myservice.asp作者:Chris Maunder Introduction Creating y ...

随机推荐

  1. Android Studio错误

    晚上一直在折腾android studio这个东西,弄的蛋疼.. 之前是有用的,然后今天闲的没事干,更新了下,反正弄出了一大堆的错误.. 错误:failed to find Build Tools r ...

  2. DELL R410升级网卡驱动

    官方链接http://zh-cn.broadcom.com/support/ethernet_nic/netxtremeii.php(官方驱动的名字偶尔会改)   注意确保服务器的kernel-dev ...

  3. 系统管理中 bash shell 脚本常用方法总结

    在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则 1. 单引号和双引号的区别 单引 ...

  4. 常用hash函数

    常用的哈希函数   通用的哈希函数库有下面这些混合了加法和一位操作的字符串哈希算法.下面的这些算法在用法和功能方面各有不同,但是都可以作为学习哈希算法的实现的例子.   1.RS  从Robert S ...

  5. WCF理论 【转载】

    原文地址:http://blog.itpub.net/23109131/viewspace-661613/ WCF是什么? WCF是"Windows Communication Founda ...

  6. 回传值(代理、通知、block)

    回传值问题,一直都是困扰初学者的问题,今写者 代理.通知.block 三者的回传值做了一个小小的总结, Main.storyboard 视图: 通过代码分别创建三个代表 代理.通知.block 的按钮 ...

  7. print流

    PrintWriter和PrintStream都属于输出流,分别针对字符和字节. PrintWriter和PrintStream提供了重载的print,println方法用于多种类型的输出 Print ...

  8. Android Support V7 包中 ActionBar的使用

    以下示例为API<11,因为API>=11时本来就有ActionBar可以使用,所以不猜讨论范围之内 今天Google发布了最新的API 18,包括众多新的性能,正好最近在研究Action ...

  9. poj1204之AC自动机

    Word Puzzles Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 8235   Accepted: 3104   Sp ...

  10. 【转载】Express、Koa、Hapi框架对比

    中文翻译:http://ourjs.com/detail/5490db1c8a34fa320400000e 英文原文:https://www.airpair.com/node.js/posts/nod ...