ASP.NET MVC与Web客户端软件工厂(WCSF)

ASP.NET MVC与Web客户端软件工厂(WCSF)

ASP.NET MVC vs. Web client software factory (WCSF)

我最近一直在对不同类型的Model View架构进行一些调查,因此需要决定为将来的内部开发选择哪种架构。因为我目前在一家拥有ASP.NET技能的Microsoft商店中工作,看来我的选择介于ASP.NET MVC和WCSF之间(Monorail可能不适用,因为Microsoft不会支持它。)

在使用WCSF作为标准阅读ASP.NET MVC框架之后,我总结了以下几点:

  • ASP.NET MVC不能使用依赖回发的Web控件,而WCSF可以。
  • 与WCSF网站相比,您可以更好地控制ASP.NET MVC网站中的URL。
  • 与等效的WCSF版本相比,ASP.NET MVC站点可能更易于测试。
  • 在某些情况下,WCSF似乎仍使用背后的代码来控制UI事件,但是ASP.NET MVC不允许这样做。

还有哪些其他注意事项?
我误会了什么?
有没有人同时使用过这两种框架并提出了建议?


ASP.NET MVC cannot use web controls that rely on postbacks, whereas WCSF can.

您应该将WCSF视为有关如何使用现有WebForms基础结构的指南,尤其是引入Model-View-Presenter来帮助实现关注点分离。它还增加了所得代码的可测试性。

You have more control over the urls in an ASP.NET MVC site as opposed to a WCSF site.

如果可以以3.5 SP1为目标,则可以将新的"路由"系统与传统的WebForms站点一起使用。路由不限于MVC。例如,看一下动态数据(它也随3.5 SP1一起提供)。

An ASP.NET MVC site will probably be easier to test than an equivalent WCSF version.

这是正确的,因为它为HttpContext,HttpRequest,HttpResponse等使用了新的抽象类。与MVP模式相比,MVC模式在本质上没有什么可测试的。它们都是"分离表示"的实例,并且都提高了可测试性。

It seems that the WCSF still uses the code behind to control UI events under some circumstances, but ASP.NET doesn't allow this.

在Model-View-Presenter中,由于外界与视图进行交互(即,URL指向视图),因此视图自然会响应这些事件。通过调用演示者或提供演示者可以订阅的事件,它们应尽可能简单。

Model-View-Controller通过让外部世界与控制器交互来克服此限制。这意味着您对非表示事物的看法可能会很多。

至于您应该使用哪一种,我认为答案取决于哪种最适合您的项目目标。有时,WebForms和丰富的第三方控件供应商的可用性将是更可取的,并且在某些情况下,原始的简单性和细粒度的HTML控件将支持MVC。


不是开始一场火焰战争,而是我发现WCSF非常复杂。 MVC的优雅和简单性使MVP破灭,感觉就像是嫁接到Web表单上的图案。


经过完全相同的评估后,我们选择了WCSF。我们认为MVP模式为我们提供了更多选择,即能够使用服务器控件。我们的开发团队主要由来自C ++,Biztalk和Web等众多学科的程序员组成,但都主要专注于MS类型开发,因此采用模式的学习曲线对我们团队而言并不是那么重要。

我们对自己的选择感到非常满意。


An ASP.NET MVC site will probably be easier to test than an equivalent
WCSF version.

This is true because it uses the new abstractions classes for
HttpContext, HttpRequest, HttpResponse, etc. There's nothing
inherently more testable about the MVC pattern than the MVP pattern.
They're both instances of"Separated Presentation", and both increase
testability.

这可能值得商bat,但是有文献表明,如果您的视图中包含逻辑,那么使用MVP设计模型比MVC设计模型更容易进行单元测试。总而言之,在MVP设计模型中,演示者正在处理可能由MVC设计模型中的View处理的工作。 MVC视图中可能包含的逻辑不便于单元测试。这是我阅读过的一些参考文献,涵盖了这个概念以及保持"视光"更好的原因,其中包括促进单元测试的许多原因。

http://martinfowler.com/eaaDev/uiArchs.html

http://martinfowler.com/eaaDev/SupervisingPresenter.html

http://martinfowler.com/eaaDev/PassiveScreen.html


MVC是一个简单得多的范例,它与所有其他框架进行Web开发的方式更为相似。 WebForms简直就是太多的麻烦和太多的抽象层来尝试实现简单性。
恕我直言,MVC将在几年内成为默认的ASP.NET架构,因为越来越多的人意识到它带来的开发和测试的简便性。我从事MVC开发已经一年半了,甚至从未想到要在一个新项目上回到WebForms。


您可能还考虑了开发人员的背景(如果已经确定了背景)。

如果他们来自严格的asp.net背景,那么他们对WCSF会更满意(尽管以我的经验,他们花了几周的时间才真正对MVP感到满意)。

如果它们来自java / rails背景,或者以前曾经使用过其他MVC架构,那么显然它们会在那儿更快乐(以我的经验,除了MVC以外,其他任何事情都可以使人大笑)。


为什么不将两者都附在Northwind上,看看哪种最适合您和您的情况?


推荐阅读