4月10-12日 QCon 北京,与全球 140+ 顶尖工程师共同解构 AI 时代的技术浪潮! 了解详情
写点什么

实体服务的模式反模式之争

  • 2007-06-19
  • 本文字数:1292 字

    阅读完需:约 4 分钟

一些人认为实体服务(Entity Services)或以业务为中心的实体是面向服务架构的基本要素。这一观点并没有得到所有人的认同。那么,实体服务是 SOA 模式,亦或反模式?上个月, Shy Cohen ,在文章“面向服务架构中服务的本体和分类”中定义实体服务如下:

“实体服务揭示并显露出系统中的业务实体。它们可以被认为是业务过程中以数据为中心的组件(名词),如:雇员、顾客、销售订单等。实体服务的例子包括,管理顾客信息的客户服务,或管理顾客所下订单的订单服务。”

Shy 还写道:

“实体服务有一个普遍的特点:在实体级别支持增、查、改、删(CRUD),同时为了解决问题领域、支持应用特性和用例的需要,添加了领域特定的操作。领域特定操作的一个例子是:客户服务暴露一个名为FindCustomerByLocation的方法,它可根据顾客的地址定位顾客的 ID。”

Thomas Erl(即将出版的“ SOA: Principles of Service Design ”的作者,同时他还是其它几本 SOA 书籍的作者),以类似的方式定义实体服务

几乎在每个企业中,都将会出现业务模型文档,它用来定义组织相关的业务实体。业务实体的例子包括顾客、雇员、发票和索赔等。实体服务模型表示一个以业务为中心的服务,它基于一个或多个业务实体的功能边界或上下文。由于对大多数父业务过程不可知,它被认为是一个高度可复用的服务。结果是,多个父业务过程可利用实体服务实现自动化。实体服务也被认为是以实体为中心的业务服务业务实体服务。右图展示了一个实体服务的例子。它的一些能力让人想起传统的 CRUD(增、读、改、删)方法。

看起来并不是每个人都同意此观点。John Evdemon,Shy 的同事(同样工作于微软),认为 CRUD 接口是 SOA 的反模式

“对 web 服务而言,CRUD 操作是错误的代理级别。CRUD 可能在服务内部或横跨几个服务实现,但它们不应该以这种方式暴露给消费者。这是服务将内部(私有)能力渗透到服务的公共接口的例子。”

同样,在谈及 CRUD 时, Steve Jones (“企业SOA 实施策略”的作者,该书由InfoQ 出版)总体上相当直率,并断定:“ CRUD 是垃圾”。最近, Nick Malik Jack Van Hoof Udi Dahan 同样在讨论实体服务的问题,而且他们的结论是(来自 Udi 的博客):

“实体服务属于应用架构领域。它们并不是服务的成员,服务是 SOA 分解的基本单元。 一个 SOA 服务既可以使用实体服务实现,也可不使用。如果是,那些实体服务就不能在 SOA 服务边界之外被访问。这样,它们就是 SOA 的实现细节。在这种情况下,我们可以就实体服务优于其它事物(如领域模型模式)的相对价值,进行非常有趣的讨论。”

或者正如 Nick Malik 总结的:

“那么,实体服务是反模式吗?从企业的视角来看,是的。从应用的视角来看,则不是。(两者之间并不冲突)。我认为,这依赖于你站在哪个角度来看。”

尽管如此,仍然还有服务粒度的观点 —— 即使在应用级别。如果服务的粒度太细,就几乎不违反“分布式计算的 8 个谬论”,并且如同 Peter Deutsch 当初定义这些谬论时所说的:

[当你做出错误假定的时候]“所有东西最后被证明是错误的,所有东西导致了麻烦及痛苦的学习经历。”

你有何高见?

查看英文原文 Entity Services - Pattern or Anti-pattern?

2007-06-19 03:451021
用户头像

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

关注

评论

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

iNet Network Scanner:全面而深入的网络分析工具

Rose

PD19虚拟机破解版安装教程及pd19永久密钥

Rose

Github每日热榜2024.03.16

天马行空的大杂烩

GitHub 程序员 码农 开源软件

NFTScan 正式上线 Blast NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT\ NFTScan

空间焕新的朱格拉周期,华为全屋智能进化正当时

脑极体

智能家居

《代码整洁之道》PDF

程序员李木子

网络安全知识点总结

知孤云出岫

网络安全

Topaz Photo AI 人工智能降噪 v2.4.1完美激活版 mac/win

Rose

助力高效工作!Finder增强工具 TotalFinder for Mac中文版 含注册码

Rose

揭秘 Bug 报告的终极技巧——如何写一个好的bug报告?

宇文辰皓

bug bug管理 bug定位 bug报告

Golang高效流控实践

俞凡

golang

文心一言 VS 讯飞星火 VS chatgpt (216)-- 算法导论16.2 3题

福大大架构师每日一题

福大大架构师每日一题

GraphPad Prism 10激活授权秘钥:高效且易于使用的科学研究绘图分析软件

Rose

可用于GPT4.0续费,海淘使用教程

蓉蓉

GPT-4 ChatGPT4 Claude

电源常用电路:采样电路

芯动大师

驱动 ADC采样 电源

Blu-ray Player Pro mac v3.3.22中文版 蓝光播放器 兼容m

Rose

数据集成之环境变量 v0.7.2

LIEN

开源 数据集成 业务融合 API对接 mydata

2024年阿里Java岗面试必问,2024Java面经

阿里、莫言

Java java面试 金三银四

macbook防睡眠工具:Caffeinated for mac一键激活版

Rose

Caffeinated下载 Caffeinated破解版 防睡眠工具

Topaz Gigapixel AI 7.0.4完美激活版 及Topaz Gigapixel AI 7全新功能介绍

Rose

WebStorm 2023.3.5 for Mac中文版 (WebStorm 2023永久激活秘钥最新)

Rose

AI Transcription for Mac(AI语音转录软件) 支持M1/M2

Rose

抓住大机遇,共筑新一代数智基础设施和解决方案竞争力

新消费日报

简单上云第一步!华为云耀云服务器L实例亮相华为云开年采购季

轶天下事

2024-03-16:用go语言,给你一个正整数数组 nums, 每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半。 (注意,在后续操作中你可以对减半过的数继续执行操作)

福大大架构师每日一题

福大大架构师每日一题

敢闯技术无人区 TCL实业斩获多项AWE 2024艾普兰奖

Geek_2d6073

CAD如何与EXCEL数据关联

Geek_2d6073

实体服务的模式反模式之争_SOA_Arnon Rotem-Gal-Oz_InfoQ精选文章