【问题标题】:Alternatives to NTier architecture for web appsWeb 应用程序的 NTier 架构的替代方案
【发布时间】:2011-11-11 20:46:54
【问题描述】:

我最近与同事讨论了推动我们的 Web 应用程序采用规范的 n 层结构。令我震惊的是,我想不出任何替代方案。

是否总是需要将 Web 应用程序分层?

【问题讨论】:

    标签: asp.net architecture


    【解决方案1】:

    传统 N 层架构的替代方案是 Udi Dahan 所讨论的 Command-Query Responsibility Segregation (CQRS) 架构。

    像所有架构决策一样,您应该真正考虑何时使用它,正如所讨论的here

    就个人而言,我倾向于在我的软件旅行中看到很多"over architecture",这确实会使事情变得过于复杂,并使事情变得更加难以维护,而且显然成本也更高。您确实需要首先考虑业务问题,而不仅仅是选择架构。

    让事情尽可能简单以获得最佳结果和轻松重构。

    【讨论】:

      【解决方案2】:

      是否总是需要将 Web 应用程序分层?

      您应该分离系统的不同逻辑部分,以避免它们紧密耦合,从而使它们更易于重用。将它们分开并不是那么重要。您可以将其称为 layers 或其他任何名称。

      实际上这些层可能有两种含义:

      1. 物理边界:客户端浏览器、Web 服务器、Web 服务服务器、后端数据库……
      2. 逻辑边界:GUI、服务层、DAL、...

      您还可以查看Onion Architecture。但是洋葱还是有层次的:-)

      【讨论】:

      • 标准约定是使用 tiers 作为物理边界,使用 layers 作为逻辑边界。
      【解决方案3】:

      强烈推荐阅读Microsoft Application Architecture Guide, 2nd Edition

      然后,您会意识到分离对于每个网站(不只是 2 个左右的简单网页)来说是多么重要。

      这是一本详尽的指南,解释了每一层的角色和职责,以及它们如何在一个强大且可扩展的应用程序中一起发挥作用。

      您不必阅读全部内容,但首先请查看Chapter 5: Layered Application Guidelines

      【讨论】:

        【解决方案4】:

        分层架构有另一种“模式”。

        但这是分层架构试图解决的反模式。即“大泥球”:)

        【讨论】:

          猜你喜欢
          • 2021-08-28
          • 1970-01-01
          • 1970-01-01
          • 2013-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多