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. HUE中oozie执行shell

    Oozie执行Shell,传入参数1. 新建一个workflow 2. 拖入一个shell 3. shell脚本如下 #!/bin/sh sqoop import --connect jdbc:mys ...

  2. JavaScript tips —— target与currentTarget的区别

    定义 以下是红宝书的描述 属性/方法 类型 读/写 说明 currentTarget Element 只读 其事件处理程序当前正在处理事件的那个元素 target Element 只读 事件的目标 M ...

  3. [日常训练]AekdyCoin的跳棋

    Description $AekdyCoin$正在玩一个游戏,该游戏要用到两副牌和一个数轴和一个棋子. 刚开始的时候棋子位于数轴的$0$位置.然后$AekdyCoin$交替的从两副牌中抽取一张牌,然后 ...

  4. python递归列出目录及其子目录下所有文件

    python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 e ...

  5. css类名大全以及其他关键词

    标签 abbr 缩写的标记 token-based-auth-backend  后端 token-based-auth-frontend  前端 signin 登陆  Sign in / Sign u ...

  6. 智课雅思词汇---二十三、名词性后缀mony

    智课雅思词汇---二十三.名词性后缀mony 一.总结 一句话总结:Latin: action, result of an action or condition; a suffix that for ...

  7. 新东方雅思词汇---7.3、dioxide

    新东方雅思词汇---7.3.dioxide 一.总结 一句话总结: di(双)+oxide 英 [daɪ'ɒksaɪd]  美 [daɪ'ɑksaɪd]  n. 二氧化物 词组短语 carbon di ...

  8. MFC,ATL,CLR简介

    MFC.ATL和CLR是VC2005内置的3大库,涵盖了windows的各种开发方法和开发应用.当然关于 C++ 开发的库不止这3个,不过这3个是微软推荐.从编程所处层次而言,WIN32为最底层,其次 ...

  9. python基础8之类的实例化过程剖析

    一.概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性. 二.类的语法 2.1 语法 class dog(obje ...

  10. YYMMDD转YYYY-MM-DD

    date.replace(/(\d{4})(\d{2})(\d{2})/g,'$1-$2-$3');