写点什么

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

  • 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:451058
用户头像

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

关注

评论

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

【汽车虚拟仿真】VR技术如何加速自动驾驶进程?

3DCAT实时渲染

虚拟仿真 云仿真 汽车虚拟仿真

产品能力|AIRIOT数据采集与控制引擎在物联网项目中的硬核应用

AIRIOT

物联网

Postman Test 校验入门指南:轻松进行接口测试并验证响应

Liam

Java 程序员 Postman 开发工具 API

走进用友BIP数智人力,揭开中国企业智慧管理的神秘面纱

用友BIP

数智人力

教你如何用Vue3搭配Spring Framework

华为云开发者联盟

前端 开发 华为云 华为云开发者联盟 企业号 6

《巫师》系列游戏及《赛博朋克2077》本地化总监 Mikołaj Szwed 将出席 2023 中国游戏开发者大会(CGDC)

CGDC中国游戏开发者大会

本地化 游戏开发 ChinaJoy

探秘华为云盘古大模型:AI for industries的身体力行

华为云开发者联盟

人工智能 华为云 盘古大模型 华为云开发者联盟 企业号 6 月 PK 榜

用这个开源项目,网络小白也能搞定容器网络问题排查

阿里巴巴云原生

阿里云 容器 云原生 KubeSkoop

低代码——前端开发人员的利器

伤感汤姆布利柏

全球化数字经济时代,国产替代成为重中之重!

用友BIP

国产替代

面试了一个前阿里P7,Java八股文与架构核心知识简直背得炉火纯青

程序员小毕

程序员 后端 高并发 架构师 java面试

软件测试/测试开发丨接口测试学习笔记分享

测试人

Python 程序员 软件测试 接口测试 Mock

未来已来!探索AI医疗与低代码开发平台:引领健康浪潮的科技巨潮

不在线第一只蜗牛

人工智能 医疗健康领域 AI医疗

PoseiSwap IDO、IEO 结束,即将登录 BNB Chain

鳄鱼视界

广州丨阿里云 Serverless 技术实战营邀你来玩!

阿里巴巴云原生

阿里云 Serverless 云原生

是时候了!MySQL 5.7 的下一站,不如试试 TiDB?

编程猫

构建数字工厂丨数据分析与图表视图模型的配置用法

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 6 月 PK 榜

高可用只读,让RDS for MySQL更稳定

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

Spring Cloud 如何引入云原生网关,创新微服务架构

阿里巴巴云原生

阿里云 微服务 云原生 Higress

参展有礼|华秋电子诚邀您参加2023慕尼黑上海电子展

华秋电子

保姆级教程:带你体验华为云测试计划CodeArts TestPlan

华为云PaaS服务小智

云计算 开发者 软件开发 华为云

HTML5 游戏开发实战 | 贪吃蛇

TiAmo

html html5 6 月 优质更文活动

升级数智底座助力快速构建创新应用

用友BIP

低代码 数智底座 Pass平台

活动预告|周五晚,一起来看图数据库如何为构建行业大模型降本增效

悦数图数据库

图数据库 AIGC AI大语言模型

如何用低代码开发平台快速实现单据打印功能?

力软低代码开发平台

6 大场景落地全面预算管理闭环

用友BIP

全面预算

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