您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

WebService的简介, 原理, 使用

2025/7/18 5:06:15发布19次查看
第一部分 : 直观概述
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 上面的。
图五:实际应用中的调用
更多webservice的简介, 原理, 使用。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product