写点什么

对 SOA 实施者的实践忠告

  • 2010-01-04
  • 本文字数:1490 字

    阅读完需:约 5 分钟

在"对目前从事 SOA 的组织的几点建议"这篇博客中,Ganesh Prasad 基于他多年的经验,对于如何开展一个大型的 SOA 项目作出了建议:

…不要因为这一方式不是那么宏大而感到担心。复杂性让新手感受深刻,但结果才是最终能让所有人留下印象。

Ganesh 的方法包括了以下几个要点:

  • 眼观全局。SOA 不是关于集成或者是引入一种新技术来简化现有系统的连接。而是关于: > …精简企业的部件并且使它们易于理解和连接…所以始终应当谨记简洁性,并且不要把它与权宜之计搞混了,那是指的阻力最少的道路和。而精简可能需要付出努力。
  • 理解数据。服务互操作性需要用于交互的“语义”数据模型。Ganesh 指出所谓规范的数据模型通常层次较高且对于实践应用来说过于抽象。作为代替,他建议将企业数据划分为几个逻辑域并为各个域定义字典。 > 所有暴露它们的逻辑域的服务都应该当使用这些定义,而来自其它域的服务消费者有责任理解这些定义。由跨这些域的服务组合起来的流程应当在类似的数据元素之间执行它们自己的映射。这不象听起来这么恐怖,因为只有一个域所管理的数据元素只有一部分子集会通过服务接口暴露出去…不要尝试 [构建] 一个单一的规范数据模型。那只是徒劳之举,根本不要启动。
  • 选择正确的中间件。在 Ganesh 看来,大部分情况下,HTTP 是 SOA 实现最合适的中间件。他建议,除了必须需要的情况下,避免使用消息队列并指出基于 HTTP 的数据库备份的通信模型通常能提供更简单的解决方案。 > HTTP 是一个十分通用的协议,可用作你的 SOA 项目的逻辑基础设施的元素。ESB,服务目录以及其它的“治理”组件通常只在管理它们自身所引入的复杂性时才需要。用简单的 web 服务器群和数据库群所能做到的会让你惊叹,同时还能始终保持简单和明了。
  • 选择正确的服务实现手段。Ganesh 认为基于 SOAP 的 web 服务很大程度上是“供应商提供”的宣传,并推荐尽量予以避免。他建议使用 REST 来代替: > REST 实际上是实现 SOA 的有效方式,它通常可以以极低的成本和复杂性来交付解决方案。采用 REST 的困难所在是找到用这种方式思考的优秀人员。
  • 选择正确的数据合约定义。 谈到领域模型的正式定义时,Ganesh 建议道“标准”的 XML 方式是重量级的比较笨拙。相反,他建议好好看一下 JSON 模式提案> 在许多高级语言比如 Java 当中,已经有现成的 JSON 模式的库可用。应该能够可以以极低的复杂性,如 XML 一样严格的定义数据合约…避免 XML 的那些繁文缛节,由 JSON 开始,并且融合日趋成熟的 JSON 模式。你会发现这些与 REST 结合起来会工作得非常棒。
    解决 SOA 简洁性的悖论。 尽管 SOA 背后的主要驱动因素是精简企业架构,按照 Ganesh 的说法,典型的 SOA 实现的现实是,因使用重量级方案而导致集成了复杂性,又通过引入工具来管理这一复杂性。 > 当然,如果你有官僚的倾向,你可以沐浴在高预算与大团队的声望中,并且可以基于你所交付的服务和流程和数量发表胜利的宣言。但如果你真的想成功交付 SOA(例如,让你的业务更加灵活并且以一种可持续的低成本来运营),而这一路上不用烧钱的话,你得务必看看我上面列的这些烦人的,没什么印象的,甚至是不合潮流的方案和技术。让那些大卖主好好歇歇吧。你不需要买技术 (除了你所拥有的 web 服务器和数据库)。你也当然不需要买任何复杂的技术,而这正是那些供应商要倾售给你的。

Prasad 的文章讨论了一个典型的 SOA 实现会遇到的许多问题。它同样通过新的途径,摒除了现有的经常使用的解决方案遇到的问题。这引出一个话题:什么时候更适宜去理解和改进一个现有解决方案要,而什么时候又适宜摒弃现有方案而尝试新的途径呢?新事物是否总是最好?

查看英文原文: Practical Advice for SOA Implementers

2010-01-04 11:132284
用户头像

发布了 133 篇内容, 共 39.8 次阅读, 收获喜欢 1 次。

关注

评论

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

《数字经济全景白皮书》数字零售篇 重磅发布!

易观分析

数字零售 数字购物

PlatoFarm生态进展不断,通缩推动PLATO价值提升

西柚子

小微企业如何在10分钟内实现持续交付

阿里云云效

云计算 阿里云 研发管理 持续交付 研发团队

头一次见这么牛的的SpringBoot从入门到实战文档

Java架构追梦

Java spring 程序员 后端开发

阿里、字节、美团的offer我都拿到了,全靠这份Java面试题

Java架构追梦

Java 程序员 java面试 后端开发

PlatoFarm生态进展不断,通缩推动PLATO价值提升

小哈区块

首版架构师全栈”成长笔记“一经发布就获得一致好评,我不允许你没看过

Java架构追梦

Java 程序员 java面试 后端开发

不面试别看!字节跳动2022年Java架构师岗面试题(试行版)发布

Java架构追梦

Java 程序员 java面试 后端开发

新思科技连续六年获评Gartner魔力象限领导者殊荣

InfoQ_434670063458

新思科技 应用安全 Gartner

低代码之火,何以燎原?

BeeWorks

Amazon Aurora 读写能力扩展之 ShardingSphere-JDBC 篇

亚马逊云科技 (Amazon Web Services)

Tech 专栏

WorkPlus助力深i企打造移动数字化底座

BeeWorks

移动开发平台|助力企业安全高效搭建高质量移动应用

BeeWorks

零基础学Java第一节(语法格式、数据类型)

五分钟学大数据

Java 4月月更

极光笔记 | DSP高并发应用实践

极光JIGUANG

后端 DSP

为什么业务团队需要实施CRM系统?

低代码小观

CRM 客户关系管理 企业管理系统 CRM系统 客户关系管理系统

如何做好部门知识管理

小炮

「可视化案例Vol.3」数字孪生可视化园区,开启园区智慧管理新篇章

ThingJS数字孪生引擎

物联网 可视化 数字孪生

英特尔宋继强:以智能推动“科技+艺术”融合创新

科技新消息

阿里云弹性计算对视觉计算的思考与实践

阿里云弹性计算

Metaverse 视觉计算

算法交易的最佳编程语言是什么?

非凸科技

rust 编程语言 交易系统 策略

java培训MySQL一次性插入多行数据的操作

@零度

Java MySQL

netty系列之:protobuf在UDP协议中的使用

程序那些事

Java Netty 程序那些事 4月月更

大数据培训Flink基础知识分享

@零度

flink 大数据开发

web前端培训Vue3 setup() 启动函数的原理

@零度

前端开发 Vue3

作为一名iOS开发者—面对音视频这个新风口应该怎样学习才能乘风而起?

iOSer

ios 音视频 ios开发 OpenGL ES 音视频技术

基于Elasticsearch生长的SREWorks数据化运维体系

阿里云大数据AI技术

分布式 SRE 数据化运维

DeepMind爆发史:决定AI高峰的“游戏玩家”|深度学习崛起十年

OneFlow

人工智能 深度学习 DeepMind AGI

OneFlow获得首届“全国颠覆性技术创新大赛”最高奖

OneFlow

深度学习 技术创新

ImageKnife组件,让小白也能轻松搞定HarmonyOS图片开发

HarmonyOS开发者

HarmonyOS ArKUI 3.0

【国产】ETL自动化调度运维管理平台 TASKCTL 8.0 分布式部署

敏捷调度TASKCTL

Docker DevOps 国产开源 大数据运维 TASKCTL

对SOA实施者的实践忠告_SOA_Boris Lublinsky_InfoQ精选文章