写点什么

对 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:132399
用户头像

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

关注

评论

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

100+款AI产品薅羊毛攻略(下)——轻轻松松节省几十万

夏夜许游

人工智能 AI 阿里云视觉智能开放平台

云上创新!观测云携手阿里云日志服务 SLS,全面升级云上应用可观测性体验

观测云

Docker PHP 入门实践(四)

Felix

Docker thinkphp 11月月更 高德天气Api

京东云开发者|深入JDK中的Optional

京东科技开发者

jdk java8 NPE 空指针 Optional

面试官最喜欢问的几个react相关问题

beifeng1996

React

怎样提高报表呈现的性能

步尔斯特

JavaScript箭头函数与普通函数的区别

格斗家不爱在外太空沉思

JavaScript 前端 11月月更

Redis深入浅出 知识总结

何你一起

数据库 redis 缓存 11月月更

云栖大会,未来万物皆是计算机?

阿里云CloudImagine

阿里云 云栖大会

Web前端安全系列之:XSS攻防

GFE

前端 前端安全

优秀开源云原生工具推荐——系列4

HummerCloud

云原生 边缘计算 优秀开源项目 开源云工具 11月月更

react的jsx和React.createElement是什么关系?面试常问

beifeng1996

React

计算机网络:信道划分介质访问控制

timerring

计算机网络 11月月更 信道划分

Databend 集群部署 | 新手篇(2)

Databend

开源

react相关面试知识点总结

beifeng1996

React

前端工程师面试题自检

loveX001

JavaScript

使用Socket.io库制作一个简单的实时聊天室

格斗家不爱在外太空沉思

JavaScript websocket 11月月更

信创引领!亚信科技AntDB数据库助云南高速核心业务降本增效、系统自主可控

亚信AntDB数据库

AntDB 国产数据库 aisware antdb AntDB数据库 高速清分系统

高效数据通道支撑生产情况实时分析与可视化|工业4.0智慧工厂

EMQ映云科技

物联网 IoT 数据可视化 11月月更 云边协同

Oracle sql 性能优化(三)

默默的成长

oracle 前端 11月月更

javascript拖拽功能

格斗家不爱在外太空沉思

JavaScript 前端 11月月更

“吃”完这本Java性能调优实战,MySQL+JVM+Tomcat等问题一键全消

程序知音

Java MySQL JVM java面试 性能调优

python小知识-并发编程(2)

AIWeker

Python 人工智能 并发编程 python小知识 11月月更

京东云开发者|软件架构可视化及C4模型:架构设计不仅仅是UML

京东科技开发者

软件架构 架构设计 架构可视化 图形化编排 C4模型

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

loveX001

JavaScript

鸿蒙开发入门 | 开发第一个鸿蒙应用+页面跳转

TiAmo

华为 鸿蒙 11月月更

主动学习(Active Learning)简介综述汇总以及主流技术方案

汀丶人工智能

nlp 11月月更 主动学习

React面试:谈谈虚拟DOM,Diff算法与Key机制

beifeng1996

React

诚意满满的前端面试总结

loveX001

JavaScript

各地政府先后试点“首席数据官”,数据化转型或成为城市治理的重要抓手

数造万象

数字化转型 数据治理 DataOps 大数据中台

京东云开发者|深入JDK中的Optional

京东科技开发者

jdk java8 NPE 空指针 Optional

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