C# 我的架构是什么?

C# 我的架构是什么?,c#,model-view-controller,architecture,n-tier-architecture,C#,Model View Controller,Architecture,N Tier Architecture,有人要求我定义我的应用程序的体系结构,但我对如何用词有点纠结。你们觉得怎么样 我们开发了一个.NETMVC应用程序 它在本地网络中使用 我们有查看MVC网站的工作站(表示层) 我们有一个托管站点的应用服务器(逻辑层) 我们有一个存储数据的数据库服务器(SQL 2008 R2)(数据层) 因此,我认为由于分层,它是一个三层架构。 然而,因为我们使用了MVC,这是否意味着我们的层更直接(尽管松散耦合)连接,从而使我们的体系结构更少线性(三层)而更多三角形(MVC) 您认为我应该如何描述这个体系结

有人要求我定义我的应用程序的体系结构,但我对如何用词有点纠结。你们觉得怎么样

  • 我们开发了一个.NETMVC应用程序
  • 它在本地网络中使用
  • 我们有查看MVC网站的工作站(表示层)
  • 我们有一个托管站点的应用服务器(逻辑层)
  • 我们有一个存储数据的数据库服务器(SQL 2008 R2)(数据层)
因此,我认为由于分层,它是一个三层架构。
然而,因为我们使用了MVC,这是否意味着我们的层更直接(尽管松散耦合)连接,从而使我们的体系结构更少线性(三层)而更多三角形(MVC)


您认为我应该如何描述这个体系结构?

我将把它描述为一个三层应用程序,并将MVC方面放入表示层


因为您的基本结构是基于三层的,并且使用MVC向用户显示数据。(也许你可以把MVC放在表示层和应用层上,以说明这两者之间的实际交互)。

我将其描述为一个三层应用程序,并将MVC方面放在表示层中

因为您的基本结构是基于三层的,并且使用MVC向用户显示数据。(也许你可以把MVC放在表示层和应用层之上,以说明这两层之间的实际交互)。

我认为术语“三层架构”定义不清,已经过时,因为它没有突出显示代码的结构方式,也没有从用户角度提供任何好处或缺点。问题在于,它涉及到物理部署,在虚拟化和分布式计算时代,这几乎没有什么意义

,并且由于您通常只能使用本地开发人员机器运行和调试您的网站,因此通常可以将其部署为1层。更相关的问题可能是“我可以拆分应用程序的(逻辑)计算机的最大数量是多少?”这个数字与实际部署无关,而是由代码的结构决定的——由分层决定的。当然,复制另一台机器的机器(用于负载平衡的多个web服务器)不算在内

这些信息仍然很不相关。它表明,您的代码可以分离关注点,并且可能比不允许拆分到不同层的代码更具可伸缩性。另一个想法是强去耦:您可以替换一层而不接触另一层。实际上,这几乎不起作用(例如,从Oracle切换到MySQL),并解决了一些过时的问题:“表示层中操作系统的更改只会影响用户界面代码。”()

当您添加外部SaaS/PaaS产品或SolR(搜索引擎)等第三方工具时,所有这些都会变得更加模糊。SolR是数据层的一部分还是逻辑层的一部分?通过添加缓存层,您的体系结构是否变为4层?如果您的数据库层不是一台机器,而是由10台机器组成的集群,该怎么办

另一方面,MVC指的是代码的结构方式。然而,这不仅仅是一个表示层模式:模型不知道控制器,也不知道视图。MVC将数据、表示和逻辑划分为不同的层。大多数MVC实现用作表示层模式和控制器模式。A通常也存在,并在委托给相应的PageController之前处理所有请求,但关键是模型不知道所有这些

我建议完全放弃“n层体系结构”的概念。

我认为“3层体系结构”一词定义不清,已经过时,因为它没有突出显示代码的结构方式,也没有从用户角度提供任何好处或缺点。问题在于,它涉及到物理部署,在虚拟化和分布式计算时代,这几乎没有什么意义

,并且由于您通常只能使用本地开发人员机器运行和调试您的网站,因此通常可以将其部署为1层。更相关的问题可能是“我可以拆分应用程序的(逻辑)计算机的最大数量是多少?”这个数字与实际部署无关,而是由代码的结构决定的——由分层决定的。当然,复制另一台机器的机器(用于负载平衡的多个web服务器)不算在内

这些信息仍然很不相关。它表明,您的代码可以分离关注点,并且可能比不允许拆分到不同层的代码更具可伸缩性。另一个想法是强去耦:您可以替换一层而不接触另一层。实际上,这几乎不起作用(例如,从Oracle切换到MySQL),并解决了一些过时的问题:“表示层中操作系统的更改只会影响用户界面代码。”()

当您添加外部SaaS/PaaS产品或SolR(搜索引擎)等第三方工具时,所有这些都会变得更加模糊。SolR是数据层的一部分还是逻辑层的一部分?通过添加缓存层,您的体系结构是否变为4层?如果您的数据库层不是一台机器,而是由10台机器组成的集群,该怎么办

另一方面,MVC指的是代码的结构方式。然而,这不仅仅是一个表示层模式:模型不知道控制器,也不知道视图。MVC将数据、表示和逻辑划分为不同的层。大多数MVC实现用作表示层模式和控制器模式。A通常也存在,并在委托给相应的PageController之前处理所有请求,但关键是模型不知道所有这些

我建议完全放弃“n层体系结构”的概念。

@user666262:s