知识卡片

layer与tier不是一回事:逻辑分层不等于物理分离

普通读书笔记卡

内容

layer(层)和tier常被当同义词混用,但很多人认为tier特指物理上的分离——如”two-tier system”专指客户端在一台桌面机、服务器在另一台机器上运行的客户/服务器系统。作者刻意选用layer这个词,是为了强调层次划分是一种逻辑上的组织方式,并不要求把不同层放到不同机器上运行:独立出来的领域层,既可以和数据源层放在同一台数据库服务器上,也可以三层全部塞进一台笔记本电脑里运行——即使物理上只有一个节点,逻辑上依然是三个截然不同的层次。可迁移启发:讨论”要不要分层”时,先分清对方说的是逻辑边界还是部署边界,这是两个独立的决策维度,混为一谈容易导致”反正只有一台服务器,所以不需要分层”这类误判——物理上单机部署完全不妨碍代码在逻辑上保持清晰的三层划分。

参考来源

- 位置:《企业应用架构模式》第一部分"表述"之"第1章 分层"之"1.1 企业应用中层次的演化"(源文件:_epub-src/OEBPS/Text/000012.html) - 结论依据:原文说明"当人们讨论分层时,常常不容易区分layer和tier……很多人还是认为tier意味着物理上的分离……我使用layer,旨在强调无需把不同的层次放在不同的计算机上运行……有两个节点,但是有三个层次……还可以在一台笔记本电脑上运行三层软件……仍旧存在三个截然不同的层次",直接支撑本卡结论。 - 原始内容:我使用layer,旨在强调无需把不同的层次放在不同的计算机上运行。独立出来的领域逻辑层,既可以运行在台式计算机上,也可以运行在数据库服务器上。在这种情形下,有两个节点,但是有三个层次。如果数据库也在本地,还可以在一台笔记本电脑上运行三层软件,当然,仍旧存在三个截然不同的层次。