【新手入门】WebService概述原创
金蝶云社区-一只小皮皮
一只小皮皮
11人赞赏了该文章 7,092次浏览 未经作者许可,禁止转载编辑于2021年09月30日 09:53:12
summary-icon摘要由AI智能服务提供

WebService是一种跨编程语言和操作系统的远程调用技术,使用HTTP协议和XML标准实现互操作性,通过WSDL、SOAP、XML+XSD等技术实现服务描述、远程调用和数据交换,支持跨防火墙通信、应用程序集成和软件数据重用。

WebSeverice是什么?WebService是一种跨编程语言和跨操作系统平台的远程调用技术

WebService概述

背景

一、通讯

传统的Windows客户端应用程序使用DCOM来与服务器进行通信和远程调用。关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信,这是因为任何运行Web浏览器的机器都在使用HTTP协议,同时,当前许多防火墙也配置为只允许HTTP连接。


二、跨平台

许多商用程序还面临另一个问题,那就是与其他程序的互操作性,大多商业数据仍然在大型主机上一非关系文件(VSAM)的形式存放,并由COBOL语言编写的大型机程序访问,而且还有很多商用程序继续在使用C++、Java、Visusl、Basic和其他各种各样的语言编写。

几乎所有的应用程序都需要与运行在其他异构平台上的应用程序集成交互。在以前,没有一个应用程序通信标准,是独立于平台、组建模型和编程语言的。这样的集成交互任务通常都是有特殊的方法,如文件传输和分析,消息队列,还有仅适用于某些情况的API。

WebService是什么?

WebService是一个平台独立的、低耦合的、自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用的标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

WebService技术,能使得运行在不同机器上的不同应用无须借助附件的、专门的第三方软件或硬件,就可以互相交换数据或集成。依据WebService规范实施的应用之间,无论他们使用的语言、平台或内部协议是什么,都可以相互交换数据 。WebService是自描述、自包含的可用网络模块,可以执行具体的业务功能。WebService也很容易部署,因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。WebService减少了应用接口的花费,WebService为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

从表层来看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以通过任何你喜欢的语言,在任何你喜欢的平台上写WebService,只要我们可以通过WebService标准对这些服务进行查询和访问。

WebService平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方式和类型系统。要实现互操作性,WebService平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。WebService平台必须提供一套标准来描述WebService,让客户可以得到足够的信息来调用这个WebService。最后,我们还必须有一种方法来对这个WebService进行远程调用,这个方法实际上是一种远程调用协议(RPC)。为了达到互操作性,这种RPC协议还必须与平台和编程语言无关。

WebService平台的三大技术

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

XML+XSD

WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。XML是WebService平台中表示数据的格式。除了易于建立和易于分析外,XML主要的有点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术。

XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位、32位、64位?这些细节对实现互操作性很重要。XML Schema Definition(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

如果我们去商店买东西,首先我们要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。WebSerice也一样,Webservice客户端要调用一个Webservice服务,首先要有知道这个服务的地址在哪,以及这个服务有什么方法可以调用。

你会怎样向别人介绍你的Webservice有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的WebService的人。这些非正式订单方法至少都有一个严重的问题:当程序员做到电脑前,想要使用你的Webservice的时候,他们的工具(如Visual和Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的WebS而Vic而。

解决方法是:用机器能阅读的方式提供一个正式的描述文档。所以Webservice服务器首先要通过一个WSDL文件来说明自己家里有什么服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式调用。

WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述WebService及其函数、参数和返回值。它是Webservice客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的WebService生成WSDL,又能导入WSDL文档,生成调用相应WebService的代理类代码。

文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个Webservice服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:

  1. 注册到UDDI服务器,以便被人查找;

  2. 直接告诉客户端调用者

Webservice适用场合

1、跨防火墙通信

如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。

在这种情况下,使用DCOM就不是那么简单,通常也不便于把客户端程序发布到数量如此庞大的每一个用户手中。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的开发难度大,程序也很难维护。

如果中间层组件换成WebService的话,就可以从用户界面直接调用中间层组件。

2、应用程序集成

企业级的应用程序开发者都知道,企业里经常都要把不同语言写成的,在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行在IBM主机上 的程序中获取数据;或者把数据发送到主机或者UNIX应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。

WebService跨编程语言和跨操作系统平台的特性,使得通过Webservice,可以很容易的集成不同结构的应用程序。

3、软件和数据重用

软件重用是一个很大的主题,重用的形式很多,重用的程度有大有小。最基本的形式是源代码或者类一级的重用,一种形式是二进制形式的组件重用。采用WebService应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用,达到业务级重用。


图标赞 11
11人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!