Webservice常识

  1. 云栖社区>
  2. 博客>
  3. 正文

Webservice常识

航空母舰 2016-05-12 14:36:36 浏览2017
展开阅读全文

什么是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

网友评论

登录后评论
0/500
评论
航空母舰
+ 关注