具体而言,在ASP.NET MVC中,控制器操作返回一个视图,是否创建该视图?在MVC中,控制器不会创建视图或与其进行通信。将ASP.NET MVC称为MVC实现有多准确?或者,什么名字更准确?
我认为Ruby on Rails启发了微软创建asp.net MVC。
ASP.NET MVC简单地说就是微软承认了诸如Ruby on Rails和Django等Web框架中MVC实现的成功。它意识到许多Web开发人员希望更加亲身参与Web开发,采用“基于约定而非配置”的编程模型(惯例高于配置),并远离ASP.NET WebForms提供的有状态抽象。
它是否完全实现了Smalltalk MVC模式?不是。它是因为恐慌而产生的结果吗?不是。它是Ruby on Rails和Django的成功的结果吗?是的。
我喜欢这个模型,因为它既拥抱了.NET和ASP.NET堆栈提供的丰富框架,同时在方法上保持了极简主义,使用基于约定的开发方式。
足够接近,这是一种销售策略。
他们将ASP.NET与自称为MVC的其他技术进行比较销售。因此,将其命名为同一类别对于竞争非常有用。
微软更多地通过产品定位而非准确的技术识别来获胜。(在我看来还有长期交付。)
ScottGu在他的第一篇关于MVC演示的博客文章中提到了答案。简单来说,是因为有人要求并且微软决定采用它。这符合当前.Net模型尽可能添加更多选项的趋势,使框架能够覆盖更广泛的目标市场,并为开发人员提供适用于不同项目的正确工具。
ASP.NET MVC 实现的 MVC 不是旧有的 MVC 模式。在我所谓的 "经典" MVC 中,View 直接但只读地访问 Model,在 ASP.NET MVC 中,直接从 View 访问业务模型被认为是不好的做法。最终你得到的是非常类似于 Supervising Controller + Passive View 的东西:
public class MvcExampleController : Controller
{
public ActionResult ActionMethod(BoundInputData inputData)
{
var results = DoActualWorkInTheModelWith(inputData);
var viewModel = CreateViewModelFromThe(results);
return View(viewModel);
}
}
最好的猜测,每个人都听说过MVC。 MVC已经成为“最佳实践”已经有一段时间了,因此整整一代(或两代,三代)开发人员看到MVC并想到快乐的事情。
此外,许多其他框架也以类似的方式宣扬MVC,因此微软可能感到有必要这样做。
简而言之,我非常怀疑这里有强有力的技术原因。
你可以使用当前的ASP.NET框架自己编写MVC,并仍然保持postback模型。
http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx
这是一个很好的问题,在MVC早期,很多人都问过这个问题。以下是项目主要开发者之一Phil Haack的答案!
http://haacked.com/archive/0001/01/01/everything-you-wanted-to-know-about-mvc-and-mvp-but.aspx
看看这个,阅读链接,然后展开。
另外,也许对于这场辩论的答案是 S#arp Architecture。他们在MVC上构建了一个层,使其更像MVP。如果您正在寻找类似的解决方案,请查看它们。
祝你好运!
我认为这更像是一种“恐慌营销决策”,而不是技术决策。RoR每秒钟都在窃取市场,微软完全惊慌失措,因此微软觉得他们必须提供一些东西,让他们有机会重新获得一些炒作的声音...
此外,他们需要帮助他们的开发人员再次获得自尊心,通过将这个炒作的词与自己联系起来,以便.Net开发人员可以再次自豪地看着镜子,而不会因为他们的选择平台没有为他们提供这种模式(开箱即用)而感到羞愧。
对于一个中等水平的(.Net)开发人员来说,当一个中等水平的RoR开发人员启动rake并在不到15分钟内创建一个工作和运行的概念证明时,很难不感觉自己像一只恐龙,而.Net开发人员甚至还没完成启动vstudio.exe... ;)
我想这是一个有争议的立场,但这是我的立场,我会坚持到底... ;)
今天有无数例子证明,MVC和脚手架确实可以给你一个初始速度提升。但是就可维护性、代码重用、封装性以及几乎每个真正重要的事情而言,MVC并不是万能的解决方案,大多数情况下WebForms在长期使用中更为优越(除非当然像厕纸一样被使用)。