您的位置:首页 > 其它

WebService的简介, 原理, 使用

2011-05-04 12:21 369 查看

第一部分

:

直观概述

WebService
的几种概念
:




HTTP
协议为基础,通过
XML
进行客户端和服务器端通信的框架
/
组件



两个关键点
:

1.

服务端提供的功能
,
通过
xml
描述

2.

第一步中的描述的功能
,
嵌入到
HTTP
协议中
,
使得能通过
HTTP
协议进行通信【所谓的
SOAP

.



用图可以如下表示:






图一: WebService的简要表示


采用这两个技术的目的主要是
:

1.

跨平台
,
支持
HTTP
协议的主机和服务器
,
都能够建立通信联系
,
并且大部分的主机和服务器
(99.999%
以上
)
将支持
HTTP
协议。一般而言,不同目标主机之间的通信,需要通过防火墙,打开某个端口
, HTTP
协议的优势在于,防火墙一般不会封掉
80
端口
,
这样就可以方便,安全的通信。



2.

跨语言
,
任何语言
,
都支持
XML
文本解析
,
这个的目的是为了实现不同语言之间的通信
,
通信的内容,是被
xml
限制的,因此这样进行通信,能跨越语言障碍,即
, Java
开发的服务端,客户端可以用
C
访问
,
可以用
java

VB
等访问
,
反之亦然。


第二部分
:
基本原理和架构


当然,
架构比我们上面说到的图要更为复杂,上面只是说明了一来一回的通信
,
实际情况还需要考虑以下问题
,
参照图例说明
:

1.
服务器端
(Provider)
提供统一的标准化服务。
就像开办一个公司
(

Server Provider),
工商行政管理局,注册一下公司地址和性质。
目的是
,
别人要用公司的服务,从工商管理局就知道你的地址。这样统一的做法,是方便所有的公司以及所有需要公司提供服务的客户。
并且这些信息是最大限度的公开。



2.
客户端
(Requester)
到注册中心
(Registry)
拿到公司的基本信息之后
,
去找到这个公司
,
然后使用该公司提供的服务。






图二: 基本的WebService架构流程图


注意上面图中的基本步骤的标号
,
解释如下

1. Provider
节点提供好服务后
,
首先注册到节点
Registry

2

3. Requester
节点到
Regitry
节点查信息
,
找到需要的
Provider
及其提供的
Service

4. Requester
使用
Provider
提供的服务



更具体的介绍
,
参照参考文献
[2],
下面这些基本由这个参考文献翻译而来
:







图三: 细节步骤流程图

上图这些东西
,
完完整整的呈现了
WebService
的整个原理流程
:

1.

Client
有需要,想调用一个服务,但不知道哪里去调用
.
但知道
UDDI Registry
上可以查到。

2.

果然
UDDI
记录了某个一个叫做
Web Server A
的服务器能提供这样的服务。

3.

于是
Client

Web Server A,
询问确切的调用方法。

4.

Web Server A
看到
Client
提出的“确切方法查询”之后,
立即返回给它一个
WSDL
描述的
xml
文档这里记录他能提供的各类方法接口
.

5.

Client
了解到这些之后,将这些
xml
的接口方法,封装成为
HTTP
请求
,
发给
Web Server A.
这些封装方式采用的是标准的
SOAP
方式
,
实质是满足
HTTP
协议的一些
SOAP
的报文消息。

6.

Web Server A
回应的也是
HTTP
协议的
SOAP

.
这样双方的请求
-
响应完全畅通。





上面我们看到的是应用原理图
,
进一步深入
,
可以发现如下的协议架构图
:






图四: 协议结构



上面我们已经花了很大的精力
,
介绍了发现
Service(UDDI), Service
提供的接口描述
(WSDL),
调用
Service(SOAP),
以及传输
(HTTP)
的的整个过程。因此不再做介绍。
这个技术的核心是
SOAP.


第三部分

:

实践

WebService

看到上面的图那么复杂

,
实质上
SOAP+HTTP
协议已经足够成熟,犯不着让我们通过
xml
生成带有
SOAP
变迁的
HTML
脚本
,
有很多工具可以帮住我们实现。事实上,开发起来还是相当简便的。

情况
A:
已知存在
Web Service,
客户端的开发可以通过以下步骤
:



1.


通过
UDDI
,查找到
Client
程序需要的
Web Service
的位置

2
.


通过
WebService
找到
WSDL

接口描述文件

3
.


通过工具,将步骤
2
得到的
WSDL
文件,生成一个
Client Stub,
这个实质上是代码
,
也就是打了一个桩。把这个
stub
的代码归并到
Client
程序中
.

4.


每次
Client
需要调用
WebService
的时候,直接调用步骤
4
生成的
Stub
接口,就实现了对
Server
端的调用。



情况
B: Server
端的开发,同样无需做解析
SOAP
这样的破事,框架会帮我们做好。大致步骤如下
:

1
.


实现
WebServer
需要提供的所有功能

2

.


利用

WSDL
文件
(
或者

IDL)
生成
Server Stub,
这些代码将负责接收从外界获得的请求,并将其转发给
Web Server

Service Implementation
(实现代码)。当
Service Implementation
的代码处理完,产生结果之后,又会把结果交给
Server Stub,
然后
Server Stub

可以产生一个
SOAP
的响应
. Server Stub + Server Implementation
合在一起
,
称为
Web Service Container,
这玩意儿就是让发送到
WebService

HTTP
请求,直接送到
Server Stub
上面的。







图五:实际应用中的调用
参考资料
:




1. http://www.axaptapedia.com/Webservice




2. http://gdp.globus.org/gt3-tutorial/multiplehtml/ch01s02.html




3.

http://blog.csdn.net/gnuhpc/archive/2009/12/22/5047951.aspx








延伸阅读:




1. http://topic.csdn.net/u/20070417/14/48a1d5ff-9917-4f70-8604-040630da60a3.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: