WebServiceWebServices与WebserviceWebServices是整个架构Web服务的技术框架,比如就包括XML/SOAP/WSDL/UDDI等;而WebService是指使用WebServices而架构出来的Web服务实例。一般的,WebServices对应的中文名称是Web服务技术,而WebService则被翻译为Web服务。WebService简介Web服务(WebService)是一种建立可互操作的分布式应用程序的新平台,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。能够在一个分布式的计算环境中动态地描述、发布、发现和调用服务。WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。WebService是一个软件系统,支持网络间不同机器的互动操作。(W3C)Webservice目标WebService的主要目标是跨平台的可互操作性。在现有的各种异构平台的基础上,构筑一个通用的,与应用无关、语言无关的技术层,各种不同平台之上的应用依靠这个技术层来实施彼此的连接和集成。新、老Web模式对比目前人们使用Web的模式:1.浏览互相链接的文档2.通过手工操作处理采购等商业事务3.下载文件通过浏览器手工操作WebService是使用Web的新模式:1.通过程序自动启动和处理商务事务,而并非使用浏览器2.能够在一个分布式的计算环境中动态地描述、发布、发现和调用3.支持基于WebService的新型应用完全基于XML以及其他相关的Internet标准使用WEB服务的方式WEB服务实际上是一组工具,并有多种不同的方法调用之。三种最普遍的手段是:远程过程调用(RPC),服务导向架构(SOA)以及表述性状态转移(REST)1、远程过程调用(RemoteProcedureCallProtocol)WEB服务提供一个分布式函数或方法接口供用户调用,这是一种比较传统的方式。通常,在WSDL中对RPC接口进行定义。2、服务导向架构(Service-orientedarchitecture)在服务导向架构中,通讯由消息驱动,而不再是某个动作(方法调用)。3、表述性状态转移(Representationalstatetransfer)类似于HTTP或其他类似协议,它们把接口限定在一组广为人知的标准动作中(比如HTTP的GET、PUT、DELETE)以供调用。此类WEB服务关注与那些稳定的资源的互动,而不是消息或动作。Webservice平台Webservice,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Webservice,只要我们可以通过Webservice标准对这些服务进行查询和访问。既然说Webservice是一种平台,那么它必须提供一种标准来描述Webservice,让客户可以得到足够的信息来调用这个Webservice。最后,我们还必须有一种方法来对这个Webservice进行远程调用。这种方法实际是一种远程过程调用协议(RPC)。为了达到互操作性,这种RPC协议还必须与平台和编程语言无关。下面简要介绍了组成Webservice平台的几个基本要素。XML和XSDXML和XSD(ExtensibleMarkupLanguage)可扩展的标记语言(标准通用语言下的一个子集),是WebService平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XSD是指XML结构定义(XMLSchemasDefinition)XMLSchema语言也就是XSD。描述了XML文档的结构。WSDL(WebserviceDescriptionLanguage)WebService描述语言,就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述WebService及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。WSDL使用XML编写WSDL是一种XML文档WSDL用于描述网络服务WSDL也可用于定位网络服务WSDL还不是W3C标准wsdl:definitionsname=nmtokentargetNamespace=uriimportnamespace=urilocation=uri/*wsdl:types……/wsdl:typeswsdl:messagename=“nmtoken”……/wsdl:messagewsdl:portTypename=nmtoken……/wsdl:portTypewsdl:bindingname=nmtokentype=qname……/wsdl:bindingwsdl:servicename=nmtokenwsdl:portname=“nmtoken”binding=“qname”……/wsdl:port/wsdl:service/wsdl:definitionsWSDL的文档结构服务抽象定义服务实现定义TypesmessageportTypebindingPortserviceSOAPSimpleObjectAccessProtocol简单对象访问协议,它是用于交换XML编码信息的轻量级协议。定义了传递XML-encoded数据时的统一方式;同时它也定义了使用HTTP作为底层通信协议时,执行远程调用(RFC)的方法。SOAP是一种通信协议SOAP用于应用程序之间的通信SOAP是一种用于发送消息的格式SOAP被设计用来通过因特网进行通信SOAP独立于平台SOAP独立于语言SOAP基于XMLSOAP很简单并可扩展SOAP允许您绕过防火墙SOAP将作为W3C标准来发展UDDIUniversalDescription,DiscoveryandIntegration通用描述、发现与集成服务UDDI为客户提供了一种动态查找其它Web服务的机制。是一种目录服务,通过它,企业可注册并搜索Webservices。UDDI是一种用于存储有关webservices的信息的目录。UDDI是一种由WSDL描述的网络服务接口目录。UDDI经由SOAP进行通迅。UDDI被构建于Microsoft.NET平台之中。WebService架构ServiceProviderServiceBrokerServiceRequesterBind/InvokeUDDIRegistryWebServiceClientApplicationSOAP三个参与者:服务提供者(ServiceProvider)服务请求(ServiceRequester)服务代理(ServiceBroker)三个基本操作:发布(Publish)查找(Find)绑定/调用(Bind/Invoke)WebService优点一、跨防火墙的通信如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。举个例子,在应用程序里加入一个新页面,必须先建立好用户界面(Web页面),并在这个页面后面,包含相应商业逻辑的中间层组件,还要再建立至少一个ASP页面,用来接受用户输入的信息,调用中间层组件,把结果格式化为HTML形式,最后还要把“结果页”送回浏览器。要是客户端代码不再如此依赖于HTML表单,客户端的编程就简单多了。WebService优点一、跨防火墙的通信如果中间层组件换成WebService的话,就可以从用户界面直接调用中间层组件,从而省掉建立ASP页面的那一步。要调用WebService,可以直接使用MicrosoftSOAPToolkit或.NET这样的SOAP客户端,也可以使用自己开发的SOAP客户端,然后把它和应用程序连接起来。不仅缩短了开发周期,还减少了代码复杂度,并能够增强应用程序的可维护性。同时,应用程序也不再需要在每次调用中间层组件时,都跳转到相应的“结果页”。WebService优点二、应用程序集成例如,有一个订单登录程序,用于登录从客户来的新订单,包括客户信息、发货地址、数量、价格和付款方式等内容;还有一个订单执行程序,用于实际货物发送的管理。这两个程序来自不同软件厂商。一份新订单进来之后,订单登录程序需要通知订单执行程序发送货物。通过在订单执行程序上面增加一层WebService,订单执行程序可以把“AddOrder”函数“暴露”出来。这样,每当有新订单到来时,订单登录程序就可以调用这个函数来发送货物了。WebService优点三、B2B的集成用WebService集成应用程序,可以使公司内部的商务处理更加自动化。但当交易跨越供应商和客户、突破公司的界限时会怎么样呢?跨公司的商务交易集成通常叫做B2B集成。WebService是B2B集成成功的关键。通过WebService,公司可以把关键的商务应用“暴露”给指定的供应商和客户。例如,把电子下单系统和电子发票系统“暴露”出来,客户就可以以电子的方式发送订单,供应商则可以以电子的方式发送原料采购发票。WebService只是B2B集成的一个关键部分,还需要许多其它的部分才能实现集成。WebService优点三、B2B的集成用WebService来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑“暴露”出来,成为WebService,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本,让许多原本无法承受EDI的中小企业也能实现B2B集成。WebService优点四、软件和数据重用WebService在允许重用代码的同时,可以重用代码背后的数据。使用WebService,再也不必像以前那样,要先从第三方购买、安装软件组件,再从应用程序中调用这些组件;只需要直接调用远端的WebService就可以了。举个例子,要在应用程序中确认用户输入的地址,只需把这个地址直接发送给相应的WebService,这个WebService就会帮你查阅街道地址、城市、省区和邮政编码等信息,确认这个地址是否在相应的邮政编码区域。WebService的提供商可以按时间或使用次数来对这项服务进行收费。这样的服务要通过组件重用来实现是不可能的,那样的话你必须下载并安装好包含街道地址、城市、省区和邮政编码等信息的数据库,而且这个数据库还是不能实时更新的。例:旅游咨询业务系统WebService缺点一、单机应用程序目前,企业和个人还使用着很多桌面应用程序。其中一些只需要与本机上的其它程序通信。在这种情况下,最好就不要用WebService,只要用本地的API就可以了。COM非常适合于在这种情况下工作,因为它既小又快。运行在同一台服务器上的服务器软件也是这样。最好直接用COM或其它本地的API来进行应用程序间的调用。当然WebService也能用在这些场合,但那样不仅消耗太大,而且不会带来任何好处。WebService缺点二、局域网的同构应用程序在许多应用中,所有的程序都是用VB或VC开发的,都在Windows平台下使用COM,都运行在同一个局域网上。例如,有两个服务器应用程序需要相互通信,或者有一个Win32或WinForm的客户程序要连接局域网上另一个服务器的程序。在这些程序里,使用DCOM会比SOAP/HTTP有效得多。与此相类似,如果一个.NET程序要连接到局域网上的另一个.NET程序,应该使用.NETremoting。有趣的是,在.NETremoting中,也可以指定使用SOAP/HTTP来进行WebService调用。不过最好还是直接通过TCP进行RPC调用,那样会有效得多。WebServices技术构成WebServices协议栈WebServices工作流程WebServices协议栈WebSer