我可以说MVP = 3级Archi?

Jam*_*ame 2 architecture asp.net mvp three-tier web-architecture

从最近几天开始,我一直在寻找新的Web应用程序的最佳架构,这将使用C#在ASP.Net中开发.到现在为止,我只发现并研究了3

  • 三层体系结构(注意:按层,我的意思是逻辑层)
  • 模型视图控制器(MVC)
  • 模型视图演示者(MVP)

现在,我的问题是:

1)据我所知3 Tier Architecture和MVP我可以说MVP和3 Tier是一回事吗?如果没有,那么两者之间有什么区别?(注意:我只发现MVC和MVP或MVC和3 Tier Archi之间的区别,但没有人能够解决MVP和3 Tier Archi之间的差异)

2)我只发现了以上三种架构选项,还有其他选择吗?(注意:这里我只想要Web应用程序整体架构的选项,如上面的3)

Ste*_*eve 7

从软件架构的角度来看; 我们使用术语因为术语意味着什么.当你使用像"3-tier"这样的术语时,你应该在它符合预期和理解含义的地方使用它.通过具有某种形式的三个分立组件,各种各样的东西可以被视为"3层".但是,如果您使用该术语来描述MVP,那么您会误导另一个人.为什么不简单地说"MVP"?

3层通常指三个物理层.维基百科在这里有一篇很棒的文章.

使用相关图表:

维基百科的三层图

MVP和MVC都不排除使用这三个物理层.实际上,简单地将您的应用程序创建为"MVC"应用程序(或"MVP")并不能真正澄清太多.例如,它可以是服务器端的MVC(如在ASP.NET MVC中),也可以是客户端的MVC,也可以是Javascript,或两者兼而有之!

至于你关于建筑选择的问题; 比赛场地相当开阔.您所做的选择通常取决于您在收集应用程序要求时应收集的许多因素.

通常,您必须在可伸缩性和复杂性之间进行权衡.然而,许多新技术使得这种交易可以忽略不计 - 我建议任何开始一个新项目的人都要认真考虑它们(下面讨论一些).

物理上,专用数据层(SQL,Mongo,Azure,亚马逊,选择)和专用的,可扩展的逻辑层(通常在.NET中作为WCF服务实现)几乎总是最好的.

大多数时候人们加入他们的网站和逻辑层......但事实并非如此.有时,为Web服务提供专门的物理层是有意义的,只有您的网站层才能访问.同样,这完全取决于情况.

至于逻辑层(在你的逻辑层内),几乎总是最好有一些数据访问层(DAL),一个代码内模型(无论是手动实现,还是通过LINQ-to-Entities之类的东西),以及专用的业务逻辑层.

现在越来越多的人似乎回归到经典的HTML和Javascript(借助JQuery,Prototype,DOJO等等)并使用REST/JSON与Web服务聊天,以便在客户端上检索和显示数据侧.在这种情况下,您可以在客户端拥有一个成熟的应用程序,并在您的后端拥有另一个完整的应用程序......每个应用程序都有自己的逻辑层实现,如上所述.

选项是敞开的.