写点什么

SOA 专用消息模式

  • 2008-01-18
  • 本文字数:2051 字

    阅读完需:约 7 分钟

Duane Nickull ,OASIS SOA 参考模型技术委员会(SOA-RM)的主席和 Adobe 的高级技术传道者宣布他们刚刚发表了一份关于SOA 专用消息模式的最新白皮书。Duane 这么说道: > 该白皮书审视了SOA 专用消息模式。多数人仍然错误地认为SOA 局限在请求- 应答模式。随着大多数关注SOA 的标准认识到还有其他可选模式,如订阅- 推(subscribe-push)和探测- 匹配(probe-match),以上认识离实际情况差得很远。

Duane 论述了 Web 2.0 和 SOA 间的密切关系: > ……Web 2.0 不是作为一个静态架构来定义的。Web 2.0 通常可以被当作架构和设计模式的一个公共集,它们可以在多种环境中实现。公共模式的列表包括网络聚合应用(Mashup),协作 - 参与(Collaboration-Participation),软件即服务 (SaaS),语义标签(Semantic Tagging)(分众分类法 folksonomy),以及富用户体验(Rich User Experience)(即大家熟知的富互联网应用)模式等等。对于软件架构师来说主题还在增加中,比如信任你的客户,利用集体智慧。出于功能的考虑,多数 Web 2.0 架构模式都依赖于 SOA。当基于这些模式来设计 Web 2.0 应用的时候,架构师常常对移动数据有专门的需求。企业采用这些模式时需要专门考虑几个方面的能力:可伸缩性(scalability),灵活性 (flexibility)(在多个消息交换模式方面),以及将服务交付给多个不同消费者的能力。由于事件类型的多样性,架构师对数据交互的要求往往超越简单的请求 - 应答模式,并且会采用更加健壮的消息交换模式。结果导致了许多专用平台不断演化来满足这些需求。

幸运的是,该白皮书为那些不太熟悉 SOA 概念的读者包含了一份优异的概述。该白皮书也设法讨论了永恒的火焰战争(flame-war,译注:互联网上由非建设性的批评而引发的激励争吵)的另一个候选, ESB 能够在 SOA 基础设施中扮演的角色: > 公共服务总线实际上是一个虚拟环境,通过它服务可以在结构上被所有潜在的消费者使用。它一般被作为企业服务总线(ESB)引用,它有一个专门的子组件的集合,组件包括了命名和查找目录,注册 - 仓库(registry-repositories),服务提供者接口(提供连接能力和集成系统),以及标准的标准化集合和使所有连接的设备可以进行无缝通讯的协议。高级 ESB 厂商还提供了可以将服务聚集形成复杂的流程和工作流的工具。

正如你可能期望沉溺于 Duane(和 Adobe 的)经历,在讨论作者想得出的观点时,白皮书使用了一个非常好的 SOA 和 Web 2.0 参考架构。根据白皮书的说法,SOA 的核心公理是: > 服务自身应该从属于使用它们的高层系统。如果你部署的服务是一个自动化流程管理系统的一部分,服务自身应该不知道(或者不关心)它被谁使用。……使服务消费者不知道服务如何交付它们的功能。这样可以导致组件间干净地解耦,这是现代面向服务系统的另一个优雅的架构性特征。对服务内部工作机制的依赖是 SOA 的另一个反模式,应该被避免。

白皮书的前 10 页是关于 SOA 的一个优异概述,明显参杂了作者的实践经验。就冲着这一点,该白皮书就值得一读。白皮书的第 4 节讨论了可以用在基于 SOA 的应用中的不同的消息交换模式:- 简单的请求 - 应答(Simple request-response)。

  • 经由注册的请求 - 应答(Request-response via the registry):“架构内用到了一个可选的服务注册,可以帮助客户端自动配置它的服务客户端的某些方面。服务提供者将服务细节有关的变化推给消费者订阅的注册。当改变出现时,服务消费者会得到通知,它会去配置它的服务客户端与服务组件进行对话,以及配置它们之间的关系,配置使用语言和环境特有的特性。”
  • 订阅 - 推(Subscribe-push):“在这种模式中,一个或者多个客户端使用服务登记订阅以接收基于某些条件的消息。不考虑条件的话,模式的外观是一样的。”
  • 探测 - 匹配(probe-match):“……一个简单的客户端可以给单一结构上的几个端点多播或广播一条消息,促使这些端点基于某一的条件进行应答。”
  • RIA 模式(Patterns for RIA):“创建富互联网应用系统 (RIA) 需要超越传统请求 - 应答模式水平的数据管理。对于一个富客户, 更具表现力的体验通常需要更多数据密集型交互,这在管理客户端和服务层间的数据上提出了新的挑战。”
  • 数据分页(Data paging):“某些服务自动的完成大数据集的分页,这使开发者关注核心应用系统业务逻辑,而不是为基本的数据管理基础架构操心。”
  • 数据推(Data push):“某些服务提供数据推的能力,使数据自动的被推到客户端应用而不需要轮询(与之相反的是上面列出的‘订阅 - 推’模式)”

上述看上去似乎是一个完整的列表。是否还有消息交换模式(MEP)没有被覆盖到?是否某些消息交换模式不是必须的?

查看英文原文 Specialized Message Patterns for SOA - - - - - -

译者简介:王志雄,长期从事软件开发工作,项目集中在 EAM 和设备点检管理领域。2004 年转入 JAVA 领域,曾经在项目中使用过 Hibernate、Struts、Spring 等。关心软件技术和相关工具的动态,将其中成熟的技术和工具应用到实际的项目之中。关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。

2008-01-18 01:111278

评论

发布
暂无评论
发现更多内容

Python进阶(八)编写带参数decorator

No Silver Bullet

Python 10月月更 decorator

Android Coder浅谈队列同步器(AQS)

子不语Any

后端 java; 10月月更

【玩物立志-scratch少儿编程】骑上小摩托(动态背景+摄像头控制操作)

清风莫追

10月月更

用OptaPlanner进行车辆路线优化

积木编程

2022-10-09:我们给出了一个(轴对齐的)二维矩形列表 rectangles 。 对于 rectangle[i] = [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐

福大大架构师每日一题

算法 rust 福大大

数字化转型,目的是为了转型还是数字化?

雨果

数字化转型

【算法作业】实验五:神奇宝贝大军 & 到迷宫出口的最短路径

清风莫追

算法 10月月更

什么是DataOps?DataOps只是Data加上Ops吗

雨果

DevOps

AndroidStudio最新版(2021.1.21)配置so文件环境

中国好公民st

c++ Android 小菜鸟 10月月更

js异步编程面试题你能答上来几道

loveX001

JavaScript

前端面试指南之JS面试题总结

loveX001

JavaScript

Qt | 实现自定义验证码输入框控件

YOLO.

qt 10月月更 C++

跟着卷卷龙一起学Camera--BM3D

卷卷龙

ISP camera 10月月更

跟着卷卷龙一起学Camera--透镜组

卷卷龙

ISP camera 10月月更

Python基础(十三) | 机器学习sklearn库详解与应用

timerring

Python 机器学习 sklearn 10月月更

JS模块化—CJS&AMD&CMD&ES6-前端面试知识点查漏补缺

loveX001

JavaScript

跟着卷卷龙一起学Camera--压缩与存储

卷卷龙

ISP camera 10月月更

企业的数据资产怎么盘?统筹规划,摸清家底

雨果

数据资产管理

IDEA的Docker插件实战(Docker Image篇)

程序员欣宸

Docker IDEA 10月月更

基于云开发的大学社团招新小程序开发笔记

CC同学

假如面试官问你Babel的原理该怎么回答

loveX001

JavaScript

爬虫练习题(四)

张立梵

Python. 10月月更 爬虫案例

【算法作业】实验一:轮流报数与鸡兔同笼

清风莫追

基于微信小程序的老年大学招生报名小程序开发笔记

CC同学

Zebec地平线节点运营计划,Web3流支付赛道或多一条全新公链

股市老人

强化学习发现矩阵乘法工赋开发者社区 | DeepMind再登Nature封面推出AlphaTensor

工赋开发者社区

一起学习设计模式:备忘录模式——软件的“后悔药”

宇宙之一粟

设计模式 备忘录模式 10月月更

简述Docker改造传统应用的流程

穿过生命散发芬芳

Docker 10月月更

大数据ELK(二十):FileBeat是如何工作的

Lansonli

Filebeat 10月月更

Python进阶(九)Python陷阱:Nonetype

No Silver Bullet

Python 10月月更 Nonetype 实例定义方法

SOA专用消息模式_SOA_Mark Little_InfoQ精选文章