WebService学习一

      在学习WebService之前,我们首先来了解在没有WebService之前我们是怎么实现跨服务器,跨平台的调用的。我现在项目中就是没有用WebService,我们是通过实现接口调用来实现的。定义一个接口,然后通过发起http请求来调用接口。这样也是可以实现我们的跨服务和跨平台。但是这样的做法是有缺点的。为了使http接口能被访问到,在WebForm情况下,我们需要定义一个页面来作为被调用的接口。在MVC下我们需要定义一个Action来作为被调用的接口,因为http调用是需要一个url的,我们不同说直接在BLL定义一个方法提供http调用。这就意味着当我们要定义接口就必须在表现层上添加页面或者Action,然后他们再来调用BLL层的方法,这样繁琐,而且无意中添加了许多不是用来显示的页面。

      因此我们再想能不能直接在BLL层定义方法,或者独立出一个层但是不用到表现层添加页面,就能实现像接口一样被访问到。这个需求就催生了WebService,其就是用来实现前面那一句所说的。Webservice主要由以下这几个部分组成:

      (1)SOAP:一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议通常是HTTP或HTTPS,但也可能是SMTP或XMPP。
      (2)WSDL:一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。
      (3)UDDI:一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEB服务。

      由于不同平台对于数据的表示形式是不一致的,因此我们就需要一个第三方协议来描述不同平台之间的数据表示,这个就是xml,有了xml来进行数据的表示,就需要一个协议来进行不同平台的传输,这个可以是htpp,https也可能是SMTP或XMPP。一个数据表示格式绑定上一个传输协议这就是SOAP。

      在进行接口调用的时候我们是通过统一的url来实现的,对于WebService所发布的服务,我们也需要一个标识来定位,接下来进行访问。这就是UDDI.

      WebService是实现Web服务的一个技术。有了上面对于WebService技术的了解,接下来阐述WebService就更加容易了。

      Web服务有两层含义:1、是指封装成单个实体并发布到网络上的功能集合体;2、是指功能集合体被调用后所提供的服务。简单地讲,Web服务是一个URL资源,客户端可以通过编程方式请求得到它的服务,而不需要知道所请求的服务是怎样实现的,这一点与传统的分布式组件对象模型不同。

      Web服务的体系结构是基于Web服务提供者、Web服务请求者、Web服务中介者三个角色和发布、发现、绑定三个动作构建的。简单地说,Web服务提供者就是Web服务的拥有者,它耐心等待为其他服务和用户提供自己已有的功能;Web服务请求者就是Web服务功能的使用者,它利用SOAP消息向Web服务提供者发送请求以获得服务;Web服务中介者的作用是把一个Web服务请求者与合适的Web服务提供者联系在一起,它充当管理者的角色,一般是UDDI。这三个角色是根据逻辑关系划分的,在实际应用中,角色之间很可能有交叉:一个Web服务既可以是Web服务提供者,也可以是Web服务请求者,或者二者兼而有之。显示了Web服务角色之间的关系:其中,“发布”是为了让用户或其他服务知道某个Web服务的存在和相关信息;“查找(发现)”是为了找到合适的Web服务;“绑定”则是在提供者与请求者之间建立某种联系。

图2-1 Web service的体系结构

    实现一个完整的Web服务包括以下步骤:

Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册 (发布)

  Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务; (发现)

Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;(发现)

◆ 利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;(绑定)

Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。(绑定)

这面Web服务这部分转载自:

http://www.cnblogs.com/lingfengtian/archive/2009/04/25/1443545.html

posted @ 2011-03-23 16:30  雁北飞  阅读(340)  评论(0编辑  收藏  举报