出现

如今基于浏览器的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. Calling a C++ dll with unsigned char* parameters

    unsigned char*  等价 BYTE* 例1: C++: int __stdcall LIVESCAN_GetFPRawData(int nChannel, unsigned char *p ...

  2. C++程序设计教程学习(0)-引子

    回想一下从事C++相关开发工作已经有4年,主要从事基于MFC.Duilib等GUI框架开发进行windows应用程序开发,还涉及了一些开源的项目.但是真的谈起这门语言或多或少都会有些心虚,关于C++的 ...

  3. jQuery自学笔记(一):初识jQuery

    jQuery 是一个 JavaScript 函数库, jQuery 库位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数,引用jQuery应该注意: <script&g ...

  4. jsp中的动作元素:<jsp:plugin>

    <jsp:plugin>用来产生客户端浏览器的特别标签(object或embed),可以使用它来插入Applet或JavaBean. 当jsp文件被编译把结果发给浏览器是,<jsp: ...

  5. 转载:Java连接MySQL 数据库的正确操作流程

    转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html       以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...

  6. Css 八卦

    <div class="box"> <div class="right_d"></div> <span class=& ...

  7. 统计建模与R软件习题二答案

    # 习题2 # 2.1 x=c(1,2,3) y=c(4,5,6) e=c(rep(1,3)) z=2*x+y+e;z x%*%y # 若x,y如答案那样定义为矩阵,则不能用%*%,因为,维数不对应, ...

  8. Android 字体颜色变化(点击)

    在开发的过程中,经常会遇到这样的场景,点击按钮,背景颜色发生变化:在drawable中,定义xxx.xml(selector) <selector xmlns:android="htt ...

  9. MVC route 和 Angular router 单页面的一些方式

    直接看代码和注释吧 ASP.NET MVC router public class RouteConfig { public static void RegisterRoutes(RouteColle ...

  10. MCS-51单片机I/O端口的存取

    MCS-51单片机通常有4个8位I/O端口, 向各端口的写数据均写入到对应端口的锁存器中, 但对各端口的读操作却有两个方式:读锁存器和读引脚 1 读-修改-写操作    Pn(指P0,P1,P2,P3 ...