I'm done some WinForms work in C# but now moving to have to develop a web application front end in .NET (C#). I have experience developing web apps in Ruby on Rails (& a little with Java with JSP pages & struts mvc).
Should I jump straight to MVC framework? (as opposed to going ASP.net) That is from the point of view of future direction for Microsoft & as well ease in ramping up from myself.
Or if you like, given my experience to date, what would the pros/cons for me re MVC versus ASP.net?
How to create a reusable Asp.Net Mvc application?
Client Id for Property (ASP.Net MVC)
By this I mean, if you need to have very tight controls over markup then; while acheivable with WebForms; it is much easier with MVC.
file upload working in one and not the other help
This would be common for applications that are targeting a public (e.g.
Can classic asp and ASP.NET MVC run side-by-side on the same site?
internet) audience which might have a richer graphical experience.
Setting a default value — presentation logic or business logic?
In contrast, if you're developing an internal (e.g.
Suggestions/Recommendations for a Web Application with Sub-Apps
intranet) business application where graphical presentation is not as critical, then WebForms has a lot of really nice enabling capabilities that will allow you to move more quickly.
Dynamic content in static content
Don't get me wrong, you can make WebForm applications look really really nice, but you give up some control over the markup.. Very often ViewState comes into this kind of discussion.
MVC will not have any ViewState so the on-the-wire footprint will be much smaller which translates to speed and bandwidth cost savings at some point.
On the downside, making stateful applications with MVC can be more painful.
In contrast, WebForms will carry ViewState by default and are inherently more stateful.
This is typically fine for internal applications.
Keep in mind that ViewState does not have to be sent over the wire...
there are extensions that allow you to offload that to a local cache.
I'm not favoring one over the other, but you should be aware of what each can do in this regard.
. If unit testing is important to you then MVC is also a much better choice, as this is easier as well.
This is totally acheivable in WebForms but requires you pattern your code behind correctly.
. Security is not a major factor since much of setting up the IPrinciple and IIdentity occure in the HTTP pipeline via HttpModules, so either will do in that regard.
. Another major factor in making your choice relates to your skills relative to the time you have to deliver...
If you're not used to working in a stateless manner or coding standard web technologies (e.g.
html, css, jquery, etc...) MVC will take you longer to do very basic things.
With that said, once in place it will likely be cleaner, smaller, more testable, and faster.
If you need to move very quickly there is a lot you can do faster in WebForms.
WebForms also does a lot of heavy lifting with respect to markup so there are a number of details you can leave to ASP.NET.. I actually use both for a variety of reasons, and MS has stated they plan to continue support and development for both.
You must mean MVC vs Webform to which the answer would be: coming from a Winform background, you will find webform easier to use.
For the future, go MVC..
I didnt even (gasp!) knew HTML (yeah, that was my programmers shame).
In my new job we were going to start a new application using ASP.NET MVC and I gotta tell you, I love it.
HOWEVER I think you should only go with MVC if you are or you count with someone with good html/css design skills.. Html is easy I know (I've learned it know!) but I think its kind of hard to make nice designs with html and css, specially if you suck at designing and you could probably do prettier stuff using webforms, which is a little bit easier/similar to winforms.
. Also, if you go the MVC way make sure you have enough time to learn it, since you are going to go a little bit more low level, gonna have to learn more of the little details, like the actual difference between post/get and all that stuff that is pretty much completely hidden in webforms.
If you go the webforms you can use the included drag'n drop ajax controls..
(ASP.NET MVC is actually only the "VC" part, so you have to add an ORM of your choice.
EF and Linq to Sql is the Microsoft way, NHibernate or other ORM's are the other way.
One good quick start project is S#arp Architecture which uses NHibernate as the "M" part, or you can check out WHCM, which is a project built on S#arp Architecture and other good frameworks (it is considered an ASP.NET MVC best-practices demo project) ).
ASP.NET MVC uses almost nothing from the WebForms package (the only exception I found is the AntiForgeryToken), so you'll loose nothing if you're unfamiliar with ASP.NET WebForms.. But as you said you have also made console applications, which ASP.NET WebForms resemble more.. If your project is new, I advise you to use ASP.NET MVC.
If your project clearly separates the M-V-C part (like in S#arp Architecture, where they reside in different assemblies), creating a console application that uses the same business logic shouldn't be too hard.
If your current project is to port a WinForms application to the web, then it might be easier to use WebForms..
If you're slapping together a quick app for someone, web forms is probably quicker and easier.
. If you're building a long running enterprise app MVC gives you better testability a SoC..