很久以前, 人们以为地球是太阳系的中心.
然后一位聪明人, 哥白尼, 他改变了我们对太阳系的看法. 他认为太阳是太阳系的中心:
这是对太阳更好的一个解释, 更简单也更具说服力.
事实上, 以太阳为中心的模型确实是更优雅的.
上面这件事也发生在软件开发里.
下面这个就是很多开发者惯用的以数据库为核心的经典三层架构:
在这种结构下: UI, 业务逻辑, 数据访问都是围绕着数据库来运行的.
数据库就是这种结构的核心.
后来, 和太阳系一样, 人们开始改变了看待软件架构的方式 -- 为什么不以领域为核心?
而在这种结构下, 数据库只不过是架构之外的一个实现细节.
在这里, 领域(业务领域)是核心/必需品, 而数据库就是一个细节而已.
为什么要这样看待架构?
引用Robert Martin的一句话: "建筑师首先需要保证造出来的房子是可以居住的, 而不是确保房子必须用砖头来盖".
盖一幢房子, 首先要保证房子有足够的空间, 并且可以居住. 而房子涂什么颜色的漆, 以及用什么样的装潢, 这些虽然也很重要, 但它们不是必需的.
所以对于软件架构来说, 我们要搞清楚的就是, 什么是核心/必需品, 什么是细节.
这里面, 领域是必需的, 用例也是必需的; 而展示层则是细节, 持久层也是细节, 它们尽管很重要, 但是它们无法去解决核心问题.
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com