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-* 协议的更多相关文章

  1. 谈谈surging引擎的tcp、http、ws协议和如何容器化部署

    1.前言 分布式已经成为了当前最热门的话题,分布式框架也百花齐放,群雄逐鹿.从中心化服务治理框架,到去中心化分布式服务框架,再到分布式微服务引擎,这都是通过技术不断积累改进而形成的结果.esb,网关, ...

  2. WebSocket和long poll、ajax轮询的区别,ws协议测试

    WebSocket和long poll.ajax轮询的区别,ws协议测试 WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连 ...

  3. webSocket ws协议测试

    最近公司做了个直播的项目,需要用到Websocket进行通信,因而需要对socket最大连接数及稳定性进行测试.当初得到这一需求的时候,唯一想到的就是jmeter,从百度下载相应的socket依赖ja ...

  4. ws协议的配置

    server { listen 80; server_name 域名或IP; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 4 ...

  5. python的ws库功能,实时获取服务器ws协议返回的数据

    # -*- coding:utf-8 -*- ''' 模块下载,帮助地址:https://github.com/liris/websocket-client#readme 模块:websocket-c ...

  6. WebSocket 结合 Nginx 实现域名及 WSS 协议访问

    简单了解一下 WebSocket 现在,很多网站为了实现推送技术,所用的技术都是轮询.轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器 ...

  7. WebSocket协议:5分钟从入门到精通

    一.内容概览 WebSocket的出现,使得浏览器具备了实时双向通信的能力.本文由浅入深,介绍了WebSocket如何建立连接.交换数据的细节,以及数据帧的格式.此外,还简要介绍了针对WebSocke ...

  8. 刨根问底HTTP和WebSocket协议

    HTML5的新成员:WebSocket 上篇介绍了HTTP1.1协议的基本内容,这篇文章将继续分析WebSocket协议,然后对这两个进行简单的比较. WebSocket WebSocket协议还很年 ...

  9. 八问WebSocket协议:为你快速解答WebSocket热门疑问

    一.引言 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持.它使用方面.应用广泛,已经渗透到前后端开发的各种场景中. 对http一问一答 ...

  10. 阿里云负载不支持 WebSocket 协议与 WSS 和 Nginx 配置问题

    WebSocket 是 HTML5 下一种新的协议.它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的.它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTT ...

随机推荐

  1. Jquery简单的选项卡实现

    概述 原来对jQuery用的不是很多,主要就是表单验证这些部分,最近想要更深入的学习jQuery和JavaScript编码,就找来了一些视频进行学习,然后就做了这个简单的选项卡示例.视频学习地址见最后 ...

  2. tar 解压命令学习与总结

    tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个 ...

  3. NQueens, NQueens2 N皇后问题,递归回溯

    N皇后的规则:任意两个皇后不在同一行,不在同一列,不在同一斜线上. 算法分析:这种问题就用回溯法.深度搜索然后回溯.用一个数组记录每一行皇后的位置,下标代表行,值代表列.对行深度搜索. public ...

  4. Google推荐——Glide使用详解(图片加载框架)

    零.前言 本文所使用的Glide版本为3.7.0 一.简介 Glide,一个被google所推荐的图片加载库,作者是bumptech.这个库被广泛运用在google的开源项目中,包括2014年的goo ...

  5. Android源码下载和编译过程

    这是我在编译android源码时整理记录的编译步骤和错误解决方法,期间参考了一些网上的博客和教程. 第一步: 安装ubuntu12.04,分配一盘空间50G,2G内存.如果分配1G内存编译时将报错.( ...

  6. Redis 应用笔记

    模糊匹配 语法:KEYS pattern 说明:返回与指定模式相匹配的所用的keys. 该命令所支持的匹配模式如下: (1)?:用于匹配单个字符.例如,h?llo可以匹配hello.hallo和hxl ...

  7. Appium 自动化测试(5)-- Appium详细介绍:Appium 手机自动化测试_TesterHome公开版pdf

  8. 为Visual Studio添加快捷工具

    添加额外工具: Tools -> External Tools... 1. 添加Git Console Title: Git Console Command: C:\Program Files\ ...

  9. Superset 初探

    安装都是借鉴的别人的,已经剪裁下来.到自己文件夹里了. 下面介绍.如何启动superset ,BI 分析工具.这是我以前的强项.应该没问题. 问题: 安装好了之后,再打开localhost 就拒绝访问 ...

  10. 014对象——对象 __isset __unset __sleep __wakeup

    <?php /** * */ /*class lantian { public $name; public $age; private $money; public $c; function _ ...