一 SOAP
SOAP最开始是用作RPC机制的,后来XML的出现使其应用非常广泛.它与HTTP一样是一种应用级协议,使用他可以在不同的应用程序之间进行数据交换.SOAP可以基于HTTP,也可以基于HTTP之外的其他传输协议之上来实现应用程序与应用程序之间的通信.
SOAP协议是一个信封,由消息头(可选)和消息体(必选)两部分组成.
1  消息头: 指定消息头所瞄准的端点类型属性,很少用到; 消息头是否必须被处理
    头信息中经常保存和消息语义不是直接相关的信息
2  消息体: 针对每个webmethod的调用,都有一个对应的SOAP消息.

如前面的Login对应的请求SOAP
  

 1 <?xml version="1.0" encoding="utf-8"?>
2 <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
3 <soap12:Header>
4 <MyServiceClassHeader xmlns="http://tempuri.org/">
5 <UsN>string</UsN>
6 <PaW>string</PaW>
7 </MyServiceClassHeader>
8 </soap12:Header>
9 <soap12:Body>
10 <Login xmlns="http://tempuri.org/" />
11 </soap12:Body>
12 </soap12:Envelope>

程序中我们定义了一个继承于SoapHeader的类,MyServiceClassHeader ,

他包含了两个属性UsN和PaW.分别用于携带用户名和密码.

对应的SOAP中包含了一个一个子元素MyServiceClassHeader

消息体中主要包含对web方法的调用信息,如<Login xmlns="http://tempuri.org/" />
Login为调用的方法,如果该方法有参数,则他还有子元素用于说明调用函数的参数以及参数值.

这个是响应SOAP消息.

1  <?xml version="1.0" encoding="utf-8"?>
2 <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
3 <soap12:Body>
4 <LoginResponse xmlns="http://tempuri.org/">
5 <LoginResult>string</LoginResult>
6 </LoginResponse>
7 </soap12:Body>
8 </soap12:Envelope>

元素的名字以对应请求的方法名+Response, 如果有返回值,则还有子元素方法名+Result.

二  WSDL
是一种用于描述web服务的语法规范.针对每个web服务来说,他是一个说明文档.
对web服务的位置,协议和接口进行详细的说明.由web服务的开发者提供.
WSDL文件包括5部分:types, Message,PortType,Binding和Service五部分.
1 Types定义: 类型定义,独立于语言.对应于SOAP消息中要传输的元素信息的定义
2  Message: 每个web方法对应两个message定义in和out.而message的定义包含了头和体
3  PortType: 每个web service对应一个PortType,该PortType中又包含了对其发布的方法, operation.  
4  Bindings: 指定每porttype中每个操作(类以及方法)的绑定信息,包含input和output的消息的格式.    
5  Service: 每个web service绑定的port信息

最新文章

  1. python之路 - 基础1
  2. arm,iptables: No chain/target/match by that name.
  3. @RequestMapping用法详解
  4. 【转】c# 调用windows API(user32.dll)
  5. HDU 1003 Max Sum 解题报告
  6. mysql最大连接数
  7. Minimum_Window_Substring两种方法求解
  8. 在win7下配置java编译环境变量
  9. DIV+CSS 网页布局之:三列布局
  10. loadrunner11的移动端性能测试之脚本录制
  11. 社交系统ThinkSNS+ 发布通知!
  12. SHA-256算法和区块链原理初探
  13. 第50节:Java的当中的泛型
  14. [BZOJ3011][Usaco2012 Dec]Running Away From the Barn
  15. lua语言三目运算符
  16. 深入理解CMA【转】
  17. kubernetes 环境搭建(ubuntu16.04)
  18. PAT甲级 1122. Hamiltonian Cycle (25)
  19. javascript获取网页各种高宽及位置总结
  20. awbeci网站之技术篇

热门文章

  1. root 授权
  2. MySQL 5.1参考手册
  3. VS输入法问题
  4. 小奇模拟赛9.13 by hzwer
  5. 转:Move all SQL Server system databases at one time
  6. CentOS系统配置redis
  7. 在CentOS 7中安装与配置Tomcat-8方法
  8. 我 Git 命令列表 (2)【转】
  9. 批处理 —— 每天生成一个以日期命名的文件(Win XP)
  10. VIM的配置文件(vimrc)在哪里?【Win7】