写点什么

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

评论

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

Coffee学架构 004 外包学生管理系统的完整架构设计

咖啡

架构设计

云随想三 2B软件的机遇与挑战?

FLASH

云时代 2B软件

Prometheus 2.23.0 新特性

耳东@Erdong

Prometheus 9月日更

学生管理系统架构设计文档

紫云

SpringBoot之配置文件,Java开发教程入门

Java 程序员 后端

SpringBoot-自动配置-源码解析,做了5年Java

Java 程序员 后端

PHPStorm 的使用技巧汇总

baiyutang

9月日更

前沿·探索·想象力,今年的云栖大会有啥不一样?

阿里巴巴云原生

阿里巴巴 云原生

高峰应对记录

编号94530

Spring Boot 2 性能压测 测试发开 高峰应对

JavaScript中 6 个reduce()实例

devpoint

reduce 9月日更

SpringBoot2---指标监控,Java架构师之路

Java 程序员 后端

springboot文件上传下载实战 ——文件上传,Java入门

Java 程序员 后端

20. 从工业革命到文艺复兴

Databri_AI

人工智能

架构实战营模块三

WolvesLeader

「架构实战营」

☕️【Java专题系列】「回顾 RateLimiter」针对于限流器的入门到精通(针对于源码分析介绍)

码界西柚

ratelimiter Guava 9月日更 限流器

springboot文件上传下载实战 —— 登录功能,「高并发秒杀

Java 程序员 后端

【LeetCode】最长递增子序列Java题解

Albert

算法 LeetCode 9月日更

这些 JS 中强大的操作符,总有几个你没听说过

前端下午茶

JavaScript 代码设计 代码技巧 基础知识

架构师训练营 2 期模块三作业

kazeMace

架构实战营

MySQL 从入门到实践,万字详解!

前端下午茶

MySQL 数据库 大前端

项目管理实践篇(二):技术型PM炼成记

后台技术汇

项目管理 管理 引航计划 内容合集 管理领域

SpringBoot整合Redis,怎么实现发布-订阅?,一个回答引发热烈讨论

Java 程序员 后端

架构实战营第八模块作业

子豪sirius

架构实战营

吴恩达Andrew Ng CNN卷积神经网络 论文等资料汇总 YOLOv5 新版本—改进与评估 易筋 ARTS 打卡 Week 65

John(易筋)

ARTS 打卡计划

HarmonyOS 鸿蒙登录页搭建及 Text 文本详解

阿策小和尚

HarmonyOS Android 小菜鸟 引航计划 9月日更

谈 C++17 里的 Observer 模式 - 3

hedzr

c++ 算法 设计模式 观察者模式 Design Patterns

Linux常用命令

在即

9月日更

springboot文件上传下载实战 ——文件上传(1),想搞定大厂面试官

Java 程序员 后端

架构实战营 - 模块八作业

思梦乐

神经网络与点

Nydia

支付宝的沙箱环境配置和使用

Brave

支付宝 支付 9月日更

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