11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

为解决方案架构师打造的实用 SOA

  • 2011-11-03
  • 本文字数:1235 字

    阅读完需:约 4 分钟

WSO2 出的新白皮书《为解决方案架构师打造的实用 SOA》将 SOA 定位成:

……一个常识性准则,不仅在今天,即便在信息时代出现伊始,都很有价值。

怀揣这一理念,白皮书试图:

……提供一套使用 SOA 的实用的方法,而且是容易掌握,立即可用的方法。并且它对产商是中立的,因为它谈的是通用概念和逻辑组件,它们几乎出现在每个产商的产品线中。

白皮书将重点放在解决方案架构师最关心的两个问题之上:

  • 在技术层,解决方案架构师需要为问题找到正确的工具。
  • 在数据层,他们需要知道如何降低或消除系统间的不必要的依赖关系。

就技术(工具)而言,白皮书指出,最常用的核心 SOA 技术组件有三个:

  • 服务容器
  • 服务代理
  • 流程协同器

解决方案架构师需要使用以上组件将现有及未来的功能组件组织起来,从而创建新的端到端业务解决方案。如何使用它们,应该遵循以下规则:

  • 服务容器是平台,新实现的服务作为解决方案的一部分,托管在该平台上。
  • 服务代理是工具,它可将现有企业应用封装成服务暴露出来。它提供现有功能的适配 / 转换 / 仲裁等功能。
  • 流程协同器用于实现业务流程,将服务的执行串接起来。

据白皮书,除以上三个组件之外,SOA 实施中常用的其他组件有:规则引擎、数据访问工具、注册 / 存储工具、管理和监控工具、治理工具、定制事件处理、展现支持等。

白皮书又进一步说明,仅仅选择了正确的技术组件还不足以保证 SOA 的成功:

我们还应该保证,通过合适的 SOA 技术所获得的成功不能被紧耦合的数据设计所抵消。

它还提出 4 条法则,以便实现低数据耦合的 SOA 设计。

  • 找出隐性依赖,使之变成显式的服务契约——这样,简单地确保持续符合服务契约,就能隐藏系统内的变化,从而保护系统的其他部分。
  • 消除无用的系统间依赖——应该找出并消除 (系统间) 无意义的依赖关系。
  • 保证领域数据和消息数据松耦合——二者之间使用数据映射,而不要使用数据生成或数据继承。
  • 标准化词汇要在逻辑域中,而不要在整个组织中实施——把整个组织的词汇标准化无异于“煮沸整个大海”。

白皮书还通过几个银行和保险业的示例来阐述上述概念的应用。

它的结尾说:

这些简单但强力的概念是有效的 SOA 设计的关键,现在你的技能库中已经有了这些概念工具……[它们] 可帮助你下一个项目的落地。所以,你会本能地设计出符合 SOA 原则的解决方案。

尽管很难驳斥白皮书的结尾,以及其中所给出原则的重要性,但是它却没有给现有的 SOA 文献带来任何新东西。在技术层面上,它基本上说,服务的执行既可以从服务容器中从头开发,也可以通过失配 / 转换 / 仲裁等模式封装遗留应用的方式得到,业务流程编排了这些服务。而这些技术解决方案是当代 ESB 的基础。在数据层面上,“典范”企业数据模型是 EAI 在 15 年前就提出了,而且得到很多 SOA 实施的吸纳。至于隐式和显式的服务接口以及消除不必要的依赖,这些概念直接来自现有服务设计模式之中,即服务的松耦合以及将服务实现隐藏在良定义接口的背后。

话说回来,提醒一下这些 SOA 实施的原则任何时候都有意义的。


查看英文原文: Practical SOA for Solution Architects

2011-11-03 11:033560
用户头像

发布了 184 篇内容, 共 71.6 次阅读, 收获喜欢 6 次。

关注

评论

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

Python列表和元组有什么区别

芥末拌个饭吧

后端 python 3.5+ 10月月更

以指标驱动业务决策,Kyligence 亮相 Gartner IT Symposium/Xpo™ 峰会

Kyligence

数据分析 指标中台 OLAP技术

Java中的super和this关键字详解

共饮一杯无

Java 10月月更 super和this关键字

校招面试真题 | 显式等待与隐式等待的区别?与强制等待的方式分别是什么,有什么区别?

测吧(北京)科技有限公司

测试 测试开发

你真的了解过Vue的组件化开发吗🔥

渔戈

前端 Vue3 10月月更

Vue的开发模式与webpack🔥

渔戈

前端 Vue3 10月月更

牛客刷题系列之进阶版(搜索旋转排序数组,链表内指定区间反转)

雪芙花

c c++ 10月月更

数通路由交换之网络基础(一)

Python-派大星

10月月更

输入到页面展现到底发生什么?

loveX001

JavaScript

前端经典面试题合集

loveX001

JavaScript

复杂场景数据处理的 OLTP 与 OLAP 融合实践

NebulaGraph

数据库 知识图谱

常见的网路设备和网络参考模型,以及常见的网络层协议及数据通信过程

Python-派大星

10月月更

MobPush Android SDK集成指南

MobTech袤博科技

android Android Studio sdk

【网络安全篇】--HTML基础(预计学习时间:30分钟)从此以后不迷糊~

贤鱼很忙

html 前端 10月月更

openGemini内核源码正式对外开源

华为云开发者联盟

数据库 物联网 华为云 企业号十月 PK 榜

【kafka运维】Topic的生产和消费运维脚本

石臻臻的杂货铺

kafka kafka运维 10月月更

Go语言入门—06切片

良猿

Go golang 后端 10月月更

计算机网络 ,什么是Internet?什么是协议?TCP/UDP的区别以及优缺点 分组交换与电路交换的区别以及优缺点

Python-派大星

10月月更

2022年第六届数据质量管理国际峰会重磅开启

数据质量管理智库

数据 数据隐私 数据安全 峰会 数据质量

全彩LED显示屏近年来在中国的发展趋势

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

牛客刷题系列之初阶版(自守数,返回小于 N 的质数个数,第一个只出现一次的字符)

雪芙花

c c++ 10月月更

《Go语言学习路线图》让你少踩坑,高效学,Let’s Go!

王中阳Go

golang 学习方法 技术专题合集 10月月更 “程”风破浪的开发者

7 步保障 Kubernetes 集群安全

SEAL软件供应链安全

Kubernetes 云原生 Kubernetes 集群 企业号十月 PK 榜 审计日志

C++精通之路:红黑树

雪芙花

c c++ 10月月更

“程”风破浪的开发者|模拟微信第一篇,nodejs搭建一套高性能分布式的在线文件服务

ike潮

学习方法 分布式 nodejs 文件服务器 “程”风破浪的开发者

软件测试 | 测试开发工程师必读经典好书清单

测试人

软件测试 测试开发 测试工程师 测试书籍

三次握手与四次挥的问题,怎么回答?

loveX001

JavaScript

你真的了解v-model吗🔥

渔戈

前端 Vue3 10月月更

为解决方案架构师打造的实用SOA_SOA_Boris Lublinsky_InfoQ精选文章