WS-* 协议
Web服务作为实现SOA中服务的最主要手段。跟Web Service相关的标准,它们大多以“WS-”作为名字的前缀,所以统称WS-*。
Web服务最基本的协议包括UDDI,WSDL和SOAP,通过它们,可以提供直接而又简单的Web Service支持。
但是基本协议无法保证企业计算需要的安全性和可靠性,所以我们需要增加这方面的协议,比如WS-Security,WS-Reliability和WS-ReliableMessaging;对于复杂的业务场景,需要WS-BPEL和WS-CDL这样的语言来将多个服务编排成为业务流程;管理服务的协议如WS-Manageability,WSDM等。跟Web服务相关的标准,还在快速发展当中。目前在SOA产品和实践中,除了基本协议外,比较重要的还包括BPEL,WS-Security,WS-Policy和SCA/SDO。

其他Microsoft分布式技术可以使用而WCF不能使用的WS-*规范并不多。WCF理解WS-*规范的架构,这些规范可以定义处理安全性、可靠性和事务的方式。为了获得这个功能,以前的许多开发人员转而使用WSE。图32-1显示了WCF依赖的体系结构。
|
| (点击查看大图)图 32-1 |
如果开发人员愿意,WCF就可以使用这些规范。消息传输层定义的消息依赖SOAP(发送为明文或以二进制格式发送)。其他高级的WS-*规范主要使用SOAP标题,因此可以自包含消息,不依赖传输协议来提供安全性、可靠性或其他超出简单传输消息之外的功能。消息传输优化机制(Message Transmission Optimization Mechanism,MTOM)是替代直接Internet消息封装(Direct Internet Message Encapsulation,DIME)的一种新功能,它是将二进制对象和SOAP消息一起传输的方式。二进制对象的一个例子是要通过WCF服务提供的JPEG图像。
"元数据"部分允许定义接口。在建立要包含在应用程序中的服务时,应确定服务需要的参数,以使用户过程工作。另外,在给服务传送了参数后,还需要知道服务会返回什么数据,以便在自己的应用程序中正确使用传送回来的信息。没有这些信息,就很难使用服务。消息的表示有标准的方式,例如用SOAP等技术表示,获得要使用的服务的描述也有业界标准方式。
WCF架构使用Web服务描述语言(Web Services Description Language,WSDL)描述服务。WSDL使用XML描述服务,定义该服务能理解的消息格式。WCF在元数据层中提供的其他功能还有WS-Policy。这个规范可以让用户理解使用服务需要什么条件。
WCF的"安全性"部分可以使用WS-Security。在WS-Security推出之前,Web服务缺乏安全模型,许多公司都不敢大量使用Web服务,也不能使用面向服务的体系结构。Microsoft、IBM和VeriSign开发出了WS-Security后,解决了保护消息的主要问题:证书的交换、消息的完整性和消息的机密性。
WS-Security允许两个实体在消息内部(在消息的SOAP标题中)交换他们的安全证书。WS-Security的主要优点是,它不需要使用特定类型的证书集,而允许使用任意类型的证书。另外,由于可以通过多个路由器发送消息,消息在到达最终的目的地之前,还可以从一处多次发送到另一处,因此必须确保消息在传输过程中不被篡改。消息从一个SOAP路由器传送到另一个SOAP路由器时,这些SOAP节点可以在消息中增删内容。如果SOAP节点落入有恶意的团体手中,就会危及消息的完整性。此时WS-Security就可以大显身手了。还可以用WS-Security加密全部或部分SOAP消息。消息在虚拟世界中传输时,可能会被不应查看其内容的团体截获。因此,最好加密消息的内容。当消息到达指定的接收器时,应用程序可以使用密钥解密消息,以便读取其内容。
WS-SecureConversation可以建立一个连接,让实体交换多个消息,并维护他们已建立的安全措施。WS-Trust与WS-Security一起使用,可以发布安全标记,实体可以通过它交换这些标记。这个规范还可以在两个实体之间建立信任关系。
WS-ReliableMessaging可以在消息之间进行端对端的可靠通信,确保消息的传输。
"事务处理"部分允许使用WS-Coordination和WS-AtomicTransaction。WS- Coordination用于描述多个服务之间的关系。公司开始在其企业中开发大量服务时,会发现许多已开发出来的服务彼此有关系,此时就可以使用WS-Coordination。这个规范由其他规范扩展,进一步定义了特定的协作类型。
WS-AtomicTransaction使用WS-Coordination和WS-Security,定义服务的事务处理过程。原子事务处理是创建一个事务处理的过程,该过程要么全部完成,要么什么也不做。这些事务的生存期比较短,所以在使用它们时,要锁定数据资源,占用物理资源,例如连接、线程和内存。
这个讨论的重点是,全面了解可以使用的WS-*规范。使用WCF的优势是,不必知道有这些规范,通过编程或声明性编程方式就可以使用这些规范提供的功能。
WS-* 协议的更多相关文章
- 谈谈surging引擎的tcp、http、ws协议和如何容器化部署
1.前言 分布式已经成为了当前最热门的话题,分布式框架也百花齐放,群雄逐鹿.从中心化服务治理框架,到去中心化分布式服务框架,再到分布式微服务引擎,这都是通过技术不断积累改进而形成的结果.esb,网关, ...
- WebSocket和long poll、ajax轮询的区别,ws协议测试
WebSocket和long poll.ajax轮询的区别,ws协议测试 WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连 ...
- webSocket ws协议测试
最近公司做了个直播的项目,需要用到Websocket进行通信,因而需要对socket最大连接数及稳定性进行测试.当初得到这一需求的时候,唯一想到的就是jmeter,从百度下载相应的socket依赖ja ...
- ws协议的配置
server { listen 80; server_name 域名或IP; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 4 ...
- python的ws库功能,实时获取服务器ws协议返回的数据
# -*- coding:utf-8 -*- ''' 模块下载,帮助地址:https://github.com/liris/websocket-client#readme 模块:websocket-c ...
- WebSocket 结合 Nginx 实现域名及 WSS 协议访问
简单了解一下 WebSocket 现在,很多网站为了实现推送技术,所用的技术都是轮询.轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器 ...
- WebSocket协议:5分钟从入门到精通
一.内容概览 WebSocket的出现,使得浏览器具备了实时双向通信的能力.本文由浅入深,介绍了WebSocket如何建立连接.交换数据的细节,以及数据帧的格式.此外,还简要介绍了针对WebSocke ...
- 刨根问底HTTP和WebSocket协议
HTML5的新成员:WebSocket 上篇介绍了HTTP1.1协议的基本内容,这篇文章将继续分析WebSocket协议,然后对这两个进行简单的比较. WebSocket WebSocket协议还很年 ...
- 八问WebSocket协议:为你快速解答WebSocket热门疑问
一.引言 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持.它使用方面.应用广泛,已经渗透到前后端开发的各种场景中. 对http一问一答 ...
- 阿里云负载不支持 WebSocket 协议与 WSS 和 Nginx 配置问题
WebSocket 是 HTML5 下一种新的协议.它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的.它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTT ...
随机推荐
- Git常用分支操作
新建分支 git branch branchname 切换到分支dev git checkout branchname 查看所有的分支信息 git branch -a 查看远程分支信息 git bra ...
- 编译lineageos
lineageos 2 -- 编译rom包 fu*k小米,手机老是1年左右出现充不进去电.前段时间我的红米note4x突然充不进去电了,只好新买了个手机(买手机先看lineageos支持列表 ^_^) ...
- Google maps api demo 2
demo /** * @fileoverview Sample showing capturing a KML file click * and displaying the contents in ...
- springmvc跨域
//mvc默认是text/plain;charset=ISO-8859-1@RequestMapping(value = "/xxx", produces = "appl ...
- Sub-process /usr/bin/dpkg returned an error code (1) 如何解决
cd /var/lib/dpkg sudo mv info info.bak sudo mkdir info sudo dpkg --configure -a sudo apt-get install ...
- scjp考试准备 - 8 - final关键字
题目,如下代码的执行结果: import java.util.ArrayList; class Pizza{ ArrayList toppings; public final void addTopp ...
- Tkinter Button按钮组件如何调用一个可以传入参数的函数
这里我们要使用python的lambda函数,lambda是创建一个匿名函数,冒号前十传入参数,后面是一个处理传入参数的单行表达式. 调用lambda函数返回表达式的结果. 首先让我们创建一个函数fu ...
- CC攻击工具list
从论文里抠出来的工具列表如下,后面有黑产的工具以及网络上摘录的工具: 分类:(1)有僵尸网络(是否代理服务器)&没有的==>(2)单一url&混合url(多线程,压测为主,dem ...
- tflearn kears GAN官方demo代码——本质上GAN是先训练判别模型让你能够识别噪声,然后生成模型基于噪声生成数据,目标是让判别模型出错。GAN的过程就是训练这个生成模型参数!!!
GAN:通过 将 样本 特征 化 以后, 告诉 模型 哪些 样本 是 黑 哪些 是 白, 模型 通过 训练 后, 理解 了 黑白 样本 的 区别, 再输入 测试 样本 时, 模型 就可以 根据 以往 ...
- Python爬虫--抓取糗事百科段子
今天使用python爬虫实现了自动抓取糗事百科的段子,因为糗事百科不需要登录,抓取比较简单.程序每按一次回车输出一条段子,代码参考了 http://cuiqingcai.com/990.html 但该 ...