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. webstorm打开带有node_modules文件夹的工程时很卡

    ctrl+alt+s打开settings 在webstorm中配置这个就可以不加载出来node_modules使页面加载快

  2. Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解 .

    http://blog.csdn.net/lucherr/article/details/8498400 看资料的时候经常看到各种VGA,全都混了,无奈,找了些资料总结了下,分享给大家: 这些术语都是 ...

  3. java-登陆界面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. null与""的区别

    两者的区别与 “数字0和没有不是同一种概念”是一个道理.null是空对象,""是空字符串null可以赋值给任何对象,而""就不行了,只能赋值给字符串对象如:St ...

  5. window.location与window.open()的区别

    "top.location.href"是最外层的页面跳转"window.location.href"."location.href"是本页面 ...

  6. vs2013出现错误提示error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s

    这个问题是vs准备弃用strcpy带来的,因为觉得他不太安全 可以尝试在main函数前面加上#pragma warning(disable:4996)即可解决这个问题

  7. SpringMVC札集(01)——SpringMVC入门完整详细示例(上)

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  8. android安装apk

     * 安装apk */ private void installApk() { // 获取当前sdcard存储路径 File apkfile = new File(Environment.getE ...

  9. CentOS给网站配置Https证书

    1.在腾讯云申请域名的证书 2.配置文件 安装相应模块: yum install mod_ssl openssl 编辑配置文件: cd /etc/httpd/conf.d vi jerryqi.con ...

  10. 卷积神经网络实战-----0001(移植卷积神经网络c++ to python or java)

    1. https://github.com/174high/simple_cnn  自己fork的 2. https://github.com/can1357/simple_cnn   最初始的 3. ...