学习了一段时间的网络协议,相信大家已经对一些常规的网络协议有所了解了。那么这里我们主要介绍一下SOAP协议的内容。SOAP协议:简单对象访问协议(SOAP:Simple Object Access Protocol),简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息. SOAP协议可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME).它还支持从消息系统到远程过程调用(RPC)等大量的应用程序.
SOAP 包括三个部分:
SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的.
SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例.
SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定.(RPC:英文原义:Remote Procedure Call Protocol
中文释义:(RFC-1831)远程过程调用协议)
SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式.所有的 SOAP 消息都使用 XML 编码.一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档.把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点.在 HTTP 上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义.在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答.然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定.
SOAP也可以绑定到TCP和UDP协议上.
协议结构
SOAP协议消息格式:
SOAP 标头
- <SOAP-ENV: Envelope
- Attributes>
- <SOAP-ENV:Body
- Attributes
- </SOAP-ENV:Body>
- </SOAP-ENV:Envelope>
目前主要在web服务中运用.
SOAP Action WEB编码中常见,协议开始起始意思,常见于编码启始句.
语法规则
这里是一些重要的语法规则:
SOAP 消息必须用 XML 来编码
SOAP 消息必须使用 SOAP Envelope 命名空间
SOAP 消息必须使用 SOAP Encoding 命名空间
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 处理指令
SOAP 消息的基本结构
- <?xml version="1.0"?>
- <soap:Envelope
- xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
- soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
- <soap:Header>
- ...
- ...
- </soap:Header>
- <soap:Body>
- ...
- ...
- <soap:Fault>
- ...
- ...
- </soap:Fault>
- </soap:Body>
- </soap:Envelope>
现在采用webservice+soap的比较火,原因:
WebService可用基于XML的SOAP来表示数据和调用请求,并且通过HTTP协议来传输这些XML格式的数据,因为此时的调用请求和回应消息是可以穿过防火墙的,一般来说都只有80端口是开放的.具资料显示在WebService之前实现的一些所谓的分布式组件技术是采用二进制来表示的,还需要通过特殊的端口来通信.明显当遇到防火墙时就会失败.webservice***优点就是实现异构平台间的互通.这也是使用WebService的主要原因之一.这样任何两个应用程序,只要他们能读写XML,就能相互通信.
1.webservice部署比较方便(它直接通过网络引用,只要服务器端抛出的接口不变,客户端是没法知道的,因为所以的内部计算都是在服务器运行的)DLL,部署,更新需要每个应用了这个DLL的应用程序都作相应的引用更新...而如果用了Ws,则不用,因为它通过网络部署,通过网络引用,基本上,ws发生了变化,客户端没有影响,甚至不知道有这样的变化...
2.web service的编写,跟普通的class差不多.
3.当然还有一个好处:平台无关.C#,Java写的ws可以相互调用.
4.做分布式系统.比如 说把数据访问部分写成ws,发布在另外一台server上... ...
Webservice与WCF的区别:
webservice 集成了 WEBservice,.NET Remoting,enterprise Service,WSE,MSMQ等技术的整合。WCF具有WEBservice的优点和弥补了他的缺点.但是为了加强WEB service 的安全性的规范性,微软使用WCF来绑定一些规范,让VS生成代码更加迅速准确.比如 <Head>的协议节点的生成,加密,(这块内容还有很多,但是我只接触到这两点),在VS2008中,WCF就是通过接口来实现服务的.和VS2005下实现WEB SerVCie有点不一样.微软有意将WCF做称一个强大的解决方案整合.特别是它的强大的配置性. .