有人使用普通的旧 3 层架构吗?
Does anyone use plain old 3 tier architecture?
所以我一直在学习建筑风格和模式。据我所知,当谈到 3 层架构时,大多数人都在使用一种模式(例如 MVC)。但我的问题是,是否有人只使用没有任何模式的普通老式 3 层双向架构?这在行业中是否已经实践甚至可以接受?
普通的旧 3 层架构是一种模式。
架构应该
Form Consistent
层,如 Code Complete, 2nd Edition. Having just any of the architectural patterns and styles (MVC is actually a part of the Multitier architecture 的业务层中所述)是不够的。根据要求这
plain old 3-tiered bi-directional architecture
可能最适合客户端-服务器分布式系统。请记住 - 过度设计与完全没有设计一样糟糕。
所以作为底线 - 在所有级别上保持 good practices, SOLID principles and design patterns 才是好软件。
如果您指的是大多数开发人员在使用术语“3 层架构”时所做的概括,那么可能不像以前那么多。
这是什么意思?
好吧,根据我的经验,“3 层架构”的含义是围绕使用大致分为 3 个主要抽象(或 'layers'/层)的系统设计进行概括:
- 一个"UI"层
- 一个"business layer"/域层
- 还有一个database/persistence/storage层
问题很简单,就是这个结构没有很好地定义,所以我认识的大多数人都不愿意以这种方式描述他们的系统设计。这意味着什么太主观了,所以很容易被误解。
在许多简单的情况下,其中一些抽象可能不是必需的。各种持久性模式(例如 Table Gateway) and ORM 今天的库使得以 "object friendly" 方式存储和混合数据变得非常容易,这意味着调用封装此工作的代码整个 "layer" 可能是有点过头了。
此外,简单的 CRUD 应用程序可能根本没有 "business logic" ,并且由于 ORM 在许多情况下愉快地促进了 CRUD,因此没有任何特定于业务的逻辑可言,因此将系统的这一部分呈现为 "layer" 也相当多余。
在几乎所有情况下,用户界面可能是这三个中唯一真正站在 IMO 上的 "layer"。
如果系统具有复杂的 business/domain 逻辑,那么可能会 Domain Model or other DDD patterns come into play. In complex systems a solid ORM tool is usually employed making light work of the data interfacing. Still, colleagues of mine wouldn't usually call these elements "layers" generally - they'd be more specific and name the design patterns 明确地解释,这样解释就不会那么主观了。我们当然不会使用像“3 层架构”这样的术语。
HTH
所以我一直在学习建筑风格和模式。据我所知,当谈到 3 层架构时,大多数人都在使用一种模式(例如 MVC)。但我的问题是,是否有人只使用没有任何模式的普通老式 3 层双向架构?这在行业中是否已经实践甚至可以接受?
普通的旧 3 层架构是一种模式。
架构应该
Form Consistent
层,如 Code Complete, 2nd Edition. Having just any of the architectural patterns and styles (MVC is actually a part of the Multitier architecture 的业务层中所述)是不够的。根据要求这
plain old 3-tiered bi-directional architecture
可能最适合客户端-服务器分布式系统。请记住 - 过度设计与完全没有设计一样糟糕。
所以作为底线 - 在所有级别上保持 good practices, SOLID principles and design patterns 才是好软件。
如果您指的是大多数开发人员在使用术语“3 层架构”时所做的概括,那么可能不像以前那么多。
这是什么意思?
好吧,根据我的经验,“3 层架构”的含义是围绕使用大致分为 3 个主要抽象(或 'layers'/层)的系统设计进行概括:
- 一个"UI"层
- 一个"business layer"/域层
- 还有一个database/persistence/storage层
问题很简单,就是这个结构没有很好地定义,所以我认识的大多数人都不愿意以这种方式描述他们的系统设计。这意味着什么太主观了,所以很容易被误解。
在许多简单的情况下,其中一些抽象可能不是必需的。各种持久性模式(例如 Table Gateway) and ORM 今天的库使得以 "object friendly" 方式存储和混合数据变得非常容易,这意味着调用封装此工作的代码整个 "layer" 可能是有点过头了。
此外,简单的 CRUD 应用程序可能根本没有 "business logic" ,并且由于 ORM 在许多情况下愉快地促进了 CRUD,因此没有任何特定于业务的逻辑可言,因此将系统的这一部分呈现为 "layer" 也相当多余。
在几乎所有情况下,用户界面可能是这三个中唯一真正站在 IMO 上的 "layer"。
如果系统具有复杂的 business/domain 逻辑,那么可能会 Domain Model or other DDD patterns come into play. In complex systems a solid ORM tool is usually employed making light work of the data interfacing. Still, colleagues of mine wouldn't usually call these elements "layers" generally - they'd be more specific and name the design patterns 明确地解释,这样解释就不会那么主观了。我们当然不会使用像“3 层架构”这样的术语。
HTH