AI 从业者都在关注的 NVIDIA GTC 2023 China AI Day 来了!报名戳👉 了解详情
写点什么

意见: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:53489
用户头像

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

关注

评论

发布
暂无评论
  • 书评:《理解 SCA》

    在SCA规范草案首次发布四年之后,SCA依旧是一门未被很好理解的技术,知道的人也并不太多。然而,IBM和Oracle已经使用它来构建关键的产品套件了。SCA规范的两位作者,Jim Marino和Michael Rowley出版了一本SCA入门实践指南,该书涵盖了从持久层到表现层的所有编程模型。

  • 依赖倒置原则:高层代码和底层代码,到底谁该依赖谁?

    高层模块不应依赖于低层模块,二者应依赖于抽象;抽象不应依赖于细节,细节应依赖于抽象。

    2020-07-22

  • 架构决策作为可复用设计资产

    面向服务架构的决策建模(SOAD)框架可以帮助捕获那些经常重现的架构决策,并在相关项目中使用这些决策来指导设计。在这篇IEEE文章中,Olaf Zimmermann探讨了这种以决策为中心来指导设计工作的方法。另外他还描述了在SOAD元模型中使用的两类模型:指导模型和决策模型。

  • SOA 编程模型

    作者Boris Lublinksy介绍了在SOA领域中逐渐崭露头角的编程模型,如Windows通信框架,Java业务集成(JBI)和服务组件架构等。

  • 使用 Flash 构建 RESTful 服务

    在最近的一篇博文中,Adobe Flash的RESTful能力引起了人们的质疑。鉴于此,OASIS SOA Reference Architecture的主要作者之一与Adobe布道者Duane Nickull解释了Flash可以很好地支持SOA与REST背后的核心原则的原因所在。

  • Michael Poulin 炮轰 SoaML

    Michael Poulin对SoaML规范提出了批评,认为它是一个以角色/参与者为中心的模型,不是一个以服务为中心的模型。在他看来,SoaML搞的就是一种权力、责任和义务的结构,以该结构而非业务需求作为企业服务架构的基础将有损于面向服务的精神。

  • 编程语言的进化

    今天我们抛开具体的语言发展史,从编程范式演进的角度来谈编程语言的进化。

    2019-04-26

  • 跨越现实的障碍(下):架构分层就对了吗?

    分层架构的问题就在于如何处理领域层与基础设施层的关系上,所以我们应该重新思考分层架构是否正确,以及怎么分才更合理。

    2021-07-06

  • 移动 SOA 的门柱

    在过去几年内,业界试图多次定义和重定义SOA,整个过程中往往自相矛盾。到底是SOA真的发生了大变化,还是这一切的发生只是由于仍然缺乏对SOA本质的理解?

  • 一种针对 SOA 的消息类型架构

    这篇文章提出了一种新的消息类型架构,它以两个DSL为基础,起到了帮助管理SOA中消息格式的作用。这种方法通过消息类型定义中引用的企业数据模型促进了重用,并且有助于使数据治理流程和SOA治理流程保持一致。

  • SOA 与 DDD

    最近的一篇博文中,Phillip Calcado提出了一个问题“什么是服务?”并接着描述了这一问题的答案是如何依赖于领域驱动设计以及保证所有SOA开发中的利益相关者都有着同样的理解。

  • XSD、Schematron 与现实世界

    多部XML、XSL、SVG以及XQuery书籍的作者Kurt Cagle,就XSD和Schematron在模式模型语言(Schema Modeling Language,SML)中的联姻,发表了关于XML和模型的博文。作为示范,他提供了一个SML模式的例子。在XSD的世界中,Schematron会扮演一个什么样的角色?

  • 在 ESB 中选择路由还是编配?

    在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。

  • SOA 耦合的 7 个级别

    一般人们都认为:系统要么是松耦合的,要么不是。在一篇最近的帖子中,ZapThink高级分析师Schmelzer炮轰了这个信仰。尽管松耦合的重要性得到认识已经有些时日了,但是围绕这个帖子展开的对话却收集了一些有趣的讨论。

  • 说点题外话 04|面向对象的原则适用于 RESTful API 吗?

    迪米特法则本身的想法是不错的,但是场景改变了,我们就要重新思考它在新的环境中是如何被应用的。

    2021-07-27

  • SOA 领域建模,用 OOD 还是 SOA 方法?

    SOA领域建模时应该从哪开始呢,信息模型还是功能性结构?使消息格式标准化的方法就是规范数据模型吗?SOA信息模型有哪些不同的阶段?Gervas Douglas在Yahoo的SOA邮件讨论组的专家们对这些问题展开了讨论,提出了他们的观点。

  • 使用 Spring Data REST 实现简单的超媒体服务 (下)

    2019-03-28

  • WSDL 2.0 被批准成为 W3C 官方推荐

    2007年6月27日,WSDL 2.0最终被批准成为万维网联盟(W3C)官方推荐。Web服务描述工作组已在这些标准上工作超过了6年。该推荐预定于2006年12月31日到期,但是后来又得以延期至今年的6月30号。

  • 建立服务治理组织

    服务治理是一个成功的面向服务架构的关键方面。它的建设必须在SOA实施的初期尽早地被计划和检验。在本文中,Jean-Jacques Dubray展示了创建这样一个有效组织的必要条件。

  • 深入理解 Spring Cloud 的配置抽象

    2019-05-16

发现更多内容

面试阿里P6,过关斩将直通2面,结果3面找了个架构师来吊打我?

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

论 Erda 的安全之道

尔达Erda

云原生 安全 企业数字化转型 云平台 开发平台

赛迪发布《2020-2021年中国IT服务市场研究年度报告》,联想位居第一梯队

科技大数据

科技互联网

如何实时打通数据孤岛?Tapdata 创始人唐建法受邀于GOTC深度分享

tapdata

数据库 打通数据孤岛 数据同步 Real Time DaaS GOTC

防止数据丢失和减轻勒索软件攻击的 5 种方法

九河云安全

三面阿里被挂,竟获内推名额,历经5面拿下口碑offer(Java后台)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

九大核心专题,630页内容,熬夜23天吃透,我收割了3个大厂offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

632页!我熬夜读完这份“高分宝典”,竟4面拿下字节跳动offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

在阿里晋升3次,5年拿下P8岗位,这份pdf记录了我的整个成长过程

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

50 亿观众的 “云上奥运”,顶级媒体背后的数智化力量

阿里云视频云

阿里云 直播技术 视频制作 视频云 奥运

FIL分币平台|FIL算力系统软件开发技术

量化系统19942438797

#区块链# fil币

2021第二届云原生编程挑战赛正式启动,抢先报名!

阿里巴巴云原生

阿里云 Serverless RocketMQ 云原生 dubbo

基于香港服务器的应用开发中测试数据管理的 3 个最佳实践

九河云安全

Serverless 全能选手,再添一“金”

Serverless Devs

Serverless 互联网 云原生

你的工作有弹性么?

escray

学习 极客时间 朱赟的技术管理课 8月日更

Python代码阅读(第4篇):过滤掉列表中的唯一值

Felix

Python 编程 Code Programing 阅读代码

阿里云-云开发平台入门篇——静态网站的全生命周期实战

若尘

阿里云 8月日更

不愧为京东内部Spring Boot全解笔记,真的是把精髓全总结出来了

Java~~~

Java 面试 Spring Boot 架构师 京东

专业好用的数据恢复软件推荐

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

只需6步,教你从零开发一个签到小程序

华为云开发者联盟

小程序 App 移动 智慧校园 FunctionGraph

TrafficStatsRunnable 实用封装

Changing Lin

8月日更

限12小时删!白嫖对标阿里P5—P8的Java学习路线+大厂刷题秘籍

Java架构追梦

Java 阿里巴巴 架构 面试

如何保存数据并更快地从勒索软件攻击中恢复

九河云安全

2021全球开源技术峰会|IoT 时代的开源数据基础设施

EMQ映云科技

开源 IOT Platform IoT emq 开源技术

这本“算法宝典”讲得透彻,完全掌握后,我竟拿到字节跳动offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

推动数据中心行业的“水电煤”,可视化如何用数据改变传统产业?

一只数据鲸鱼

机房 数据可视化 数字孪生 智能IDC

iOS开发-为 iOS 编写 Kotlin Parcelize 编译器插件

iOSer

ios 编译器 编译器原理 iOS 知识体系 Kotlin Parcelize

【Vue2.x 源码学习】第二十七篇 - Vue 生命周期的实现

Brave

源码 vue2 8月日更

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