以下分离是考虑2层还是3层架构?

时间:2015-04-20 12:50:46

标签: architecture n-tier-architecture

我有一个Web应用程序,在Web托管上部署如下:

  1. 代码(不分离BLL,DAL等)上传到网站托管
  2. 正在上传到网络托管数据库的数据库(MSSQL备份文件)
  3. 这被认为是2层架构还是3层架构?

    我从不同的来源看到了不同的解释

    1. 如果代码和数据库驻留在同一台服务器上,则它是2层。如果代码和数据库驻留在不同的服务器上,则它是3层。
    2. 带有数据库的Web应用程序至少具有3层架构
    3. 这是一个双层架构。
    4. 此来源定义2层
      在2层体系结构中,Web服务器响应对Web页面的请求,而数据库服务器则提供后端数据存储 此来源定义多层
      在3层体系结构中,Web服务器链接到中间层,该层通常包括执行特定任务的一系列应用程序服务器,以及现有公司系统的后端层

      希望有人能澄清这一点。

1 个答案:

答案 0 :(得分:1)

这实际上取决于您在问题中“层级”一词的理解。

从大多数Web应用程序的基础架构/物理角度来看,您将拥有3层:

  • Client (browser) <--> Application Server <--> Database

与大多数由2层组成的桌面应用程序相反:

  • Client <--> Database

请注意,通过这个定义,网站不是总是 3层 - 例如,您可能在一个只计算复利的简单网站中没有任何持久性。

在Web应用程序架构中,从逻辑的角度来看,您经常拥有抽象表示上述层的层 - 例如在 MVC 中,您将拥有模型对应于数据库,控制器对应于在服务器上执行的逻辑,而视图对应于呈现给客户端的内容。

所以,在基础设施方面,你有一个3层架构(因为你显然是第一种情况),但从你所描述的,你的网站本身可能没有遵循严格的多层方法,它结合了多个逻辑层合为一体。

请参阅此wikipedia article,它将进一步澄清问题。

更新this thread似乎也澄清了这个问题。