什么是WebService呢?从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序 。例如,笔者创建一个WebService,它的作用是查询某公司某员工的基本信息。它接受该员工的编号作为查询字符串,返回该员工的具体信息。你可以在浏览器的地址栏中直接输入HTTPGET请求来调用罗列该员工基本信息的ASP页面,这就可以算作是体验WebService了。
从深层次上看,WebService是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。
WebService便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。WebService平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用你喜欢的任何语言(笔者用的是C#),在你喜欢的任何平台上写WebService。
WebService的技术支持
Web Service大体上分为5个层次:
1. Http传输信道
2. XML的数据格式
3. SOAP封装格式
4. WSDL的描述方式
5. UDDI WebService的运行机理
1.XML和XSD
可扩展的标记语言XML是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会 (W3C)创建,W3C制定的XML SchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB.NET或C#来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起 来。这种东西就是一种协议,如 SOAP。
2.SOAP
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将 程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。
Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。
3.WSDL
Web Service描述语言WSDL就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。
4.UDDI
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
5.远程过程调用RPC与消息传递
Web Service本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法:RPC远程过程调用和消息传递。使用RPC的时候,客户端的概念 是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客 户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。
WebService的特点
WebService的主要目标是跨平台 。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
webservice优势:
(1)可以跨防火墙进行通信
如果应用程序有成千上万的用户,而且分布在世界各地,最关键的是运行在完全不同的平台上。各个组件之间的通信是个非常棘手的问题。因为,客户端和服务器之间通常会有防火墙或者代理服务器,并且程序运行在不同的平台上。
传统的解决方案是通过Web server对外提供服务,比如Servlet技术,但Servlet花费太多的精力生成界面,组件之间的通信完全不需要界面部分,而是依赖于服务的互相引用。
将中间层组件换成WebService,组件可以直接调用中间层组件,省掉建立Servlet的表现层。由WebService组成的中间层,完全可以在异构系统整合或其它场合下重用。最后,通过WebService把应用的逻辑和数据“暴露”出来,可以让其它平台上的客户重用这些应用。
(2)应用程序集成
企业里经常需要整合不同语言的、在不同平台上运行的应用程序,这种整合将花费很大的开发力量。应用程序经常需要从IBM主机上获取数据,或者把数据发送到UNIX应用程序中去。即使在同一个平台上,不同软件厂商的各种软件也常常需要整合。通过WebService,应用程序可以以标准方式“暴露”功能和数据,供其他应用程序使用。
例如,面对这样的订单登记应用,用于登记客户发来的新订单,包括客户信息、发货地址、数量、价格和付款方式等内容;还有一个订单执行程序,用于管理实际的货物发送。而两个应用程序来自不同软件厂商。新订单进入系统之后,订单登记程序应通知订单执行程序发送货物。
这样,可以在订单执行程序包装一层WebService,将“AddOrder”函数“暴露”出来。订单登记程序可以调用这个函数来发送货物,而无须理会该程序的运行平台、具体实现等细节。
(3)B2B的整合
WebService可用来整合应用,从而使公司内部的商务处理更加智能化。整合跨公司业务交易成为B2B整合。
通过WebService,公司可以把关键的商务应用“暴露”给指定的供应商和客户。例如,将电子下单系统和电子发票系统“暴露”出来,客户可以发送电子订单,供应商则可以发送电子采购发票。当然, WebService只是B2B整合的关键部分,还需要许多其他部分才能实现整合。
用WebService来实现B2B整合好处在于:可以实现跨平台的互操作性。只要把商务逻辑“暴露”出来,成为WebService,可以让任何指定的合作伙伴调用这些逻辑,不管他们的系统在什么平台上运行,使用什么开发语言。这样,可以大大减少B2B整合的时间和成本。
(4)软件和数据重用
软件重用是一个很大的主题,重用的形式很多,重用的程度各有不同。基本的形式是源代码模块或者类一级的重用,另一种形式是二进制形式的组件重用。
当前的可重用的组件存在一个很大的限制:重用仅限于代码,数据不能重用。原因在于,发布组件甚至源代码都比较容易,但要发布数据就没那么容易,除非是不会经常变化的静态数据。
WebService既允许重用代码,也允许重用的数据。通过WebService,客户也不必像从前那样,要先从第三方购买、安装组件,再通过应用程序调用组件;应用程序可以直接调用远端的WebService。WebService提供商可以按时间或使用次数来对服务收费。这样的服务通过组件重用是不可能的,因为数据不可能与应用一起发布,即使一起发布,也不能实时更新。
另一种软件重用的情况是,整合多个应用程序的功能。例如,要建立门户站点应用,让用户既可以查看股市行情,又可以管理自己的日程安排,看可以浏览国际新闻,还可以在线购买电影票。现在Web上有很多供应商,在其应用中分别实现了这些功能。一旦他们把这些功能通过WebService“暴露”出来,就可非常容易地将这些功能集成到你的门户站点中,为用户提供统一的、友好的界面。
总结起来,WebService有如下特点:
封装性:WebService是一种部署在Web应用上的对象,具备良好的封装性。对使用者而言,仅能看到服务描述,而该服务的具体实现、运行平台都是透明,调用者无须关心,也无法关心。WebService作为整体提供服务。
松散耦合:当WebService的实现发生改变时,调用者是无法感受到这种改变的。对调用者而言,只要服务实现的接口没有变化,具体实现的改变是完全透明的。
使用标准协议:WebService所有的公共协议都使用标准协议描述、传输和交换。这些标准协议在各种平台上完全相同。
高度整合的能力:由于WebService采用简单的、易理解的标准Web协议作为通信协议,完全屏蔽了不同平台的差异,无论是CORBA、DCOM还是EJB,都可以通过这种标准的协议进行互操作,实现系统的最高可整合性。
高度的开放性:WebService可以与其他的WebService进行交互,具有语言和平台无关性,支持CORBA,EJB,DCOM等多种组件标准,支持各种通讯协议如:HTTP,SMTP,FTP和RMI等。
WebService的缺点:
(1)单机应用程序
目前,企业和个人还使用着很多桌面应用程序。其中一些只需要与本机上的其它程序
通信。在这种情况下,最好就不要用Web Service,只要用本地的API就可以了。COM非常
适合于在这种情况下工作,因为它既小又快。运行在同一台服务器上的服务器软件也是这
样。当然Web Service 也能用在这些场合,但那样不仅消耗太大,而且不会带来任何好处。
(2)局域网的一些应用程序
在许多应用中,所有的程序都是在Windows平台下使用COM,都运行在同一个局域网上。在
这些程序里,使用DCOM会比SOAP/HTTP有效得多。与此相类似,如果一个.net程序要连接
到局域网上的另一个.net程序,应该使用.net Remoting。其实在.net Remoting中,也可
以指定使用SOAP/HTTP来进行Web Service 调用。不过最好还是直接通过TCP进行RPC调用
,那样会有效得多。
然而,WSDL 文档的编写是一件很麻烦的事情,无聊又容易出错。很多人认为那玩意儿不是人写的,但是,如果有好的软件工具,那玩意儿又是不需要人写的。1. nusoap官方使用博客 http://www.scottnichol.com /soap/index.html 。如果使用nusoap,nusoap可以自动生成wsdl,只需在调用service文件的路径后加?wsdl即可, 譬如:http://127.0.0.1/service.php?wsdl
常用WEB SERVICE
天气预报Web Service ,数据来源于中国气象局
Endpoint : http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
IP地址来源搜索Web Service (是目前最完整的IP地址数据)
Endpoint : http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl
随机英文、数字和中文简体字Web Service
Endpoint : http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl
中国邮政编码 <--> 地址信息双向查询/搜索Web Service
Endpoint : http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?wsdl
验证码图片Web Service 支持中文、字母、数字 图像和多媒体
Endpoint : http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx?wsdl
Email 电子邮件地址验证Web Service
Endpoint : http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl
中文简体字 <-->繁体字转换Web Service
Endpoint : http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl
中文 <--> 英文双向翻译Web Service
Endpoint : http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl
火车时刻表Web Service (第六次提速最新列车时刻表)
Endpoint : http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl
中国股票行情数据Web Service (支持深圳和上海股市的基金、债券和股票)
Endpoint : http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?wsdl
即时外汇汇率数据Web Service
Endpoint : http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx?wsdl
腾讯QQ在线状态Web Service
Endpoint : http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx
Disco : http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?disco
WSDL : http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
中国电视节目预告 (电视节目表)Web Service
Endpoint : http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx
Disco : http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?disco
WSDL : http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl
外汇-人民币即时报价Web Service
Endpoint : http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx
Disco : http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx?wsdl
中国股票行情分时走势预览缩略图Web Service
Endpoint : http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx
Disco : http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?disco
WSDL : http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?wsdl
国内飞机航班时刻表 Web Service
Endpoint : http://www.webxml.com.cn/webservices/DomesticAirline.asmx
Disco : http://www.webxml.com.cn/webservices/DomesticAirline.asmx?disco
WSDL : http://www.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl
中国开放式基金数据Web Service
Endpoint : http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx
Disco : http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx?wsdl
股票行情数据 Web Service (支持香港、深圳、上海基金、债券和股票;支持多股票同时查询)
Endpoint : http://www.webxml.com.cn/WebServices/StockInfoWS.asmx
Disco : http://www.webxml.com.cn/WebServices/StockInfoWS.asmx?disco
WSDL : http://www.webxml.com.cn/WebServices/StockInfoWS.asmx?wsdl
相关推荐
这个"WebService教程+实例+代码提示功能WebService实例.rar"压缩包文件显然包含了关于WebService的学习资料、实例代码和可能的代码提示功能,旨在帮助用户深入理解和实践WebService的开发。 首先,"教程地址.txt"很...
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
【标题】:Idea实现WebService实例 在Java开发中,WebService是一种常见的跨平台、跨语言的通信方式,它允许不同的应用程序之间交换数据。IntelliJ IDEA(简称Idea)是广受欢迎的Java集成开发环境,提供了强大的...
根据提供的文件信息,本文将详细解释一个简单的 WebService 示例,并深入探讨其中的关键概念和技术细节。 ### 一、WebService 概念 #### 1.1 WebService 定义 WebService 是一种支持通过网络进行调用的服务形式,...
WebserviceStudio是一款强大的Web服务测试和调用工具,版本为20。这款工具主要帮助开发者和测试人员方便地测试和调试他们的Web服务。以下是WebserviceStudio的一些核心功能和相关知识点: 1. **图形化界面**:...
WebServiceStudio是一款轻量级的Web服务测试工具,它允许开发者无需编写任何代码就能对Web服务进行快速、便捷的测试。这个工具特别适用于那些需要验证Web服务功能或调试接口的IT专业人员。在本文中,我们将深入探讨...
在本案例中,我们关注的是一个特定的Web服务类型——WebService,它用于获取一个包含泛型对象的List。这个场景在分布式系统、微服务架构或者跨平台数据共享中非常常见。让我们深入探讨一下相关的知识点。 1. **...
本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...
Web服务(WebService)是一种基于互联网的、平台独立的交互方式,它允许不同系统之间的应用程序进行通信。WebServiceStudio是一款专门用于调试和测试Web服务的工具,尤其适用于开发人员在开发过程中验证和测试Web...
然而,由于其自身不直接支持Web服务(WebService)的调用,开发者通常需要借助第三方库或者特定的技术来实现。本篇文章将详细讲解如何在C++中调用WebService,包括静态和动态方式,并探讨相关的源码实现。 首先,让...
在WinForm应用程序中调用WebService是一项常见的任务,它允许客户端应用程序与远程服务器上的服务进行交互,从而实现数据交换和功能扩展。以下是如何在WinForm中实现这一操作的详细步骤及涉及的相关知识点: 1. **...
### WebService概述与基本用法 #### 一、WebService简介 WebService是一种标准的跨平台通信方式,它允许在不同技术栈之间进行数据交换和服务交互。通过WebService,可以在不同的应用程序之间共享业务逻辑、数据和...
WebserviceStudio20便是一款专门用于模拟Web服务客户端的测试工具,帮助开发者便捷地进行功能验证和性能测试。 WebserviceStudio20的核心功能主要包括以下几点: 1. **SOAP请求构造**:它允许用户直接在界面中输入...
WebService是一种基于XML(可扩展标记语言)的互联网通信标准,它允许不同的应用程序之间进行互操作。这个名为"WebService依赖jar以及xml.zip"的压缩包文件包含了一组用于构建和运行WebService所需的重要组件。 ...
Web服务(WebService)是一种基于标准的、平台和语言无关的方式,允许不同系统之间进行通信和数据交换。在IT行业中,Web服务广泛应用于企业级应用程序集成,使得不同系统间的数据共享和交互变得更加简单。本文将详细...
### WebService的优势与劣势 #### 一、WebService概述 WebService是一种平台独立的、分布式的、基于互联网的应用程序接口(API),它使用标准的Internet协议(如HTTP)进行通信,并使用XML来交换数据。WebService...
【WebService与WebServiceStudio详解】 WebService是一种基于Web的、平台无关的交互方式,它允许不同的应用程序之间进行数据交换和业务逻辑共享。WebService的核心技术是XML(可扩展标记语言)、SOAP(简单对象访问...
WebService是基于XML(Extensible Markup Language)的网络服务标准,它允许不同的系统通过互联网进行通信和交换数据。SOAP(Simple Object Access Protocol)是用于在Web上进行消息交换的一种协议,它是WebService...
本主题聚焦于C#中的WebService客户端和服务器的交互,以及如何利用Json进行数据交换。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于编写而被广泛应用。 一、C# WebService简介 ...
【标题】:“C# WebService调用测试工具” 在IT领域,Web Service是一种基于网络的、松散耦合的软件组件,它允许不同系统之间的数据交换。C# WebService调用测试工具是专为开发者设计的,用于测试和调试Web Service...