`
jameswxx
  • 浏览: 776394 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

webservice简介

阅读更多

       从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个Web service 的应用程序叫做客户。


       下面是对Web service 更精确的解释: 
Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

Web Service是指由企业发布的完成其特别商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。

 

组成Web service平台的这三个技术

XML和XSD

       可扩展的标记语言(XML)是Web service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。

       XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,还是64位?这些细节对实现互操作性都是很重要的。W3C制定的XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。Web service平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合Web service标准,所有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。


SOAP

       Web service建好以后,你或者其他人就会去调用它。简单对象访问协议(SOAP)提供了标准的RPC方法来调用Web service。实际上,SOAP在这里有点用词不当:它意味着下面的Web service是以对象的方式表示的,但事实并不一定如此:你完全可以把你的Web service写成一系列的C函数,并仍然使用SOAP进行调用。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。


WSDL

       你会怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web service。解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。


      假设我不得不为一个连锁店开发一个程序。这家连锁店分布在全国各地,但是我的产品主目录(master catalog of product)只存放在我的中心办公室的数据库中,并且分店的软件必须能够访问这个产品目录.我可以通过一个被称为ShopService的Web Service 来发布这些目录。重要的是:在网站上发布的时候不能出错。在网站上的信息是为人编写的。而在Web Service上的信息可以被软件访问,并不时直接被人访问(尽管存在人用这个软件的可能)。虽然Web Service 很大程度上依赖现有的Web技术(像我们正在看到的HTTP),但他们和Web浏览器与HTML没有联系。我们再重复一遍: 网站是为人服务的,而Web Service 是为软件服务的 :-)

 

       客户端(在商店的PC)在那个时候将要连接(服务器上的)WebService,并发送一个需要目录的服务请求。服务器将会通过一个服务响应返回目录信息。当然这是一个描述Web Service如何工作的非常潦草的例子。等一下,我们将会看到一个非常详细的解释。


       我们中的一些人可能会这么想:"嘿,等一下!我可以通过RMI,CORBA,EJBs,等很多其他技术来实现啊!"。那么。为什么还要Web Service? 好的,Web Service 也有很多优于其他技术的地方:

Web Service由于使用标准的XML语言因而是平台无关、语言无关的,这就意味着我们的客户端可以用C++编写在windows下运行,而Web Service使用Java编写而运行在linux下,大部分Web Service 使用HTTP传输消息(像服务请求和响应)。如果你想建立一个Internet范围的程序,这是一个主要的优点,因为大部分Internet's的代理和防火墙都不会破坏HTTP的传输(不像CORBA会在穿过防火墙时遇到麻烦) ,当然了,Web Service也存在以下一些缺点:

压力过大。很明显所有在XML中的数据没有定义好的二进制代码效率高。在你赢得通用性的同时降低了效率。尽管那样,这个压力通常是可以被大部分应用程序所接受的, 用途狭窄。目前,由于他们只支持很基本的服务种类,所以Web Service 的用途不是很多。例如CORBA提供给编程者很多正在支持的服务(像持续服务,通知,生命周期管理,转换等等)。事实上,在下一页我们可以看到网格服务可以真正的补偿了用途狭窄的缺点。
  
       然而,分布式的Web Service有一个很重要的特点。像CORBA和EJB技术是面向关系紧密的分布式系统的,它们的客户端和服务端彼此非常依赖。但Web Services是面向松散关系的系统,客户端可以直到真正调用web service才知道Web Service的知识,例如基于网格的应用。

 

一个典型的Web Service的调用

      我们看一下一个完整的Web Service调用的全部的调用步骤。
正如我们前面所说的,一个客户端可以不知道Web Service是如何调用的.所以我们第一步是寻找满足我们要求的Web Servicede 的位置,例如我们想要找一个可以告诉我们美国城市温度的Web Service。我们可以通过与UDDI注册点联系得到Web Service的位置。UDDI注册器将会返回告诉我们哪个服务器可以提供给我们我们想要的服务(像美国城市的温度)
我们现在知道Web Service的位置了,但我们还不知道如何使用它。我们确实知道它可以给我们美国城市的温度,但是真是的服务是如何调用的呢?我们调用的方法可能被称为Temperature getCityTemperature(int CityPostalCode),但是它也可以是
int getUSCityTemp(string cityName, bool isFarenheit).我们必须问Web Service 如何描述自己。(告诉我们如何使用它) 用被称为WSDL的语言返回信息。


      我们终于知道Web Service的位置和如何调用它。调用方法是通过SOAP来实现的。那样我们就发送SOAP请求要求一个城市的温度。 Web Service 将会温和的返回一个包含我们想要的温度的SOAP响应,或者是当我们的请求信息错误时返回一个错误信息。

 

 Web Service的寻址

      但是....如何准确的寻址Web Service?这个答案非常的简单:就像我们的网页。我们使用朴素而简单的URIs(Uniform Resource Identifiers)。如果你熟悉 URL (Uniform Resource Locator)这个名词的话,那就不要担心:URI和URL事实上是同一样东西。

例如UDDI注册服务期可能会返回如下 URI:

http://webservices.mysite.com/weather/us/WeatherService

这个很容易被认为是一个网页的地址。然而Web Service 是通过软件来记住这个地址的(不再是让人直接记住)。如果你写一个Web Service的URI进你的Web浏览器,你可能会的到一个错误信息或者是难以理解的代码(一些Web Service 会显示给你一个漂亮的界面,但是这个界面和通常的不一样)。当你拥有一个Web Service 的URI时,你通常需要将这个URI交给一个程序。事实上,我们写的大部分的客户端程序都会把网格服务URI作为一个命令参数来接收。

 

 

Web Services 的架构

      现在我们已经看到了在Web Service调用过程中的不同活动者,让我们来更清楚地了解Web Service的架构吧!


Service Discovery:

这部分容许我们寻找满足需要的Web Service。这部分通常由UDDI(Universal Description, Discovery, and Integration)来处理。GT3目前不支持UDDI.


Service Description:

Web Service最有趣特点之一就是他们能够自我描述。这意味着一旦你定位了Web Service,你能要求他"描述自己"并告诉你如何操作和使用它。这是通过Web Services Description Language (WSDL)来处理的


Service Invocation:

 调用一个Web Service(和一般的任何类似CORBA对象或者Enterprise Java Beand的分布式服务)的过程中包含在客户端与服务端之间传输的信息。SOAP (Simple Object Access Protocol)规范了我们如何格式化送往服务器的请求信息和如何格式化服务器本身的响应信息。在理论上,我们还可以使用其它调用语言(例如XML_RPC或者 even some ad hoc XML language).然而,SOAP是Web Service更乐意的选择。


Transport:

 最后,这些所有的信息可以在服务端和客户端之间传输。架构这部分选择的协议是HTTP(HyperText Transfer Protocol),与访问Internet上的普通网页的协议相同!在理论上我们仍然能使用其他协议,但HTTP协议是目前使用最广泛的了。

 

Web Service 应用看起来是什么?

      首先,你应该知道尽管存在很多协议和在周围浮现的众多语言,Web Service 编程者通常不用写一行SOAP或者WSDL的代码。一旦我们到了我们的客户端需要调用一个Web Service那一刻时,我们授权给软件中一块叫本地stub(a client stub)的任务。好消息是有很多可以利用的工具为我们自动产生基于WSDL的Web Service描述的本地stub(a client stub)。

 

      这样你不需要逐字地解释"典型的调用"对话过程。一个Web Service客户端通常不会在一个调用过程中经过所有步骤。一个更正确的事件流程如下:

 

我们通过UDDI定位一个满足我们需要的Web Service。
我们获得关于这个Web Service的WSDL描述。
我们产生stub,然后在我们的应用程序中包含它们。
这个应用程序会在每次调用Web Service 时使用stub。

 

      服务端的编程比较容易。我们不用必须写一个复杂的需要动态解释SOAP请求和产生SOAP响应的服务程序,我们能简单的实现我们Web Service的所有功能,然后产生一个服务器stub(the term skeleton is also used),这个stub负责解释请求然后将这些请求转交给服务器的实现部分。当服务器实现部分包含一个结果时,它将会把这个结果交给服务器stub,这样就产生了合适的SOAP响应。这个服务器stub还能通过WSDL描述产生,或者从其他语言(像IDL)定义的接口。此外的是服务器实现和服务器stub都通过软件中被称为Web Service容器的代码来管理,这个容器会确保提交给Web ServviceHTTP请求直接交给服务器stub。

 

调用一个Web Service的步骤


     我们来假设我们的客户端已经定位了Web Service,从WSDL描述产生了客户端stub,并且服务端程序也产生了服务端stub。无论客户端什么时候需要调用Web Service,它都需要调用客户端stub。这个客户端stub会将这个本地调用转换为合适的SOAP请求。这步经常被称为编组过程(marshalling process).


     SOAP请求使用HTTP协议通过网络发送出去。Web Service容器接收到SOAP的请求后将它交给服务器stub。服务器stub把SOAP请求转换服务器实现程序能够理解的形式。这步经常被称为解散。 服务器实现部分收到从服务器stub转来的请求后,执行所请求的工作。例如我们调用了 int add(int a, int b) 方法,服务器实现执行加法功能。 执行请求的结果由服务器stub处理转换为SOAP响应。 SOAP响应使用HTTP协议通过网络发送。客户端stub收到SOAP响应并将它转换为客户端应用可以理解的形式。 最终客户端应用接受到调用Web Service的结果并使用这个结果。

分享到:
评论

相关推荐

    WebService简介

    ### WebService简介 #### 1. 不同Server的元件如何存取 在不同的服务器之间进行通信时,通常需要实现一种机制让服务器上的组件能够互相访问。这种访问涉及到客户端(ClientSite)与服务端(ServerSite)之间的交互...

    XML_XSL_DTD_SCHEMA_SAX_DOM_JDOM_WEBSERVICE简介.pdf

    ### XML_XSL_DTD_SCHEMA_SAX_DOM_JDOM_WEBSERVICE简介 #### 背景知识点拨 XML(可扩展标记语言,Extensible Markup Language)及其相关技术(如XSL、DTD、Schema、SAX、DOM、JDOM以及Web服务)在现代信息技术中...

    webservice简介及架构

    Web服务(Web Service)是一种基于互联网的、采用标准的XML(Extensible Markup Language)进行通信的技术,它允许不同系统间的应用程序进行交互。本篇将深入探讨Web服务的概念、架构及其在Java环境中的实现。...

    使用RESTEasy构建WebService简介

    综合上述知识点,使用RESTEasy框架构建WebService的整个过程,从项目初始化、资源类的编写、服务类的实现、拦截器的使用、文件上传的处理、与Spring框架的集成,以及前端请求的编码问题解决等方面都提供了一个清晰的...

    oracle 调用webservice

    一、Webservice 简介 Webservice 是一种基于 XML 的分布式系统,允许不同的应用程序之间进行交互和集成。Webservice 通常使用 SOAP(Simple Object Access Protocol)协议来传输数据,使用 WSDL(Web Service ...

    webservice

    #### 一、WebService简介 WebService是一种标准的跨平台通信方式,它允许在不同技术栈之间进行数据交换和服务交互。通过WebService,可以在不同的应用程序之间共享业务逻辑、数据和功能,这有助于提高软件的可重用...

    自己总结的webService简介

    Web服务是一种基于互联网的软件接口,允许不同系统之间的应用程序组件相互通信和交换数据,不受平台、编程语言或操作系统限制。这种技术的核心理念是通过标准化的技术实现互操作性,使得服务提供者(Provider)和...

    C# WebService 客户端 服务器 Json

    一、C# WebService简介 WebService是一种基于HTTP协议的Web应用程序,能够跨平台、跨语言地提供服务。在C#中,可以使用.NET框架的ASMX(ASP.NET Web Services)或WCF(Windows Communication Foundation)来创建和...

    SqlServer触发器调用WebService

    #### 二、WebService简介 WebService是一种开放标准协议,用于在网络上交换数据和执行远程过程调用。WebService可以通过HTTP协议进行通信,并且通常使用XML作为数据格式。WebService的一个主要优势在于它的平台无关...

    webService 简介

    介绍的比较 细致全面

    VB6调用WebService

    WebService简介 WebService是一种基于标准的、平台无关的通信方式,它允许不同系统间的应用程序通过互联网进行交互。通常使用SOAP(Simple Object Access Protocol)协议传输数据,并通过WSDL(Web Services ...

    WebService使用,客户机+服务WebService+SqlServer2005,附有说明

    一、WebService简介 WebService是一种基于互联网的、平台无关的分布式计算模式,它允许不同系统间的应用程序进行交互。通过使用XML(可扩展标记语言)作为数据交换格式,SOAP(简单对象访问协议)作为通信协议,以及...

    c# httpwebrequest调用webservice demo

    ##### 1.1 WebService简介 WebService是一种基于XML和HTTP协议的应用程序接口(API),它允许不同平台、不同语言编写的程序进行通信。WebService通常使用SOAP(Simple Object Access Protocol)作为通信协议的标准格式...

    Domino的WebService服务

    1. WebService简介: WebService是一种基于开放标准(如WSDL、SOAP和UDDI)的互联网通信协议,允许不同应用程序之间共享数据和功能。通过XML格式的数据交换,WebService可以跨越操作系统、编程语言和网络环境的限制...

    webservice之通俗理解

    #### 一、WebService简介与应用场景 WebService是一种标准的网络服务,它使得不同系统之间可以通过标准的协议(如HTTP)进行数据交换和服务调用,而无需关心底层实现细节。WebService通常使用SOAP(Simple Object ...

    WebService.ppt

    #### WebService简介 WebService是一种用于在分布式环境中进行远程调用的技术,它允许应用程序通过网络相互通信并共享数据。由于其具备跨编程语言和跨操作系统平台的能力,WebService成为了现代软件架构中非常重要的...

Global site tag (gtag.js) - Google Analytics