写点什么

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:11991

评论

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

算法突击营毕业总结

韩儿

Python OpenCV 图像处理之直方图的应用,取经之旅第 26 天

梦想橡皮擦

Python OpenCV 4月日更

区块链特色农产品溯源平台解决方案

13828808769

溯源 #区块链#

小心,别被eureka坑了

好好学习,天天向上

Java spring 信息安全 springboot Eureka

计算机原理学习笔记 Day5

穿过生命散发芬芳

计算机原理 4月日更

ES9的新特性:异步遍历Async iteration

程序那些事

JavaScript ecmascript 程序那些事 es9

Linux pwd 命令

一个大红包

Linux linux命令 4月日更

OCR 技术如何促进 PDF 文档的数字化转型

Geek_b33b8e

数字化转型 PDF OCR 文件操作

被应用商店下架的应用,该如何下载?

彭宏豪95

效率 App 苹果 4月日更

智慧公安重点人员管控系统搭建,实现重点人员动态管控

13828808769

智慧公安

Spring Boot 启动时,让方法自动执行的 4 种方法!

Java小咖秀

springboot 启动方式

工厂模式还不懂?看这里!

IT皮皮蟹

Java 设计模式

第一个 Go 程序

escray

学习 极客时间 Go 语言 4月日更 Go100

他人方寸间,山海几千重

清秋

随笔 4月日更 1 周年盛典 我和写作平台的故事

分页场景慢?MySQL迷惑行为解读~

Java架构师迁哥

初识GaussDB(for Cassandra)

华为云开发者联盟

数据安全 GaussDB 华为云数据库 GaussDB(for Cassandra) 分布式云数据库

修电脑、脱发、格子衫?程序员拒绝标签化,这才是真正的他们

华为云开发者联盟

程序员 女朋友 标签 格子衫 单身狗

超详细 PowerDesigner 入门教学(项目数据库设计标准)

若尘

数据库 数据库设计

树莓派4B搭建Pytorch环境

IT蜗壳-Tango

IT蜗壳教学 4月日更

喜欢回忆过去的人,没有未来

小天同学

成长 自我思考 个人感悟 突破瓶颈 4月日更

一加9pro联名哈苏了!这可能是你能买的平替哈苏

Geek_4a453c

C++系列:Visual Studio(VS)2019登录不上?

Bob

c++ 踩坑经历 编程经验 4月日更

中寰卫星导航卜钢采访:IT年轻人怎么工作、学习和生活(采访提纲)

老猿Python

学习 采访 IT年轻人

数据库存取策略对比

小舰

4月日更

【LeetCode】打家劫舍 II Java题解

Albert

算法 LeetCode 4月日更

算法思考:红包金额生成

程序员架构进阶

Java 28天写作 算法解析 4月日更 微信红包

Github Star 11.5K项目再发版:AAAI 2021 顶会论文开源,80+多语言模型全新升级

百度大脑

飞桨

Zabbix Linux 下源码安装

耳东@Erdong

zabbix 4月日更

VueRouter源码解读:三大核心模块构成

梁龙先森

源码分析 大前端 vue-router

GaussDB(for openGauss)让数据“存得下、算得快、算得准”

华为云开发者联盟

GaussDB(for openGauss) 华为云数据库 数据分布方式 计算下推 数据强一致

SQL 性能优化的几条建议

U2647

sql 4月日更

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