WS-Eventing、WS-Transfer Web服务标准

传输(Transfer)     WS-Transfer详细说明了对通过Web服务进行访问的数据实体进行管理所需的基本操作。要了解WS-Transfer需要介绍两个新术语:工厂(Factory)和资源(Resource)。工厂是能够从其XML表示形式创建资源的Web服务。WS-Transfer引入了用于创建、更新、检索和删除资源的操作。应当注意,对于资源状态维护,宿主服务器最多也只能做到尽力而为。当客户端获知服务器接受了创建或更新某一资源的请求时,它可以适当地预期资源目前在的确定位置,并具有确定了的表示形式,但这并不是一个保证——即使是在没有任何第三方的情况下。服务器可能会更改某一资源的表示形式,可能会彻底删除某一资源,也可能会恢复已经删除的某一资源。这种保证的缺乏与Web提供的松耦合模型一致。如果需要,服务可以提供非Web服务架构所必需的附加保证。

    WS-Transfer的创建、更新和删除操作扩展了WS-MetadataExchange中的只读操作功能。检索操作与WS-MetadataExchange中的Get操作完全相同。Create请求发送给工厂。然后,工厂创建被请求的资源并确定其初始表示形式。工厂被假定与所创建的资源不同。新资源被分配给一个在响应消息中返回的,由服务决定的端点引用。Put操作通过提供一种替换表示形式来更新资源。资源表示形式的一次性快照与WS-MetadataExchange中的Get操作一样,也可以通过WS-Transfer中的Get操作来检索。Delete操作成功后,资源将无法再通过端点引用来使用。这4个元数据管理操作构成了Web服务中状态管理的构建基础。

事件(Eventing)     在由需要相互通信的服务构成的系统中,可能会使用异步消息传递。在很多情况下,由一个服务生成的信息也是其他服务所需要的。由于伸缩性差,轮询往往不是获得这种信息的有效方法;通过网络发送的不必要的消息太多了。相反,该架构需要一种当事件发生时发出显式通知的机制。更重要的要求是源服务和用户服务的绑定必须在运行时动态完成。为此,Web服务架构提供了一个轻量级事件协议。

    WS-Eventing详细说明了实现下面4个实体交互的机制:订户、订阅管理器、事件源和事件接收。这使某一Web服务在作为一个订户时能够登记它对另一个Web服务(事件源)所提供的特定事件的兴趣。这种注册叫做订阅。WS-Eventing定义了某一服务可以提供的支持订阅创建和管理的操作。当事件源判定有事件发生时,它就会将此信息提供给订阅管理器。订阅管理器然后可以将该事件传送给所有匹配的订阅,这类似于传统的发布/订阅事件通知系统中的发布主题。Web服务架构提供了主题定义、组织和发现方式的全面灵活性;它为在很多不同的应用场合中可能会用到的订阅提供了一个通用的管理基础架构。也可以订阅出租的资源,但最终都必须收回。用于收回资源的主要机制是各个订阅的到期时间。查询订阅状态同样也有一种机制,帮助订户管理其若干订阅事项(包括续订、通知和取消订阅的请求)的附加操作规范中也有详细说明。当然,任何服务都可以随时自由地终止订阅,这与所有Web服务的自主原则一致。订阅终止消息可供事件源通知订户订阅终止过早。

    虽然基于事件的异步消息的一般模式很常见,但不同的应用通常都要求使用不同的事件传送机制。例如,在某些情况下简单异步消息可能是最佳选择,但如果事件接收能够通过轮询控制消息流和消息到达时间,则其他情况可能会更适用。当接收无法从源头到达目的地时,如接收有防火墙阻拦的情况下,轮询也是必要的。WS-Eventing中所引入的传送模式概念就是用来支持这些要求的。传送模式被用作一个扩展点,以便为订户、事件接收和事件源建立定制的传送机制提供一种手段。下述管理规范利用了这种机制。

    事件代理可用于聚合或重新分配来自不同来源的通知,代理还可以用作独立的订阅管理器。这两个方法都得到了WS-Eventing的支持。代理在系统中可以扮演若干个重要角色。主题可以按特定的应用类来组织使用。代理可以充当通知聚集器,用于整合来自多个来源的事件信息。它们也可以充当过滤器,这比用于其自己通知的过滤器所接收的消息要多。这种灵活性是部署健壮而可伸缩的通知系统所必需的。 WS-Eventing for WCF: http://www.codeproject.com/useritems/WSEventing.asp WS-Transfer Service for Workflow :http://www.codeproject.com/useritems/WSTransferWorkflow.asp

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码神联盟

分布式服务集群下实现session共享解决方案

随着互联网的日益壮大,网站的pv和uv成线性或者指数倍的增加.单服务器单数据库早已经不能满足实际需求。目前大多数大型网站的服务器都采用了分布式服务集群...

5498
来自专栏Python数据科学

解读爬虫中HTTP的秘密(基础篇)

在学习爬虫的过程中,相信大家对HTTP这个词已经不陌生了,它好像从未离开过我们的视线。被迫所需,我们每次都要使用开发者工具去查看请求头,响应头,以及头中的各个字...

901
来自专栏假装我会写代码

Composer 版本约束表达式的使用

1023
来自专栏java思维导图

架构师详解:Nginx 架构

原文链接:https://my.oschina.net/u/3770281/blog/1802493

1552
来自专栏北京马哥教育

Linux之任务计划

用过windows的同学应该都知道在控制面板中有一个“任务计划”选项,我们可以通过向导设置让计算机在某个时间点或者开机时运行某个脚本或者批处理等等,方便我们的...

2894
来自专栏幸山的专栏

精通yum配置以及问题解决

yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁...

1K0
来自专栏PHP实战技术

Redis实现缓存,你应该懂的哪些思路!

场景一:类似于微博,实现关注和被关注功能。 思路: 对每个用户使用两个集合类型键,用来存储关注别人的用户和被该用户关注的用户。当用户A关注用户B的时候,执行两步...

3817
来自专栏运维小白

12.24 php-fpm进程管理

12.24 php-fpm进程管理 [root@hf-01 ~]# cat /usr/local/php-fpm/etc/php-fpm.d/www.conf ...

25310
来自专栏零基础使用Django2.0.1打造在线教育网站

利用Flask搭建微电影视频网站(四):后台页面搭建

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

5991
来自专栏mini188

MongoDB安装与使用体验

1、获取并安装 具体的安装包可以到官方网站下载:http://www.mongodb.org/downloads 我看着教程就下载了linux版本吧,也不是很...

2476

扫码关注云+社区

领取腾讯云代金券