写点什么

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

评论

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

12道Android高级面试题:android项目开发实战入门百度网盘

android 程序员 移动开发

原来SqlSession只是个甩手掌柜,Redis有几种数据类型

Java 程序员 后端

史上最全的Java面试题集锦,高级Java工程师面试技术

Java 程序员 后端

12道Android高级面试题:android开发视频百度网盘

android 程序员 移动开发

2019-2021历年华为跳动Android面试真题解析,面经解析

android 程序员 移动开发

厉害了!java使用教程视频,我的Java春季历程

Java 程序员 后端

100%好评,扔物线学堂

android 程序员 移动开发

1307页阿里Android面试全套真题解析在互联网火了,附赠复习资料

android 移动开发

10天用Flutter撸了个高仿携程App,2021年Android面试心得

android 程序员 移动开发

2021Android大厂面试真题,面试必知必会

android 程序员 移动开发

厉害了,java入门电子书百度网盘下载,Java中高级面试

Java 程序员 后端

DevOps 时代的高效测试之路

CODING DevOps

DevOps 团队 自动化测试 持续交付

QCon复盘之《58 集团反爬系统建设之路》

IT蜗壳-Tango

Qcon 10月月更

15分钟的字节跳动视频面试,34岁Android程序员裸辞

android 程序员 移动开发

卧薪尝胆70天内推入职阿里,2021Java春招

Java 程序员 后端

厉害了!尚硅谷mysql中employees表,腾讯T2手把手教你

Java 程序员 后端

人力资源管理系统和oa的区别?

优秀

低代码

1-3年Android开发工程师面试经验分享,真的太香了

android 程序员 移动开发

1个月学会Android开发!动脑学院vip

android 程序员 移动开发

2020-2021华为Android面试真题,凭借这份Android面试题集

android 程序员 移动开发

只需一篇文章吃透Java多线程技术,那些BAT大厂的Java面试官到底在想些什么

Java 程序员 后端

我有一台服务器,能干啥?

程序员鱼皮

程序员 IT 代码 计算机 java

【免费报名】与阿里云一同探索视频云的新技术与新场景

阿里云CloudImagine

阿里云 音视频 视频编码 视频编解码 视频云

使用 Spring Boot 进行单元测试

码界行者

Java Spring Boot Unit Test

大数据Flink作业

Clarke

只需一篇文章吃透Java多线程技术,内容非常全面

Java 程序员 后端

河北联通全光智慧专线,构筑更智运营新体验

10年阿里开发架构师经验分享:享学课堂架构师vip百度云

android 程序员 移动开发

声纹识别帮你守住钱袋子,聊一聊证券行业里的人工智能

Zilliz

AI 向量检索 Milvus 向量

反向代理、负载均衡实战,【深度思考

Java 程序员 后端

只用了几百行代码写的百度搜索引擎,程序员Javaweb源码

Java 程序员 后端

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