<p>I have recently been doing a bit of investigation into the different types of Model View architectures, and need to decide which one to pursue for future in-house development. As I'm currently working in a Microsoft shop that has ASP.NET skills, it seems my options are between ASP.NET MVC and WCSF (Monorail is probably out of the as it wouldn't be supported by Microsoft).</p>

<p>After reading <a href="http://blogs.msdn.com/simonince/archive/2007/11/22/the-asp-net-mvc-framework-using-the-wcsf-as-a-yardstick.aspx" rel="noreferrer">the ASP.NET MVC framework, using the WCSF as a yardstick</a>, I picked up the following points:  </p>

<ul>
<li>ASP.NET MVC cannot use web controls that rely on postbacks, whereas WCSF can.</li>
<li>You have more control over the urls in an ASP.NET MVC site as opposed to a WCSF site.</li>
<li>An ASP.NET MVC site will probably be easier to test than an equivalent WCSF version.</li>
<li>It seems that the WCSF still uses the code behind to control UI events under some circumstances, but ASP.NET MVC doesn't allow this. </li>
</ul>

<p>What are some of the other considerations?<br/> 
What have I misunderstood?<br/>
Is there anybody out there who has used both frameworks and has advice either way?</p>

[{'answer_id': 53507, 'author': 'Brad Wilson', 'author_id': 1554, 'author_profile': 'https://Stackoverflow.com/users/1554', 'pm_score': 5, 'selected': True, 'text': '<blockquote>\n  <p>ASP.NET MVC cannot use web controls that rely on postbacks, whereas WCSF can.</p>\n</blockquote>\n\n<p>You should think of WCSF as guidance about how to use the existing WebForms infrastructure, especially introducing Model-View-Presenter to help enforce separation of concerns. It also increases the testability of the resulting code.</p>\n\n<blockquote>\n  <p>You have more control over the urls in an ASP.NET MVC site as opposed to a WCSF site.</p>\n</blockquote>\n\n<p>If you can target 3.5 SP1, you can use the new Routing system with a traditional WebForms site. Routing is not limited to MVC. For example, take a look at Dynamic Data (which also ships in 3.5 SP1).</p>\n\n<blockquote>\n  <p>An ASP.NET MVC site will probably be easier to test than an equivalent WCSF version.</p>\n</blockquote>\n\n<p>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.</p>\n\n<blockquote>\n  <p>It seems that the WCSF still uses the code behind to control UI events under some circumstances, but ASP.NET doesn\'t allow this.</p>\n</blockquote>\n\n<p>In Model-View-Presenter, since the outside world interacts with views (i.e., the URL points to the view), the views will naturally be responding to these events. They should be as simple as possible, either by calling the presenter or by offering events that the presenter can subscribe to.</p>\n\n<p>Model-View-Controller overcomes this limitation by having the outside world interact with controllers. This means your views can be a lot "dumber" about non-presentation things.</p>\n\n<p>As for which you should use, I think the answer comes down to which one best suits your project goals. Sometimes WebForms and the rich third party control vendor availability will be preferable, and in some cases, raw simplicity and fine-grained HTML control will favor MVC.</p>\n'}, {'answer_id': 53528, 'author': 'Ant', 'author_id': 3709, 'author_profile': 'https://Stackoverflow.com/users/3709', 'pm_score': 0, 'selected': False, 'text': '<p>Why not attach both to Northwind and see which fits best for you and your situation?</p>\n'}, {'answer_id': 185773, 'author': 'Kevin Dostalek', 'author_id': 22732, 'author_profile': 'https://Stackoverflow.com/users/22732', 'pm_score': 1, 'selected': False, 'text': "<p>You might also consider the background's of your developers (if any have already been identified).</p>\n\n<p>If they come from a strict asp.net background, they will be more comfortable around WCSF (although in my experience, it still took them a few weeks to really be comfortable around MVP).</p>\n\n<p>If they come from a java/rails background, or have used other MVC architectures before, then obviously they'll be happier there (and in my experience get very snooty about anything other than MVC).</p>\n"}, {'answer_id': 510745, 'author': 'Gary Woodfine', 'author_id': 62338, 'author_profile': 'https://Stackoverflow.com/users/62338', 'pm_score': 2, 'selected': False, 'text': '<p>We opted for the WCSF after doing exactly the same evaluation.  We felt that the MVP pattern gave us more options i.e Ability to use server controls.  Our development team is mostly made up of Programmers from a myriad of disciplines  i.e C++, Biztalk and web etc. but had all focused mostly on MS type development, so the learning curve in adopting the patterns was not so much for our team.</p>\n\n<p>We are more than happy with our choice.</p>\n'}, {'answer_id': 1923535, 'author': 'Jeff', 'author_id': 234003, 'author_profile': 'https://Stackoverflow.com/users/234003', 'pm_score': 3, 'selected': False, 'text': '<p>Not to start a flame war but I found the WCSF to be quite convoluted.  The elegance and simplicity of MVC blows away MVP which feels like a pattern that is just grafted onto webforms. </p>\n'}, {'answer_id': 1923587, 'author': 'Keith Rousseau', 'author_id': 66330, 'author_profile': 'https://Stackoverflow.com/users/66330', 'pm_score': 1, 'selected': False, 'text': '<p>MVC is a much simpler paradigm and is more similar to how all other frameworks do web development. WebForms is simply way too much jumping through hoops and too many layers of abstraction to try and achieve simplicity. \nIMHO, MVC will be the default ASP.NET architecture within a few years, as more and more people realize the simplicity and ease of development and testing that it brings with us. I have been doing MVC development for a year and a half and would never even think of going back to WebForms on a new project. </p>\n'}, {'answer_id': 9007461, 'author': 'wavedrop', 'author_id': 378424, 'author_profile': 'https://Stackoverflow.com/users/378424', 'pm_score': 1, 'selected': False, 'text': '<blockquote>\n  <p><strong>An ASP.NET MVC site will probably be easier to test than an equivalent\n  WCSF version.</strong></p>\n  \n  <p>This is true because it uses the new abstractions classes for\n  HttpContext, HttpRequest, HttpResponse, etc. There\'s nothing\n  inherently more testable about the MVC pattern than the MVP pattern.\n  They\'re both instances of "Separated Presentation", and both increase\n  testability.</p>\n</blockquote>\n\n<p>This is probably debatable, but there is literature to suggest using an MVP design model is easier to unit test then an MVC design model if you have Views that are packed with logic.  To summarize, in the MVP design model the Presenter is handling the work that might be handled by the View in the MVC design model.  The logic that might be contained in the MVC View does not facilitate unit testing.  Here are some references to literature that I have read that would cover this concept and the reasons why keeping your View light is better for many reasons including facilitating unit testing.</p>\n\n<p><a href="http://martinfowler.com/eaaDev/uiArchs.html" rel="nofollow">http://martinfowler.com/eaaDev/uiArchs.html</a></p>\n\n<p><a href="http://martinfowler.com/eaaDev/SupervisingPresenter.html" rel="nofollow">http://martinfowler.com/eaaDev/SupervisingPresenter.html</a></p>\n\n<p><a href="http://martinfowler.com/eaaDev/PassiveScreen.html" rel="nofollow">http://martinfowler.com/eaaDev/PassiveScreen.html</a></p>\n'}]
['https://Stackoverflow.com/questions/53479', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/5110/']