Below are a few comments specific to some of the recent
debates that I’ve seen going around within the community as to whether a
ASP.NET Web Forms or ASP.NET MVC based approach is best:
a) Web Forms and MVC are two approaches for building ASP.NET
apps. They are both good choices. Each can be the “best choice” for a
particular solution depending on the requirements of the application and the
background of the team members involved. You can build great apps with
either. You can build bad apps with either. You are not a good or bad
developer depending on what you choose. You can be absolutely great or
worthless using both.
b) The ASP.NET and Visual Studio teams are investing heavily
in both Web Forms and MVC. Neither is going away. Both have major
releases coming in the months ahead. ASP.NET 4 includes major updates to
Web Forms (clean ClientIDs and CSS based markup output, smaller ViewState, URL
Routing, new data and charting controls, new dynamic data features, new SEO
APIs, new VS designer and project improvements, etc, etc). ASP.NET 4 will
also ship with ASP.NET MVC 2 which also includes major updates (strongly typed
helpers, model validation, areas, better scaffolding, Async support, more
helper APIs, etc, etc). Don’t angst about either being a dead-end or
something you have to change to. I suspect that long after we are all
dead and gone there will be servers somewhere on the Internet still running
both ASP.NET Web Forms and ASP.NET MVC based apps.
c) Web Forms and MVC share far more code/infrastructure/APIs
than anyone on either side of any debate about them ever mentions -
Authentication, Authorization, Membership, Roles, URL Routing, Caching, Session
State, Profiles, Configuration, Compilation, .aspx pages, .master files, .ascx
files, Global.asax, Request/Response/Cookie APIs, Health Monitoring, Process
Model, Tracing, Deployment, AJAX, etc, etc, etc. All of that common stuff
you learn is equally valid regardless of how you construct your UI. Going
forward we’ll continue to invest heavily in building core ASP.NET features that
work for both Web Forms and MVC (like the URL Routing, Deployment, Output
Caching, and DataAnnotations for Validation features we are adding with ASP.NET
d) I often find debates around programming model
appropriateness and abstractions a little silly. Both Web Forms and MVC are
programming web framework abstractions, built on top of a broader framework
abstraction, programmed with higher level programming languages, running on top
of a execution engine abstraction that itself is running on top of a giant
abstraction called an OS. What you are creating with each is
– another higher level protocol abstraction).
The interesting question to debate is not whether
abstractions are good or not – but rather which abstractions feels most natural
to you, and which map best to the requirements/scenarios/developers of your
e) We are about to do a pretty major update to the www.asp.net site. As part
of that we will be posting more end to end tutorials/content (for both Web
Forms and MVC). We will also be providing tutorials and guidance that
will help developers quickly evaluate both the Web Forms and MVC approach,
easily learn the basics about how both work, and quickly determine which one
feels best for them to use. This will make it easy for developers new to
ASP.NET, as well as developers who already know either Web Forms or MVC, to
understand and evaluate the two approaches and decide which they want to use.
f) Decide on a project about whether you want to use Web
Forms or MVC and feel good about it. Both can be good choices.
Respect the choices other people make – the choice they have made is also
hopefully a good one that works well for them. Keep in mind that in all
likelihood they know a lot more about their own business/skills than you
do. Likewise you hopefully know a lot more about your own business/skills
than they do.
g) Share ideas and best practices with others. That is
a big part of what blogs, forums, listservs and community is all about.
What makes them work great is when people know that their ideas aren’t going to
be ripped to shreds, and that they will be treated with respect. Be
constructive, not snarky. Teach, don’t lecture. Remember there is always
someone else out there who you can also learn from.
Hope this helps,