WebService笔记一

Web services是建立可互操作的分布式应用程序的平台。作为一套标准,它定义了应用程序如何在Web上实现互操作性。可以在任何平台上用合适的语言写Web service ,只要符合Web service标准,就可以在运行时动态的查找和访问。

Web service平台需要一套协议来实现分布式应用程序的创建。
一、为实现平台间的交互操作性,web Service平台提供一套标准的类型系统(XML和XSD)。
        任何平台都有它的数据表示方法和类型系统。一套标准的类型系统可以解决不同平台、编程语言和组件模型中的不同类型系统之间能够相互沟通问题。
二、描述WebService。
        正确使用WebService的前提是知道你要能够获得该webService提供了哪些服务,以及怎样使用他们的信息。
        在传统的分布式系统中,基于界面(interface)的平台提供了一些方法来描述界面、方法和参数(如COM和COBAR中的IDL语言)。因此,web Service平台通过提供一套标准来描述webService,让客户通过描述,获得足够的信息达到正确使用的目的。
三、用户在本地使用了webservice提供的服务,但是真正调用这些服务,获得服务,需要通过一种方法[远程过程调用协议(RPC)。]来对这个webservice进行远程调用。为了达到互操作性,这种RPC协议必须与平台和编程语言无关。

上述三种技术的简单介绍如下:
XML和XSD
Web service平台表示数据的基本格式是可扩展的标记语言(XML)。用XSD来作为其数据类型系统。
        XML解决了数据表示的问题。XML主要的优点:易于建立、易于分析外、平台和厂商无关性(即既是平台无关的又是厂商无关的,因为竞争,软件厂商绝不会选择竞争对手发明的技术,这样,造成现实中无关性远比技术优越性更重要。)
        W3C制定的XML Schema(XSD)定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。解决了描述调用方法所需类型的问题。利用各种Web服务类型,可以将内存中完整的数据库编组给客户,会大大减少数据库服务器上载入的数据量。构造Web service时,所有的数据类型都必须转换为XSD类型,这样才符合Web service标准。

WSDL(Web Service Description Language, Web 服务描述语言
Web service描述语言(WSDL)是一个基于XML的语言,语法与与xml完全兼容。用于描述Web service及其函数、参数和返回值。
它是用机器能阅读的方式提供的一个正式的描述文档。因为基于XML,用户也可以阅读,一些开发工具能根据Web service生成WSDL文档,能导入WSDL文档,生成调用相应Web service的代码。
WSDL文件最重要的部分是类型定义部分。使用xml模式去描述数据交换的格式,数据交换的格式通过使用的xml元素和元素之间的关系来定义。

SOAP
(Simple Object Access Protocal, 简单对象访问协议)
SOAP提供了标准的RPC方法来调用Web service。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。
在这里,SOAP并不一定意味着Web service是以对象的方式表示的,完全可以把你的Web service写成一系列的C函数,并仍然使用SOAP进行调用。

       举个简单的例子希望形象化上述关系:
       假设有一个外卖店提供送货服务。
       那么对于所有的外卖店而言,外卖是按照名称,价格,原料分类,品质等进行描述的,而对于所有的送货服务,需要了解客户地址,联系电话,客户预订的货物名称,数量以及要货日起等信息。
       一套标准的类型系统就类似于这种信息,所有的客户都能够通过这些信息看明白你的提供给他们什么?而这些外卖可能来自小餐馆,也可能来自大酒店。这些原料可能来自中国,也可能来自意大利。
       描述WebService就类似与外卖店提供给客户的菜单,它将上面的元素组合成一道道佳肴,然后附上外卖店的地址、电话、服务地域范围以及营业时间。菜单有中文的,有日文的,有法文的,有意大利文的,有英文的等等以面对不同的客户,让他们清楚有哪些佳肴。
       
远程过程调用协议(RPC)就类似你可以电话预订,也可以采用网络预定的方式,总之你不必关心外卖店的地址,到了时间你就可以收到香喷喷的佳肴。你也不管人家是开0个轮子或者2个轮子的过来的呢,还是开三个轮子或者四个轮子过来的,总之属于某种交通工具,当然走路呢,暂且划归为绿色交通工具:-)
原文地址:https://www.cnblogs.com/LiuShui/p/195898.html