MVC 的替代方案是什么?

2024-02-29

似乎我正在进行的每个项目都使用模型视图控制器架构,这就是我滚动自己的项目的方式。还有其他选择吗?否则如何创建一个具有持久存储和用户界面的应用程序呢?


MVC http://en.wikipedia.org/wiki/Model-view-controller已经存在了一段时间了。这是经过时间考验和证明的pattern http://en.wikipedia.org/wiki/Design_Pattern。许多框架利用MVC模式 http://en.wikipedia.org/wiki/Model-view-controller#Implementations_of_MVC_as_web-based_frameworks。 Martin Fowler 将 MVC 解构为:监制主持人 http://martinfowler.com/eaaDev/SupervisingPresenter.html and 被动观点 http://martinfowler.com/eaaDev/PassiveScreen.html.

建筑师克里斯托弗·亚历山大 http://en.wikipedia.org/wiki/Christopher_Alexander说得最好:

每个模式描述一个问题 一次又一次地发生在我们的 环境,然后描述 解决该问题的核心, 以这样的方式你可以使用这个 解决方案一百万次以上,无需 曾经以同样的方式做过两次。

我不确定您为什么要从 MVC 迁移。您是否遇到了 MVC 无法解决的问题?到给你更好的答案我们需要更多地了解您的情况问题域.

考虑时要考虑的事项模式/架构:如果你正在构建一些东西Myspace http://www.myspace.com/类型架构您将需要一个健壮的架构(MVC)。如果您通过网络创建一个简单的 CRUD 界面 - 几乎任何东西都可以。

对于不是 MVC 的 .Net Web 表单(我假设是 Web,因为您没有说厚客户端或 Web 客户端),维护它们是一场噩梦。寿命超过几年的 Web 表单应用程序往往会变得大泥球 http://www.laputan.org/mud/。即使如此,开发人员也发现了使用方法带有 Web 表单的 MVC https://stackoverflow.com/questions/664446/mvp-on-asp-net-webforms.

具有讽刺意味的是,ASP.NET Web 表单中缺乏 MVC 架构是导致开发的主要抱怨之一ASP.Net MVC 框架 http://www.asp.net/mvc/.

根据经验,如果您不使用某种 MVCesk 方法,您的解决方案将变得难以维护且臃肿。这些应用程序将慢慢痛苦地死去。

如果您的解决方案是一次性的小型项目,那么无论如何都要将一些东西组合在一起。哎呀,有一些工具可以生成从屏幕到数据访问层的所有内容。任何能完成工作的事情。

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

MVC 的替代方案是什么? 的相关文章

  • 在应用程序中搜索对象的设计模式

    需要一些有关设计模式的帮助 我正在创建一个应用程序 该应用程序在存储在单独表中的数据库中的对象上具有不同类型 例如 我有 5 种对象 A B C D E 我在数据库中有 5 个不同的表来存储每个对象 现在 我想在我的应用程序中实现搜索功能
  • 验证日期 - Bean 验证注释 - 使用特定格式

    我想验证日期格式YYYY MM DD hh mm ss Past validates for a date that is present or past But what are the formats it accepts 如果那不可能
  • 我应该如何创建模型类来调用API(使用MVC模式)?

    目前我正在调用一个APIviewcontroller但这本身并不是 MVC 的良好编程实践 这是我的代码 void fetchData NSMutableURLRequest request NSMutableURLRequest allo
  • 多级QTreeView

    我很难理解如何使用 QTreeView 和 QStandardItemModel 设置多级 QTree 这是我所拥有的 from PySide QtGui import import sys class MainFrame QWidget
  • 方法链接的优点和缺点以及用对象本身替换所有 void 返回参数的可能性

    我最感兴趣的是Java 但我认为这是一个普遍的问题 最近我一直在使用 Arquillian 框架 ShrinkWrap 使用了大量的方法链 方法链的其他示例是以下方法StringBuilder StringBuffer 使用这种方法有明显的
  • C# 数据库包装设计

    我正在为 C 设计一个数据库包装器 以下是我有两个选择 选项A class DBWrapper IDisposable private SqlConnection sqlConn public DBWrapper sqlConn new S
  • Cakephp:将 AppController 抽象到另一个层次,可能吗?

    我想知道是否可以在 AppController 和我的应用程序的其他控制器之间添加另一个抽象控制器 这样我的控制器 例如UsersController 扩展了 SecureController SecureController 扩展了 Ap
  • 如何使PHP库松耦合? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 复制粘贴编码是否可以接受?

    人们普遍认为复制和粘贴编程是一个坏主意 但是处理两个函数或代码块确实需要的情况的最佳方法是什么 do只需要在几个方面有所不同就会使概括它们变得极其混乱 如果除了一些细微的变化之外 代码基本上是相同的 但这些细微的变化并不容易通过添加参数 模
  • 独立于符号的字符串的模式匹配

    我需要一种算法 可以在数据中找到预定义的模式 以字符串的形式存在 独立于数据和模式的实际符号 字符 我只关心符号之间的关系 而不关心符号本身 数据中的同一符号具有不同的模式符号也是合法的 模式匹配算法必须强制执行的唯一一件事是保留模式中同一
  • 插件架构中的反射与属性

    我正在开发一个在启动时从子目录加载插件的应用程序 目前我正在通过使用反射来迭代每个程序集的类型并查找实现 IPluginModule 接口的公共类来实现此目的 由于反射涉及性能影响 并且我预计一段时间后会有多个插件 我想知道定义在程序集级别
  • SQL Server T-SQL 中的 REGEXP_LIKE 转换

    我在一份需要转换为 SQL Server 的旧报告中遇到了这一行 REGEXP LIKE examCodes learner code examCodes 是源 learner code 是模式 我知道 SQL Server 没有 REGE
  • 为什么要分离接口和实现?

    在生产代码中 我经常看到定义如下的类 public interface SomeComponent Some methods public class SomeComponentImpl implements SomeComponent S
  • C# 带有泛型的异常继承语法

    我在 NHibernate 类定义中偶然发现了这一点 public class SQLiteConfiguration PersistenceConfiguration
  • 如何在无 null 设计中实现 List、Set 和 Map?

    当您在大多数情况下可以返回 null 空对象以避免 null 时 这很好 但是像 Collection 这样的对象呢 在爪哇 Map回报null if key in get key 地图上没有找到 我能想到的最好的避免方法null在这种情况
  • 服务层或存储库中的密码哈希等?

    作为 MVC 的最佳实践 在发送到数据库之前处理密码散列 加盐或数据格式化等事务的逻辑应该放在哪里 我读到存储库应该仅用于处理数据访问的逻辑 这是属于服务层的东西吗 控制器 这还重要吗 我倾向于将散列放在存储库层中 如果只是出于实际原因 即
  • 将模型从一个动作传递到同一控制器中的另一动作

    我正在尝试通过我的模型List 语句列表从一个操作到另一个操作 但我在第二个控制器中收到空值 请提出这里有什么问题 甚至尝试过 return RedirectToAction WriteInTemplate new statementLis
  • 数据库、表和列命名约定? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我设计数据库时 我总是想知道是否有命名数据库中项目的最佳方法 我经常问自己以下问题 表名应该是复数吗 列名应该是单数吗 我应该为表或列添加前
  • 在 asp.net MVC 控制器中调用异步外部 Web 服务

    在 Asp net MVC 控制器 GET 方法 中 我调用外部 Web 服务 用于 IP 地理定位 返回 IP 位置的 json 数据 如何使调用异步 以便堆栈可以在等待服务响应时继续 当 GEO IP 请求完成后 我希望能够更新数据库
  • “if”在 ASP.NET MVC View (.aspx) 文件中被认为有害?

    我记得看到一个博客 或其他内容 说你不应该在 ASP NET MVC 的 aspx 文件中使用 但我不记得它说的替代方案是什么 有人记得看过这个并指出我吗 基本上 这意味着您的视图中不应该有大量的 if 语句 您的控制器和视图模型应该能够处

随机推荐

  • 使用更改 django 模板中表单字段的名称属性

    我有表单字段 表单 项目 这将呈现为
  • 数据类型映射参数中的键只能使用列名

    我已经使用 dask read sql table 从 Oracle 数据库成功引入了一张表 但是 当我尝试引入另一个表时 出现此错误KeyError 只有列名可以用作数据类型映射参数中的键 我已经检查了我的连接字符串和架构 所有这些都很好
  • 转换为日期格式 dd/mm/yyyy

    我有以下日期 2010 04 19 18 31 27 我想将此日期转换为日 月 年 format 您可以使用正则表达式或一些手动字符串摆弄 但我想我更喜欢 date d m Y strtotime str
  • keras自定义损失纯python(没有keras后端)

    我目前正在编写一个用于图像压缩的自动编码器 我想使用用纯 python 编写的自定义损失函数 即不使用 keras 后端函数 这是否可能 如果可能的话 如何实现 如果可能的话 我将非常感谢您提供一个最小工作示例 MWE 请查看这个 MWE
  • AWS CloudFormation:在嵌套堆栈之间传递值

    更多 AWS 问题 好的 我们的想法是一个主模板调用所有嵌套堆栈 在此处的帮助下 我弄清楚了如何将参数从主服务器传递到嵌套堆栈 现在我试图弄清楚如何将值从嵌套堆栈传递到嵌套堆栈 我认为这应该通过出口和进口来完成 但我认为我的做法不太正确 我
  • Cesium JS 椭球切平面计算

    Problem 我对铯如何计算大地测量和地心表面法线有点困惑 根据计算法线生成的平面实际上并不与给定点的椭球面相切 而且 根据大地表面法线创建的平面与根据地心表面法线生成的平面完全相同 示例以及为什么我需要这个 In this 沙堡 htt
  • 使用关键字参数 end=' ' 获取 print 的语法错误

    我有这个 python 脚本需要运行gdal retile py 但我在这一行得到一个例外 if Verbose print Building internam Index for d tile s len inputTiles end T
  • Oracle 的 DBMS_ASSERT 的 Sql Server 等效项是什么?

    数据库管理系统 断言是Oracle中防止SQL注入攻击的关键之一 我尝试了粗略搜索 是否有 SQL Server 2005 2008 等效于此功能 我正在寻找一个特定的实现 它具有 DBMS ASSERT 的所有相应 Oracle 包成员的
  • 如何使用 symfony dom 爬虫将 html 表解析为数组

    我有 html 表 我想从该表创建数组 html table tr td satu td td dua td tr tr td tiga td td empat td tr table 我的数组必须是这样的 array array satu
  • SAPI 或(文本到语音)的同步问题....... C#

    我正在开发一个项目 它将讲述浏览网页的内容 浏览器是我使用 WebControl 制作的 我正在使用 SAPI 作为语音引擎 我想在通过 SpVoice speak 阅读该内容时突出显示网页中的该行 但问题是 如果我以异步方式使用此发言方法
  • 对于已授予所有权限的用户,CREATE 命令被拒绝

    我正在尝试设置 MySQL 复制从属服务器 但运行起来非常困难LOAD DATA FROM MASTER 是的 我知道它已被弃用 但我正在运行 MySQL 5 1 目前这不是我的问题 由于某种原因 MySQL 不断告诉我CREATE命令被拒
  • 如何从 R apply 函数访问全局/外部范围变量?

    我似乎无法使 apply 函数访问 修改在外部声明的变量 给出了什么 x data frame age c 11 12 13 weight c 100 105 110 x testme lt function df i lt 0 apply
  • “类模板已被声明为非类模板”

    嘿我明白了当我离开时出现奇怪的错误namespace sf 后面代码中的声明 1 gt c libraries and headers sfml sfml 1 6 sdk windows vc2008 sfml 1 6 include sf
  • 如何设置本地文件的背景图片url?

    我想将相对图像 url 粘贴到 div 以将其设置为背景图像 不幸的是 div 不会渲染图像 所以这工作正常并渲染图像 img src assets images HeroImg jpg 但这个没有 div style background
  • 如何使用 Angular 2 路由器重新加载当前路由

    我正在使用 Angular 2hashlocation战略 该组件通过该路由加载 departments id employees 到目前为止还好 在成功批量保存多个已编辑的表行后 我想通过以下方式重新加载当前路由 URL this rou
  • 为没有 Cydia 的越狱 iPhone 分发未签名的应用程序 iPhone

    我正在尝试通过 itms services 协议为没有 CYDIA 的越狱设备分发未签名的 ipa 我浏览了有关如何为 cydia 创建未签名应用程序的指南 http www alexwhittemore com developing ja
  • 没有 async void 的即发即忘

    我有三种方法 其中第一个结果将在接下来的两个方法中使用 并且预计不会返回任何数据 result await DataAccess Query param Query await DataAccess Create result await
  • 关于 Oracle 12c 中的用户

    我的系统上安装了 Oracle 12c 数据库 我有一个需要访问数据库的应用程序 以前在Oracle 11g中 我使用以下命令来创建用户 create user name identified by name grant connect c
  • 使用 HealthKit 后台传递检索步骤后,在后台将数据写入 Firebase

    我有一个HKObserverQuery设置在后台获取步骤 enableBackgroundDelivery方法被调用在application didFinishLaunchingWithOptions 这些步骤是在后台检索的 但我还想将检索
  • MVC 的替代方案是什么?

    似乎我正在进行的每个项目都使用模型视图控制器架构 这就是我滚动自己的项目的方式 还有其他选择吗 否则如何创建一个具有持久存储和用户界面的应用程序呢 MVC http en wikipedia org wiki Model view cont