写点什么

意见:SOA 不需要公共信息模型

  • 2007-07-16
  • 本文字数:1351 字

    阅读完需:约 4 分钟

松耦合并不只是使用一个公共的语法和一些协议,它还涉及一组共享语义的创建和管理。本周, Dave Linthicum 提供了关于服务建设的一组推荐,它们集中于抽象层 VS. 公共模式的想法:

1)你应该首先面对数据,定义一个公共数据或抽象层,这样服务就不会与特定的模式绑定在一起,而且还能享受数据使用的乐趣。我不会象推动抽象层那样力推公共模式。

2)抽象或公共模型应该象其它组件一样被测试。

3)不要将过多的把精力放在努力适应数据模型上,而应把精力放在跨越各服务领域的协议上,利用模式映射层为将来提供选择,以及向下面的数据层提供机动性。

David 的经验显示,在设计服务接口时,依赖一组公共模式可能被证明是僵化的,因为“它阻碍了这些服务分别地演变”。

SOA 就是要创建能在不同的环境中被重用的资产,在设计时环境往往是未知的,最大化 SOA 的好处就是让尽可能多的消费者最大化重用你的服务。但是,认为消费者总是处于采纳提供者观点的位置,或提供者与消费者总是采纳相同观点,都是天真的。即使今天是真的,但是随着时间变化,消费者和提供者可能不会处于同时向新版本接口演变立场。

即使仲裁没有明确的出现在 W3C 的 Web 服务架构中,SOA 的实践者很早就系统地使用它来取得更高层次的松耦合,使消费者和提供者之间分别地演变。不论你使用哪一种仲裁机制:发布 / 订阅,编制、多态接口…它将总是导致从消费者模式到提供者模式的转换,以及反向转换。这些转换可能由协调器来执行,或假定在消费者或提供者服务容器内发生。

既然这些转换是不可避免的,那么问题来了,你如何使这种转换从设计和运行角度来看都尽可能没有痛苦?顺便提一句,如果你打算使用独立于提供者和消费者接口的公共信息模型,并仍想要得到松耦合,那么这将导致两次转换,还不算你仍需将消息格式转换成被提供者和消费者实现所能消费的数据集合。

迈向更具管理性转换的第一步,是捕获包含在你消息中的信息语义,并从这些语义派生消费者和提供者接口。Dave 称之为“抽象层”,其他人则称之为标准数据模型(canonical data model)本体(ontology)。在这个抽象层中,结构比起语义的正规化来说是次要的。这不是个新问题,David Webber,早在1998 就引入了业务编码的概念,用来正规化分级命名XML 格式并优雅地处理本地化。更近一些时候,UN/CEFACT 开发出了一套标准,帮助管理语义和数据格式:核心组件技术规范(Core Component Technical Specification);其中一个概念是“上下文(context)”,它可让你管理跨越8 维的模式公共部分(如,它可以帮助管理德国汽车工业中的购买订单和美国半导体工业中的购买订单间的共同体)。

语义必须在严格的治理过程下被精确地管理,并被测试(正如Dave 所指出的)。可追溯的人工实物,如服务接口定义或数据库模式,是成功开发本体的关键。

以下是在面向服务架构中关于使用本体的细节:

a) 服务接口需要从本体设计(使用它们自己的结构,但是利用并仅利用本体语义)

b) 对于反复无常的消费者和提供者,在服务接口和本体间尽早建立可追溯性,对于转换的设计和实现是非常有用的,并且如果它们是从相同的本体设计,一些转换可以是自动的或直接被推断。

如果你打算开始摆弄这些概念,那么可以试试斯坦福大学开发的 protégé本体编辑器

查看英文原文: Opinion: SOA doesn’t need a Common Information Model

2007-07-16 08:531006
用户头像

发布了 255 篇内容, 共 65.3 次阅读, 收获喜欢 10 次。

关注

评论

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

精选!字节大佬带你一周刷完Java面试八股文,比啃书效果好多了

Java你猿哥

Java 算法 ssm java面试 java知识点

零信任是什么意思?与堡垒机有什么区别?

行云管家

网络安全 堡垒机 零信任

在Bamboo上怎么使用iOS的单元测试 | 京东云技术团队

京东科技开发者

ios 单元测试 代码覆盖率 Bamboo 企业号 5 月 PK 榜

一路同行,端点科技与海尔集团相伴十年的数字之旅

科技热闻

震撼来袭!最具中国特色的微服务组件:新一代SpringCloud Alibaba

Java 架构 微服务 Spring Cloud spring cloud alibaba

阿里全新推出:微服务突击手册,把所有操作都写出来了|超清PDF

Java 架构 微服务 Spring Cloud spring cloud alibaba

Java并发编程必备:分布式锁的选型和性能对比

Java 数据库 分布式锁

开源之夏 2023 | 与 Databend 一同探索云数仓的魅力

Databend

责任链模式在复杂数据处理场景中的实战

阿里技术

设计模式 技术实践

鲸鸿动能广告接入如何高效变现流量?

HarmonyOS SDK

HMS Core

来了!昇腾MindStudio全流程工具链分论坛精彩回顾,助力高效开发和迁移效率提升

科技热闻

Redis和MySQL扛不住,B站分布式存储系统如何演进?

Java你猿哥

Java MySQL redis ssm kv

独家巨献!阿里专家兼Github贡献者,整理的SpringBoot入门到成神

Java spring 架构 微服务 Spring Boot

重磅发布!阿里巴巴专家亲自撰写,Dubbo 3.0 分布式实战(彩印版)

Java 分布式 微服务 dubbo

k8s+Docker部署方法

Java你猿哥

Java Docker k8s ssm 架构师

硬核!阿里最新出品架构核心场景实战手册,解决99%的架构问题

Java你猿哥

微服务 架构设计 架构师 架构场景实战 微服务实战

构建万物互联,华为云IoT+鸿蒙重燃物体感知

华为云开发者联盟

鸿蒙 物联网 华为云 华为云开发者联盟 企业号 5 月 PK 榜

本周日直播,全链路数据治理实践论坛开放报名

阿里云大数据AI技术

大数据 数据治理

如何选择最优权限框架?Sa-Token 和 Shiro 对比

shiro Sa-Token

用户分享 | Dockquery,一个国产数据库客户端的初体验

BinTools图尔兹

用户体验 国产数据库工具

从浏览器输入域名开始分析DNS解析过程

华为云开发者联盟

开发 华为云 DNS 华为云开发者联盟 企业号 5 月 PK 榜

AI 大底座,大模型时代的答卷

百度Geek说

人工智能 百度 文心一言 企业号 5 月 PK 榜

Webpack5构建性能优化:构建耗时从150s到60s再到10s | 京东云技术团队

京东科技开发者

性能优化 webpack webpack-tapable 企业号 5 月 PK 榜

如何选择正确的压缩方式?

ScaleFlux

智能硬件 数据压缩 计算存储 NVMeSSD

一周吃透Java面试八股文(2023最新整理)

Java你猿哥

Java kafka Spring Boot JVM java面试

MySQL百万数据深度分页优化思路分析

Java你猿哥

Java MySQL 数据库 ssm 优化技术

云数据库技术沙龙|多云多源下的数据复制技术解读-NineData

NineData

MySQL Clickhouse 数据管理 多云多源 数据存取

基于图神经网络的推荐算法

TiAmo

神经网络 算法 推荐算法

牛掰!阿里架构师熬夜肝了一份JVM必知必会,哪里不会查哪里

Java 性能优化 JVM

阿里官方上线!号称Java面试八股文天花板(2023最新版)首次开源

Java你猿哥

Java redis Spring Boot JVM java面试

意见:SOA不需要公共信息模型_SOA_Jean-Jacques Dubray_InfoQ精选文章