HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

透过源码,捋清楚循环依赖到底是如何解决的!

江南一点雨

Java spring

英特尔CEO称AI PC时代于今秋开启 联想将首批发布

E科讯

选择FastAPI或Flask:Python Web开发框架的终极指南

Apifox

Python flask 框架 web开发 FastApi

JSP的内置对象

java易二三

编程 程序员 计算机

【我和openGauss的故事】openGauss容灾集群搭建过程代码学习记录

daydayup

OpenGauss与NVM

daydayup

Java中final、finally和finalize的区别

java易二三

Java 程序员 计算机 final

一文详述流媒体传输网络MediaUni

阿里云视频云

云计算 视频云

内卷和躺平之外,职场还有其他选择

老张

职场成长

移动云操作系统改造技术实践分享,跨操作系统云主机迁移优化(一)

openEuler

Linux centos 操作系统 迁移 openEuler

明道云联合Kyligence结合示范性场景应用

明道云

GitOps 与 DevOps:了解关键差异,为企业做出最佳选择

SEAL安全

DevOps 运维 gitops 企业号 8 月 PK 榜

鸿蒙智联再出发,携手伙伴共赢空间智能化,创造无限可能

HarmonyOS开发者

HarmonyOS

哪些项目管理工具领跑2023年中国市场?全新榜单揭秘

爱吃小舅的鱼

项目管理 项目管理软件

北航基于openEuler构建工业机器人操作系统,打造“开箱即用”的机器人基础软件平台

openEuler

Linux 操作系统 机器人 嵌入式 openEuler

OpenSSL 3.0.0 设计(二)|Core 和 Provider 设计

铜锁开源密码库

开源 开发者 算法 信息安全 密码学

产业共振 智能涌现!8月16日飞桨携手生态伙伴带来大模型企业应用创新实践

飞桨PaddlePaddle

人工智能 百度飞桨 百度AI 文心大模型

【我和openGauss的故事】SpringBoot连接openGauss项目实战

daydayup

【我与openGauss的故事系列】openGauss 5.0.0全密态数据库应用小试

daydayup

分享实录 | 将 NGINX 打造成功能强大的 API 网关(上)

NGINX开源社区

nginx 微服务 k8s API api 网关

买量业务福音:自有App运行小游戏

FinFish

小游戏 App运行小游戏 游戏买量

国产 etl engine 监控面板 为管理者掌握平台运行情况,决策执行方案提供即时数据支撑

weigeonlyyou

数据库 数据交换 物联网 ETL 云数据迁移

SSM框架——使用MyBatis Generator自动创建代码

java易二三

编程 程序员 mybatis 计算机

山东布谷科技直播系统源码热点分析:不同芯片实现高质量编码与渲染视频的GPU加速功能

山东布谷科技

Java日记——使用强大的Elastisearch搜索引擎

java易二三

Java 编程 程序员 计算机

BenchmarkSQL 5.0 压测 openGauss 5.0.0 案例分享

daydayup

NKD:容器云集群与 OS 一体化运维利器

openEuler

Linux Kubernetes 云原生 操作系统 openEuler

研发提测前测试到底能做些什么 | 京东云技术团队

京东科技开发者

测试 测试开发 企业号 8 月 PK 榜

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