WebService的几种概念:html
以HTTP协议为基础,经过XML进行客户端和服务器端通讯的框架/组件java
两个关键点:git
1. 服务端提供的功能, 经过xml描述安全
2. 第一步中的描述的功能, 嵌入到HTTP协议中, 使得能经过HTTP协议进行通讯【所谓的SOAP】.服务器
用图能够以下表示:网络
图一: WebService的简要表示架构
采用这两个技术的目的主要是:框架
1. 跨平台, 支持HTTP协议的主机和服务器, 都可以创建通讯联系, 而且大部分的主机和服务器(99.999%以上)将支持HTTP协议。通常而言,不一样目标主机之间的通讯,须要经过防火墙,打开某个端口, HTTP协议的优点在于,防火墙通常不会封掉80端口, 这样就能够方便,安全的通讯。ide
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.
看到上面的图那么复杂, 实质上SOAP+HTTP协议已经足够成熟,犯不着让咱们经过xml生成带有SOAP变迁的HTML脚本, 有不少工具能够帮住咱们实现。事实上,开发起来仍是至关简便的。
状况A: 已知存在Web Service, 客户端的开发能够经过如下步骤:
状况B: Server端的开发,一样无需作解析SOAP这样的破事,框架会帮咱们作好。大体步骤以下:
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上面的。
图五:实际应用中的调用
参考资料: