知识卡片

工具生态对架构选型的现实影响

普通读书笔记卡

内容

领域逻辑三种模式(事务脚本/表模块/领域模型)里,事务脚本最简单、贴合大多数人熟悉的过程模型,但难以支撑复杂业务逻辑、尤其不擅长消除重复代码;领域模型能力最强,是唯一能从容应对真正复杂业务逻辑的模式,代价是学习门槛高、与数据库的连接天生别扭(对象模型和关系模型配合得不理想,映射复杂度会随模型复杂度水涨船高)。表模块是两者之间一个务实的折中——处理领域逻辑的能力强于事务脚本,虽不及领域模型,但和关系数据库配合得很顺畅。这三者之中,工具生态对表模块的影响最大:理论上应该先定架构、再选工具,但现实中往往是架构要和已有工具生态相互妥协——如果开发平台本身自带强大的记录集支持(典型如.NET环境),表模块几乎能”如虎添翼”,直接借力平台工具而不必自己造轮子;反之如果平台缺乏这类记录集工具,表模块的吸引力就大打折扣。可迁移启发:选型时把”这个模式在我的技术栈里有没有现成、成熟的工具支撑”当作与”这个模式理论上是否最优”同等重要的决策维度——脱离具体工具生态谈架构优劣,容易得出在实践中代价过高的结论。

参考来源

- 位置:《企业应用架构模式》第一部分"表述"之"第8章 通盘考虑"之"8.1 从领域层开始"(源文件:_epub-src/OEBPS/Text/000050.html) - 结论依据:原文说明"从这里我们也不难看出,工具也会影响到应用的架构。有时可以根据架构来选取工具,而且,从理论上说,你应该那么做。在实践中,我们必须让架构和工具相匹配。在这三种模式中,工具对表模块的作用最大,好的工具支持将能使你如虎添翼。对于.NET环境来说,表模块就非常适合,因为平台对记录集的支持那么好",直接支撑本卡结论。 - 原始内容:工具对表模块的作用最大,好的工具支持将能使你如虎添翼。对于.NET环境来说,表模块就非常适合,因为平台对记录集的支持那么好。