MVC是编写asp.net应用程序的最佳方式吗?

问题描述:

更新:我知道没有最好的办法来做任何事情。对不起,没有说这一点。在数据访问教程的上下文中,如果您必须执行他在该教程中所做的项目,那么如果您必须选择其中的一个,您会使用MVC吗?MVC是编写asp.net应用程序的最佳方式吗?

更新:是MVC更合适的方式来编写asp.net应用程序,而不是在这里找到教程:

http://www.asp.net/Learn/data-access/

原文:

我问,因为我最初通过Java应用程序学习了MVC,然后学习了RoR和Django。这些其他项目和公司都认为MVC已经存在了很长一段时间,并且从我发现的情况来看。然后微软开始将MVC放入.net框架中。

我问,因为我不知道如何设计的东西很好,并认为我很好地模仿了Scott Mitchell的教程在asp.net网站上的内容。我认为在BLL中创建抽象层是我发现MVC和现在的asp.net MVC的方法。

我真的不知道“正确”的做法是什么。我只是创造我需要的东西,但我不禁感到我缺少一些东西。

MVC是在大型项目中开始做事的正确方法,具体来说我的意思是MVC和ASP.NET,但也意味着PHP和他们的MVC框架之一。

我想解决一个标准的做事方式......现在无论如何。

而出于好奇,为什么微软现在才开始做MVC?

更新: MVC比当前在asp.net上设置的教程更好吗?

我指的是Scott Mitchell教程,他在那里创建了抽象BLL。或者这也是一个linq问题。我应该说,我理解需要保持逻辑和表达分离,但不确定最好的方式。我正在使用asp.net教程。它运行良好。然后,我发现世界其他地方,正如我看到的那样,正在使用MVC。然后微软开始开发MVC,所以对我来说,另一种方法似乎已经过时并且是错误的做法。

不,它不是唯一最好的办法。

MVC只是一种设计模式。所有设计模式的目标都很简单。所以只要它让你的设计更简单,就随它吧。如果它使事情对于特定应用程序更复杂,请尝试不同的方法。

不幸的是,有些人认为如果他们看到一种模式,他们应该使用它。这是不正确的。设计模式本身并不会使您的应用程序更好。他们不是目的。他们是达到目的的手段(这很简单)。所以你应该只在他们值得的时候才使用它们。

在我看来,没有一个好理由的过度架构的东西比编写没有任何特定设计的代码更糟糕。

编辑:关于ASP.NET MVC:我对ASP.NET Web窗体有负面的个人偏见。在MVC之前,我通过编写自定义处理程序对HTML进行细粒度控制,从而完成了高级项目的大部分动态方面。 Web Forms使Web开发变得非常简单,但他们特别有一些很好但有时有问题的事情。其中第一个是ViewState,第二个是复杂的WebControl体系结构。不要误解我的意思。这些都是ASP.NET的辉煌迹象。我还没有看到像ASP.NET Web Forms一样简单的Web开发平台,这只是因为WebControl支持需要ViewState。但是,在某些项目中,您希望对呈现的HTML进行精确控制(特别是当您有一些客户端逻辑时)。您还希望在大型项目中维护服务器端代码。在这些领域,ASP.NET MVC真的很闪耀。但是我认为ASP.NET Web Forms将会是一个更适用的优秀技术。毕竟,正如我所说的一般设计模式,您应该仔细评估您的设计,以查看哪一个更适合您的需求。

具体而言,关于数据访问,MVC通常比Web Forms对应的代码需要更多的代码。为了呈现表格数据(即GridView适用),我认为ASP.NET Web Forms是完成任务的更简单的方法。但是,大多数数据驱动的Web应用程序不仅仅是直接在数据库中操作表。他们有复杂的布局。 *就是一个很好的例子。这当然是数据驱动的,但ASP.NET MVC更适合它。

MVC只是一种处事方式。我喜欢它,因为它有助于提高可扩展性,并且允许测试和代码重用。没有银弹,一种真正的做法,但我经常使用它。

关于微软,我会说他们采用了这种模式作为WebForms开发的替代方法,这是因为我上面提到的原因。我会建议看看Rob Conery's MVC Storefront以及各种实例来看看它是如何工作的。

没有“正确”的方式去做事情而不知道“事情”是什么。 MVC是一个design pattern,它解决了一个特定的常见问题 - 表示和领域逻辑的分离。每种设计模式都是针对特定问题的普遍接受的“良好”解决方案。

这些解决方案与知识和经验相结合是优秀设计的基石。做事的“正确”方式是研究您的问题领域,研究可能的解决方案并应用最适合解决问题的解决方案。犯错误也是这个过程的一部分,所以不要害怕尝试,然后严谨地对待,直到你达到最好的解决方案。

MVC是开发应用程序的最糟糕的方法,除了所有其他尝试过的方法。 :-)

开玩笑说,MVC是一种鼓励我们不写意大利面代码的应用程序设计。这是一条指引,提醒我们将业务代码与演示代码分开。随着应用程序变得越来越复杂,这非常有用。

还有其他的变化,实现同样的好处,但不是严格相同的MVC。 Presentation-abstraction-control(PAC)就是一个例子。至于为什么微软采用MVC这么晚了,我并不感到惊讶。他们非常知名(至少在最近几年)是因为保守而不是创新。他们更愿意让其他小公司在未经证实的市场中冒险,然后从错误中吸取经验教训,制造出过度工程化的竞争对手解决方案,并通过市场营销主导。

示例:Microsoft Internet Explorer被认为是浏览器市场的后来者。 Netscape已经非常流行,为人们提供查看HTML的平台提供了方式。一旦互联网上的HTML内容数量达到了有用的水平,微软就会大量使用它们的拟声词“IE”产品,并迅速占据绝对的市场份额。

+0

我认为你有倒退; webforms设计是不同的,未经证实的。 MVC最初是在Xerox PARC为Alto的GUI定义的,几乎可以在任何地方找到。 – 2009-01-08 18:54:48

+0

WebForms是Visual Basic 1到6/VBA的概念性克隆和后继。微软最初从Alan Cooper手中收购。 – dkretz 2009-01-08 19:43:15

没有“最好”的方式来编码的东西。这取决于有问题的应用程序;有时MVC是正确的选择,有时不是。一个良好的开发是能够衡量他/她的选择,选择一个最好适合于手上的工作,而不是只与方法去大谈特谈

如果MVC解决了管理的主要技术势在必行在您的应用程序中的复杂性,那么它可能是一个很好的解决方案,但它绝不是唯一的解决方案。

MVC是任何设计模式之一。无论是最好的技术,还是最简单的,或者适合哪种类型的项目,都是有争议的(参见其他SO线程)。无论如何,很少有人会反对普遍的共识,即在大多数情况下,它是“够好的”。

但它有不可否认的好处,很多人在很多不同的平台上使用它。

所以,如果你想使用一种方法,可能会在一段时间;或者你不想依靠一个供应商来支持和扩展和改进;或者你在一个小组中工作,他们希望通过聘请来自不同背景的人来快速培养一种共享的方法;或者如果需要的话,您希望最大化机会继续前进,那么MVC是支持这些目标的最佳途径之一。

+0

这是一种好处吗? “goto”也是如此。 – 2009-01-08 19:39:11

MVC为“较好”或“较差”模式与项目有关。