我可以说 MVP = 3 Tier Archi 吗?

2023-11-30

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

  • 三层架构(注:作者: 层我的意思是逻辑层)
  • 模型视图控制器 (MVC)
  • 模型视图演示者 (MVP)

现在我的问题如下:

1) 据我了解 3 层架构和 MVP 我可以说 MVP 和 3 层是 一样的东西?如果不是,那么两者之间有什么区别? (注:我只找到 MVC 和 MVP 或 MVC 和 3 Tier Archi 之间的区别,但没有人解决差异 MVP 和 3 Tier Archi 之间)

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


从软件架构的角度来看;我们使用术语是因为术语具有某种含义。当您使用“3 层”之类的术语时,您应该在符合其预期和理解含义的地方使用它。仅仅凭借具有某种类型的三个离散组件,各种事物都可以被视为“三层”。但是,如果您使用这个术语来描述 MVP,您就会误导他人。为什么不直接说“MVP”呢?

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

并附有相关图:

Wikipedia's three tier diagram

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 服务聊天,以在客户端检索和显示数据边。在这种情况下,您可以在客户端拥有一个成熟的应用程序,在后端拥有另一个成熟的应用程序......每个应用程序都有自己上面描述的逻辑层的实现。

选项是敞开的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以说 MVP = 3 Tier Archi 吗? 的相关文章

  • 将 WebResponse 保存为 txt

    我正在寻找一种与 WebResponse 中的 Request SaveAs 等效的方法 但我找不到它 我想将网络响应的标题和正文存储在 txt 文件中 你知道有什么技术可以实现它吗 没有内置的方法 但您可以简单地使用获取响应流 http
  • 我们是否需要安装 Office 才能使用 OpenXML?

    我正在使用 OpenXML 来操作文档 通过OpenXML打开文档需要安装office吗 不需要 您只需要引用提供所有 OpenXML 功能的库 该库不依赖于 Office
  • 如何构建 Javascript 架构来补充 PHP MVC Web 应用程序?

    我正在为 Web 应用程序迭代开发新的 JavaScript 架构 之前的迭代有大量内联代码 分散的包含 没有 js 文件的目录结构 并且所有内容都在全局命名空间中 我的目标是 将脚本包含在页脚中 将所有内容保留在应用程序命名空间 对象中
  • 如何发送电子邮件而不进入垃圾邮件

    MailAddress mailFrom new MailAddress email protected cdn cgi l email protection MailAddress mailTo new MailAddress email
  • index.g.cshtml 在哪里

    我正在尝试完成本教程 但是 通常 当我构建解决方案时 我会得到一个CS0234错误指出文件中缺少命名空间Index g cshtml cd 但是这个文件存在于哪里呢 我努力了 所有构建 清理 重建解决方案选项 我已重新启动 Visual S
  • 如何正确链接不同View之间

    我有一个master cshtml带有导航栏 我的第一个链接是另一个视图 ProjectManagement li a href Views ProjectManagement cshtml Project Management a li
  • OWIN中间件可以使用http会话吗?

    我有一些为 ASP NET 和 SignalR 复制的代码 我决定将其重写为 OWIN 中间件以删除这些重复 一旦我运行它 我注意到HttpContext Current Session为空 并且我没有看到任何会话对象IOwinContex
  • 错误:“无法在 Web 服务器上开始调试...”ASP.NET 4.0

    当我想在 IIS 服务器上创建网站时出现错误 我使用的是 Windows 7 和 Visual Studio 2010 我是否必须为 IIS 注册或配置 asp net 4 0 这里没有太多细节 但是当我尝试在刚刚从 3 5 更改为 4 0
  • 本地主机上的 .net HTTP_X_FORWARDED_FOR NULL

    抱歉 如果其他地方已经回答了这个问题 我找不到它 如果没有 我会尝试查找访问过该站点的机器的原始 IP 根据我的基本理解 变量HTTP X FORWARDED FOR无论代理和其他过滤器如何 都会显示用户的 IP 如果这是真的 我正在尝试对
  • 从表单身份验证中排除页面 - ASP.NET

    我知道有两种方法可以从表单验证中排除页面 通过使用包含需要排除的页面的文件夹中的另一个 web config 文件 或者使用 location 元素
  • 使用覆盖率信息测试 Go 中的 os.Exit 场景 (coveralls.io/Goveralls)

    这个问题 如何在 Go 中测试 os exit 场景 https stackoverflow com questions 26225513 how to test os exit scenarios in go 以及其中得票最高的答案 列出
  • 不支持 EF6 上下文类型“System.Data.Entity.Core.Objects.ObjectContext”

    我有一个使用 Visual Studio 2013 和 ADO NET 实体数据模型 EF6 创建的新项目 现在我必须使用一些动态数据函数 例如访问 MetaTable 对象 所以我添加以下代码 MetaModel model new Me
  • 锚标记 href 中的 eval

    我想要实现的目标是在锚标记的 href 中使用 Eval 作为参数 锚点嵌套在转发器内 为什么我不能使用后面的代码来实现这一点 我尝试了一些事情但没有运气 a href http MyWebsite ActiveUsers ID Inser
  • Web 服务需要一个 DataSet 对象,我如何通过 ColdFusion 或原始 XML 提供该对象?

    我需要调用用 NET 编写的 Web 服务 进行调用的应用程序是用 ColdFusion 编写的 Web 服务期望的参数之一是 DataSet 对象 我无法在 ColdFusion 中实例化 NET DataSet 对象 如何向 Web 服
  • ASP.NET 开发人员真的需要关心线程安全吗?

    我认为自己了解线程的概念以及为什么某些代码是或不是 线程安全 的 但作为主要使用 ASP NET 的人 线程和线程安全是我很少考虑的事情 然而 我似乎在 Stack Overflow 上遇到了大量评论和答案 不一定适用于 ASP NET 大
  • jQuery Datatable:分页和过滤器显示不正确

    我不知道如何解决这个问题 尝试了一整天但没有成功修复分页 我正在使用 jQuery 数据表 并且为了显示我的大量数据 我正在使用服务器端 作为测试 仅调用表中的 10 行数据 然后在传递到表之前 我重组了里面的数据dataSrc 使用这个解
  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P

随机推荐

  • 如何使用 Fiddler 将 XML POST 到 ASP.NET WebAPI

    给定以下 ASP NET WebAPI 我尝试使用 Fiddler 发送测试 POST 但无法让它工作 无论我发送什么 我总是只看到没有数据发送到服务信息 Imports System Web Http Imports System Net
  • SQLITE 将大量行转置为列

    我有一个这样订购的数据库 ID Subject Value 1 Subj1 Val1 1 Subj2 Val2 2 Subj1 Val3 2 Subj5 Val4 等等 ID 数以千计 受试者数以万计 我想找到这个矩阵的转置 我怎么做 如果
  • 从 mcrypt_decrypt 到 openssl_decrypt

    我有一个问题 我想用 open ssl 解密替换对 mcrypt 的函数调用 但输出是混合的 这是 mcrypt 实现 效果很好 decrypted trim mcrypt decrypt MCRYPT RIJNDAEL 128 subst
  • 在 JPA 上映射 Oracle XMLType (EclipseLink)

    我们的项目有一些特殊要求 其中之一是从 Oracle 10g 数据库的 XMLType 数据库列获取数据 我们找到了一个使用 JDBC 的简单解决方案 但它会使应用程序有点混乱 因为所有数据访问都是通过 JPA 完成的 使用的实现是 Ecl
  • 使用 HTML5 创建音频可视化工具

    我正在尝试使用我在网上找到的示例对在线广播流使用音频可视化这一页 然而 与发现的问题类似这个帖子 我的音频文件 即使使用本地文件进行测试 就是没有声音 当然可视化也没有任何作用 我的 HTML 如下
  • 在 Firefox 和 Chrome 中呈现 HTML

    div style height 20 width 70 div div gt div style height 20 width 30 div 在 Chrome 中 这两个部分位于同一行 但是两个div之间有一个小差距 但在 Firefo
  • 根据多个数据块的列值改变点颜色 gnuplot

    我的问题非常类似于this其一 从中我学到了很多东西 但是 我正在使用多个数据块 如下所示 1 2 3 4 5 6 7 8 0 4 3 0 4 5 7 2 3 0 4 5 0 5 6 7 我将它们绘制如下 plot file txt ind
  • 为什么 Python 创建的 MD5 哈希与在 shell 中使用 echo 和 md5sum 创建的 MD5 哈希不同?

    Python MD5 哈希值与 shell 上的 md5sum 命令创建的哈希值不同 为什么 gt gt gt import hashlib gt gt gt h hashlib md5 gt gt gt h update mystring
  • SSIS版本检查

    这是我在这个论坛上的第一篇文章 我一直坚持使用 Microsoft SSIS 软件包 但我真的不知道如何打败它 我已经提到了 SSIS 包文件 我尝试在 SQL Server 2005 上使用 Business Intelligence D
  • 在 contenteditable div 中设置插入符位置

    Intro 当编辑 contenteditable DOM 对象的内容时 不同的浏览器有不同的行为 例如 Firefox 18 0 创建一个新段落 p 或换行符 br 在某些情况下 Chrome 24 会创建一个 p div 为了解决这个问
  • 如何修复 iOS 12 Safari Cors 预检错误?

    我试图更好地理解 COR 因为我们的 Web 应用程序的一些用户抱怨说 自从他们升级到 iOS 12 后 他们收到了预检错误 来自网络检查器的错误 Error Preflight response is not successful Err
  • 导出可运行的 JAR 文件不支持 UTF-8 编码 - Java Eclipse

    我使用 eclipse IDE 制作了这个小型 Java 程序 我已将工作区设置为支持 UTF 8 并且程序在从 eclipse 执行时运行良好 该程序的一部分是将一些数据写入文件 需要 UTF 8 因为它是阿拉伯语 我需要导出一个可运行的
  • java.io.IOException:找不到 Main [动态功能模块] 的 PROCESSED_RES 输出

    将动态模块添加到已有 6 种风格的多模块项目中 出现这个错误 ERROR Unable to resolve dependency for dynMod debug compileClasspath Could not resolve pr
  • 如何检查指针是否指向数组或单个 int 或 char

    我想知道一个指针是否指向一个array或单身integer 我有一个需要两个指针的函数 int and char 作为输入并判断指针是否指向array或单身integer pointer pointer 4 pointer1 pointer
  • 如何导入 XML 表 Google Sheets

    所以我有一个谷歌表 我想通过 ergast com API 导入 F1 排位赛和比赛结果 我只需要表中的驱动程序和位置信息 但如果更容易的话 我很乐意导入整个表 我尝试过 IMPORTHTML IMPORTFEED IMPORTXML 但无
  • 使用网络抓取提供数据框

    我正在尝试将一些刮取的值附加到数据框中 我有这个代码 import time import requests import pandas import pandas as pd from bs4 import BeautifulSoup f
  • 使用 dotnetzip 压缩文件,打开时文件已损坏

    我从字节数组在控制器中创建了一个 zip 文件 并将该 zip 文件作为文件结果返回 当我下载 zip 文件并解压该文件时 它已损坏 我这样做 byte fileBytes array MemoryStream fileStream new
  • 如何将网页转换为图像?

    我想将 aspx HTML 页面 用户界面 转换为图像 例如 JPEG 我正在使用下面的代码 Protected Sub btnGet Click ByVal sender As Object ByVal e As System Event
  • Raspberry Pi 3 上的 Google Assistant SDK:音频设置不起作用

    我一直在尝试将 G Assistant 安装到 Raspberry Pi3 上 我在以下链接中有疑问 https developers google com assistant sdk prototype getting started p
  • 我可以说 MVP = 3 Tier Archi 吗?

    从最近几天开始 我一直在为我的新 Web 应用程序寻找最佳架构 该应用程序将使用 C 在 ASP Net 中开发 到目前为止 我只发现并研究了以下3个 三层架构 注 作者 层我的意思是逻辑层 模型视图控制器 MVC 模型视图演示者 MVP