我需要一些关于 MVC 架构和三层架构的澄清

2024-03-08

我一直在读《Pro ASP NET MVC Framework》一书,我对很多事情感到非常困惑。我一直在尝试做一些研究,但我发现有这么多不同的方法和概念向我抛出,这只会让事情变得更糟。
所以我有几个问题:

  1. 我知道 MVC 应该将功能分为三个主要部分:模型 -> 控制器 -> 视图。 MVC 是一种与三层架构不同的方法吗?或者我是否仍然应该考虑在我的项目中创建数据访问层和业务逻辑层?

  2. 存储库到底是什么?它充当我的数据访问层?存储库在哪里/如何融入 MVC?

  3. 该书讨论了使用 LINQ to SQL 与数据库交互,但它指出将来将不再支持 LINQ to SQL,并且 Microsoft 将在实体框架中放弃它。实体框架适合 MVC 的什么位置以及如何与其交互?

在此先感谢您的帮助!
Matt


  1. MVC主要是表示层的一种模式,它专注于视图和控制器之间的交互。该模型可以被认为是负责维护状态的应用程序组件 http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx,包括坚持。

    在简单的应用程序中,模型可能只是 LINQ-To-SQL 模型。在大型企业应用程序中,模型可能包含数据访问层、业务层和域层。 ASP.NET MVC 并不限制您应如何实现 M。

  2. The 存储库 http://martinfowler.com/eaaCatalog/repository.html模式是实现 M 的持久性部分的一种方法。活动记录 http://www.martinfowler.com/eaaCatalog/activeRecord.html是另一个。选择哪种模式取决于应用程序的复杂性和您的偏好。

    看一眼Step 3 http://nerddinnerbook.s3.amazonaws.com/Part3.htmNerdDinner 教程的一部分,他们使用 Linq to SQL 创建一个简单的存储库。

  3. Linq to SQL 不会消亡。微软仍将改进核心并在有意义的地方添加客户请求,但实体框架将是主要焦点。看一下这篇文章.NET 4.0 中的 LINQ to SQL 更改 http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40.

    EF 的使用方式与 LINQ to SQL 类似,但它也更灵活,因此可以以其他方式使用。例如,EF4 将或多或少地支持您自己的 POCO 对象在更多领域驱动设计中的持久性。

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

我需要一些关于 MVC 架构和三层架构的澄清 的相关文章

  • 具有条件连接和非匿名返回的 LINQ 查询

    我有一个针对 SQL Server 数据库的 LINQ 查询 该查询将每行的数据写入一个对象Person 在某些情况下 我想加入其他表并添加更多字段Person对象 同时利用 LINQ 延迟加载 The Person类看起来像这样 publ
  • 从 ApiController 中的 json 序列化中排除属性

    我试图在 Web ApiControllers 中排除属性被序列化为 JSON 我已经验证了以下 2 个场景的工作原理 我已在我希望排除的属性中包含以下属性 System Web Script Serialization ScriptIgn
  • ASP.NET MVC 站点中的覆盖视图不起作用

    我的解决方案中有一个单独的项目 其中包含一些控制器和编译的视图 我将这些控制器用作 MVC 应用程序中其他控制器的基类 并使用 RazorGenerator 编译视图 可以说B是具有非抽象操作方法的基本控制器一些动作返回视图 MyView
  • Razor C# - 从数据库获取数据

    我正在使用 WebMatrix 我创建了一个数据库并放置了一个包含几行数据的表 我可以连接到它并获取数据WebGrid 但它只提供了一种使用表格输出数据的方法 这是我的 shows cshtml 代码 var db Database Ope
  • vuejs 模板和 asp.net 部分视图,好的做法吗?

    我在网站中使用 Vue js 并将模板添加到 html 代码中 并将 js 代码添加到单个 js 文件中 所以我不想使用 vue Vuefy Browserfy 方法 而是稍后捆绑并缩小我的 js 文件 由于我必须使用 Asp Net MV
  • 刷新/重新加载 ASP.net 的副作用?

    我在 Web 和 ASP Net 开发方面相对较新 所以请耐心等待 在测试我们的网页的过程中 我注意到 如果用户单击 刷新 重新加载 并在 重新发送信息 对话框提示时单击 重试 则无论用户选择之前触发的最后一个事件如何到 刷新 随后将再次被
  • MVC 3 布局页面、Razor 模板和 DropdownList

    我想在我的网站的所有页面上包含年份的下拉列表 我认为放置此逻辑的好地方是布局页面 layout cshtml 如果用户更改年份 我想更改我的年份会话 ModelBinder 也进行更改 这对于 ASP NET Web 表单来说很容易做到 但
  • ASP.NET MVC 3 中嵌入的 PHP 站点的 IgnoreRoute

    我有一个带有嵌入式 WordPress 博客的 MVC 3 网站 以下所有 url 均通过 MVC 定向 www mysite com www mysite com aboutus www mysite com contactus 我还有一
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • IIS Express 安装目录在哪里?

    我最近开始了一个 ASP NET 教程 我想测试我用 WebMatrix 制作的页面 然而 有一个错误 Web 服务器配置为不列出该目录的内容 因此 它建议启用目录浏览并转到 IIS Express 安装目录并运行命令 那么它到底位于哪里呢
  • 如何进入system.web.mvc

    有谁知道我如何进入system web mvc 我收到隐藏在 System Web Mvc DefaultModelBinder CreateModel 方法中的错误 无法创建抽象类 并且我无法判断代码的哪一部分导致了问题 有人建议我可以从
  • 从 asp.net mvc ajax 调用 wcf

    我有两个应用程序 第一个是 WCF 服务 第二个是 asp net MVC 3 应用程序 在 WCF 应用程序中我有一个界面 ServiceContract public interface IService1 OperationContr
  • ASMX相当于Page_Init?

    我有一些代码想要在调用 ASMX 函数的生命周期的早期执行 对于我们的 ASPX 页面 此代码位于基类的 Page Init 函数中 我们所有的 ASPX 页面都继承自该基类 ASMX 是否有相当于 ASPX 的 Page Init 函数
  • 如何在 asp.net 文本框中保留前导空格

    我有一个文本框 Web 控件 它会自动修剪其内容中的任何前导空格 因此当我收到文本时 它与用户最初编写的内容不同 如果他输入了前导空格 有没有办法禁用这个功能 好吧 只有一种解决方案可以覆盖默认行为 那就是编写一个 javascript 函
  • Linq 查询可以从 Sql 数据库检索 BLOB 吗?

    Linq 查询可以从 Sql 数据库检索 BLOB 吗 他们是怎么出来的 LINQ To SQL 类为 SQL Server 中的所有二进制和 varbinary 字段创建 System Data Linq Binary 类型的属性 Bin
  • 在静态类中存储连接 (ASP.NET)

    由于我使用的是 Postgresql 并且无法使用 LINQ to SQL 因此我编写了自己的包装器类 这是学生课程的一部分 public class Student User private static NpgsqlConnection
  • ASP.NET MVC 4 Web Api 和 REST 经典服务之间的区别

    我看到了ASP Net MVC4 WebApi将服务公开为 Rest 服务 但实际上和正常有什么区别Rest and ASP Net MVC4 WebApi 我不确定你的意思normal Rest REST http en wikipedi
  • ASP.NET Web 应用程序中的身份验证遇到问题

    我正在尝试对从登录页面登录我的 Web 应用程序的用户进行身份验证 我正在使用本教程 http support microsoft com kb 301240作为指南 它几乎准确地解释了我希望做什么 但是当我输入用户名和密码时 验证不起作用
  • 请求挂在 IIS 7.5 上的会话模块上

    有时 我网站上的一些请求开始挂在 Session 模块的 RequestAcquireState 状态上 当螺旋开始时 所有请求都会超时 我们需要在受影响的服务器上重新启动 IIS 我进行了很多调查 得到的唯一结论是 当应用程序尝试访问存储
  • 表单帖子上的 asp.net mvc 编码

    我在我的 asp net mvc 表单 带有文本区域的 nicedit 中使用富文本编辑器 当我在帖子上提交表单时 因为它不是 html 编码的 我收到以下消息 从客户端检测到潜在危险的 Request Form 值 如何对 post 上的

随机推荐

  • 在更改图像资源时在 ImageView 上创建动画

    我只有一个ImageView在我的布局中 当检测到气体事件时 我正在更改其资源 我只想在更改 ImageView 资源时显示动画 我可以用吗ViewFlipper with one图像视图 对于单个图像视图 您可以使用此辅助函数 publi
  • Pandas:如何将某些列移动到行中?

    假设我有df以下 我想合并价格列和价值列 以便所有价格都在一个列中 所有数量都在另一列中 我还想要第三列来确定价格水平 例如 unit1 unit2 and unit3 import numpy as np import pandas as
  • Numpy:ValueError:所需数组的对象深度太小

    我正在尝试将 MATLAB 代码转换为 Python 但我不知道如何将此行导入到 Python YDFA xa p interp1 data 1 data 2 YDFA lam p 1e9 linear 1e 24 现在对于 Python
  • 将文本列表格式化为列

    我正在尝试将字符串值列表输出为 2 列格式 将字符串列表制作为 普通文本 的标准方法是使用字符串连接方法 但是 它只需要 2 个参数 因此我只能使用 n 创建一个列 我认为尝试创建一个循环 只需在列之间添加一个选项卡就可以做到这一点 但逻辑
  • 如何在sbt项目中声明对Scalding的依赖?

    我想弄清楚如何创建一个build sbt为我自己的文件Scalding https github com twitter scalding为基础的项目 烫源结构无build sbt文件 相反 它有project Build scala构建定
  • 无法安装Python和GDAL(DLL加载失败)

    我正在尝试在我的 Windows 7 工作站上安装 GDAL 和 Python Python 版本 2 6 6 Gdal 1 8 视觉 Visual C Studio 2010 Express 我按照以下说明进行操作http ucsb pb
  • 欺骗 IP 地址以使用 Sitecore 8 测试 GEOIP 查找

    我是 Sitecore 的新手 我正在尝试实现以下流程类来覆盖GeoIP用于测试目的的值 我找不到在哪个名称空间Tracker 类位于 请注意 我正在使用站点核心 8托管在本地主机上 Sitecore 博客 sitecorejohn 博客
  • 通过 Python winreg 在注册表中设置 Windows 系统路径

    我编写了一个程序 通过注册表将目录添加到 PATH 变量 HKCU 用户 或 HKLM 系统 路径 具体取决于输入选项 使用用户路径时效果很好 但是 当设置系统路径时 Windows 会认为路径变量为空 例如 notepad is not
  • 无法重现:C++ Vector 性能优于 C# List 性能

    在 Microsoft 的 BUILD 会议上 Herb Sutter 解释说 C 有 真实数组 而 C Java 语言没有相同或类似的东西 我被卖了 您可以在这里观看完整的演讲http channel9 msdn com Events B
  • SimpMessagingTemplate 与 MessageSendingOperations

    我刚刚开始研究 Spring 4 stomp over websocket 这两者有什么区别 我应该使用哪种情况而不是另一种情况 没有区别 MessageSendingOperations是一个接口 契约 SimpMessagingTemp
  • .NET 反射的成本有多高?

    我经常听说反射的使用有多么糟糕 虽然我通常会避免反思 并且很少发现没有反思就无法解决问题的情况 但我想知道 对于那些在应用程序中使用反射的人来说 您是否测量过性能影响 它真的有那么糟糕吗 在他的演讲中日常事物的表现 http weblogs
  • 在回流中,我如何从asp.net web api获取数据

    我正在使用reactjs的回流 从Store的回流动作中 我编写了一个动作来从asp net web api获取数据 我认为这只是获取使用ajax的数据的唯一方法 有人跟我说 我可以使用插件jquery获取数据 但我不这样做不要相信它 因为
  • 如何使用selenium python动态单击加载按钮?

    我想点击装载更多直到它消失在该页面上 我已经尝试过 但有时会起作用或出现错误 我所做的并不是完美的解决方案 我可以有列表中的多个 url并一一击打装载更多直到它从该页面消失 预先感谢您的帮助 Code driver webdriver Fi
  • FormsAuthenticationTicket 无法在服务器端失效。引发cookie回复攻击

    我有一个使用表单成员身份验证的 ASP NET Web 应用程序 我们最近进行了渗透测试 发现的一个问题是窃取用户帐户的能力 如果在注销之前从用户复制了 ASPXAUTH cookie 值 则用户可以以其他用户身份登录 编辑其 cookie
  • Scrapy 1.1.0 - 没有活动项目

    我是Python新手 成功安装了Scrapy 在eclipse中使用PyDev 当我运行程序时 它显示如下 如图所示 我正在运行这段代码 import scrapy class DmozSpider scrapy Spider name d
  • 修复 html 中未封闭的标签或使用 HTML 解析器进行解析以进行 XSLT 转换

    我有一些 HTML 代码 它们是 XSLT 转换的结果 XML gt HTML 我想对结果 HTML 运行另一个 XSLT 转换 HTML gt HTML 我的问题是 第一次转换可能会返回未封闭的标签 例如 img 这意味着我无法使用 Do
  • 在 Twitter 完成块中推送 UIViewController 需要大量时间

    当运行这段代码时 IBAction loginWithTwitter id sender NSLog Logging in with twitter ACAccountStore accountStore ACAccountStore al
  • 使用 jquery 获取 div 中的下一个元素

    假设我们有这个 html 代码 div h2 Title h2 p lorem ipsum p div 还有这个 jQuery test h2 text Changed Title 现在继续下去的正确方法是什么 p 并且还可以更改其文本 而
  • 无法为华为 Android Logcat 启用 DEBUG 和 VERBOSE

    我有华为nova Plus http consumer huawei com en mobile phones novaplus index htm我刚刚发现华为在其Android日志中只显示起始日志级别INFO 我当然需要DEBUG VE
  • 我需要一些关于 MVC 架构和三层架构的澄清

    我一直在读 Pro ASP NET MVC Framework 一书 我对很多事情感到非常困惑 我一直在尝试做一些研究 但我发现有这么多不同的方法和概念向我抛出 这只会让事情变得更糟 所以我有几个问题 我知道 MVC 应该将功能分为三个主要