Architecture 以下分离是否被视为2层或3层体系结构?

Architecture 以下分离是否被视为2层或3层体系结构?,architecture,n-tier-architecture,Architecture,N Tier Architecture,我有一个web应用程序,在web主机上部署如下: 代码(不分离BLL、DAL等)上载到web主机 数据库(MSSQL备份文件)正在上载到web托管数据库 这是2层体系结构还是3层体系结构 我从不同的来源看到了不同的解释 若代码和数据库驻留在同一台服务器上,那个么它是两层的。若代码和数据库位于不同的服务器上,那个么它是三层的 带有数据库的web应用程序至少具有3层体系结构 它是一个两层体系结构 按此来源定义的2层 在两层体系结构中,web服务器响应网页请求,数据库服务器提供后端数据存储 此来源的多

我有一个web应用程序,在web主机上部署如下:

  • 代码(不分离BLL、DAL等)上载到web主机
  • 数据库(MSSQL备份文件)正在上载到web托管数据库
  • 这是2层体系结构还是3层体系结构

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

  • 若代码和数据库驻留在同一台服务器上,那个么它是两层的。若代码和数据库位于不同的服务器上,那个么它是三层的
  • 带有数据库的web应用程序至少具有3层体系结构
  • 它是一个两层体系结构
  • 按此来源定义的2层
    在两层体系结构中,web服务器响应网页请求,数据库服务器提供后端数据存储
    此来源的多层定义
    在三层体系结构中,web服务器链接到中间层,中间层通常包括一系列执行特定任务的应用程序服务器,以及现有公司系统的后端层


    希望有人能澄清这一点。

    这实际上取决于您对问题中“层次”一词的理解

    从基础设施/物理的角度来看,在大多数web应用程序中,您将有3层:

    • 客户端(浏览器)应用服务器数据库
    与大多数由两层组成的桌面应用程序不同:

    • 客户端数据库
    请注意,根据这个定义,网站并不总是三层的——例如,在一个只计算复利的简单网站中,您可能没有任何持久性

    逻辑的角度来看,在web应用程序体系结构本身中,您通常有抽象表示上述层的层-例如在MVC中,您将有对应于数据库的模型,与服务器上执行的逻辑相对应的控制器和与呈现给客户端的内容相对应的视图

    因此,在基础结构上,你有一个三层架构(因为你在第一种情况下很明显),但从你所描述的,你的网站本身可能没有遵循严格的多层方法,它将多个逻辑层合并成一个

    看到这一点,事情会进一步明朗化


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

    因此,我可以得出结论,从基础设施的角度来看,任何具有数据库的网站都至少是三层架构,而仅显示信息的静态网站是两层架构。关于分层(逻辑角度),is MVC本身默认为3层架构。例如:以ASP.NETMVC为例,默认情况下它有模型、视图和控制器,但它仍然在单个项目中。这意味着不可能将模型、视图和控制器分别部署到不同的web服务器中。因为我在源代码上读到过这样的说法,即只有当代码本身(bll,dal)被编写成可以部署到不同的服务器时,分层才被认为是有效的。您的第一条评论是正确的-n-tier是关于物理层的,在大多数情况下是由网络划分的。关于第二个,您可以将MVC视为层(如果您将每种类型的组件控制器/视图/模型视为一个实体)或类似组件。MVC只是一种设计模式。它未连接到多个层。您在问题中提到了代码分离,这就是为什么我在回答中提到了MVC的主题。这是物理层和逻辑组件/层之间的一个重要区别。这表明,只有当代码本身(bll,dal)可以部署到不同的服务器时,分层才被认为是有效的@vincentsty,你得出了什么结论吗?