ASP.NET MVC vs. Web client software factory (WCSF)我最近一直在对不同类型的Model View架构进行一些调查,因此需要决定为将来的内部开发选择哪种架构。因为我目前在一家拥有ASP.NET技能的Microsoft商店中工作,看来我的选择介于ASP.NET MVC和WCSF之间(Monorail可能不适用,因为Microsoft不会支持它。) 在使用WCSF作为标准阅读ASP.NET MVC框架之后,我总结了以下几点:
还有哪些其他注意事项?
您应该将WCSF视为有关如何使用现有WebForms基础结构的指南,尤其是引入Model-View-Presenter来帮助实现关注点分离。它还增加了所得代码的可测试性。
如果可以以3.5 SP1为目标,则可以将新的"路由"系统与传统的WebForms站点一起使用。路由不限于MVC。例如,看一下动态数据(它也随3.5 SP1一起提供)。
这是正确的,因为它为HttpContext,HttpRequest,HttpResponse等使用了新的抽象类。与MVP模式相比,MVC模式在本质上没有什么可测试的。它们都是"分离表示"的实例,并且都提高了可测试性。
在Model-View-Presenter中,由于外界与视图进行交互(即,URL指向视图),因此视图自然会响应这些事件。通过调用演示者或提供演示者可以订阅的事件,它们应尽可能简单。 Model-View-Controller通过让外部世界与控制器交互来克服此限制。这意味着您对非表示事物的看法可能会很多。 至于您应该使用哪一种,我认为答案取决于哪种最适合您的项目目标。有时,WebForms和丰富的第三方控件供应商的可用性将是更可取的,并且在某些情况下,原始的简单性和细粒度的HTML控件将支持MVC。 不是开始一场火焰战争,而是我发现WCSF非常复杂。 MVC的优雅和简单性使MVP破灭,感觉就像是嫁接到Web表单上的图案。 经过完全相同的评估后,我们选择了WCSF。我们认为MVP模式为我们提供了更多选择,即能够使用服务器控件。我们的开发团队主要由来自C ++,Biztalk和Web等众多学科的程序员组成,但都主要专注于MS类型开发,因此采用模式的学习曲线对我们团队而言并不是那么重要。 我们对自己的选择感到非常满意。
这可能值得商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简直就是太多的麻烦和太多的抽象层来尝试实现简单性。 您可能还考虑了开发人员的背景(如果已经确定了背景)。 如果他们来自严格的asp.net背景,那么他们对WCSF会更满意(尽管以我的经验,他们花了几周的时间才真正对MVP感到满意)。 如果它们来自java / rails背景,或者以前曾经使用过其他MVC架构,那么显然它们会在那儿更快乐(以我的经验,除了MVC以外,其他任何事情都可以使人大笑)。 为什么不将两者都附在Northwind上,看看哪种最适合您和您的情况? |