从软件架构的角度来看;我们使用术语是因为术语意味着什么。当您使用“3-tier”之类的术语时,您应该在符合其预期和理解含义的地方使用它。仅仅凭借具有某种形式的三个离散组件,各种事物都可以被视为“三层”。但是,如果你用这个词来描述 MVP,你会误导其他人。为什么不简单地说“MVP”?
3-Tier 一般是指三个物理层。维基百科在这里有一篇很棒的文章。
使用相关图表:

MVP 和 MVC 都不排除使用这三个物理层。事实上,简单地将您的应用程序创建为“MVC”应用程序(或“MVP”)并不能真正阐明太多。例如,它可以是服务器端的 MVC(如在 ASP.NET MVC 中),也可以是带有 Javascript 的客户端的 MVC,或者两者兼而有之!
至于您关于架构选项的问题;比赛场地相当开阔。您所做的选择通常取决于您在收集应用程序要求时应该收集的许多因素。
通常,您必须在可扩展性和复杂性之间进行权衡。然而,许多新技术使这种权衡变得微不足道——我建议任何开始一个新项目的人认真考虑它们(一些在下面讨论)。
几乎总是最好在物理上拥有一个专用的数据层(SQL、Mongo、Azure、Amazon,随你选)和一个专用的、可扩展的逻辑层(现在通常在 .NET 领域作为 WCF 服务实现)。
大多数情况下,人们会加入他们的网站和逻辑层……但这并不一定是这样。有时,有一个专门用于 Web 服务的物理层是有意义的,只有您的网站层才能访问。同样,这一切都取决于情况。
就逻辑层而言(在您的逻辑层内),几乎总是最好有某种数据访问层 (DAL)、代码内模型(无论是手动实现,还是通过 LINQ-to-Entities 之类的东西实现),以及专用的业务逻辑层。
如今,人们似乎越来越多地回归到经典的 HTML 和 Javascript(在 JQuery、Prototype、DOJO 等的帮助下)并使用 REST/JSON 与 Web 服务聊天,以便在客户端上检索和显示数据边。在这种情况下,您可以在客户端拥有一个成熟的应用程序,在您的后端拥有另一个成熟的应用程序......每个都有自己的上述逻辑层的实现。
选项是敞开的。