Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Safe to jump on ASP.NET MVC bandwagon when building enterprise solutions?

Before I get pointed to one of those 'VS.' questions like below...

  • ASP.NET webforms + ASP.NET Ajax versus ASP.NET MVC and Ajax framework freedom
  • Should I pursue ASP.NET WebForms or ASP.NET MVC
  • ASP.NET MVC Web application vs ASP.NET Web Application

... please let me state that I'm not looking for a comparison.

Some of my concerns that I need answers for include:

  1. Is the learning curve for doing crazy UIs (e.g. having UI for building a BOM tree online) steep? Lots of people posting questions seem to be having problems with some UI requirement or another which has me worried. Is the technology mature enough to handle those type of requirements?
  2. Is there a pretty well developed community and how available is online literature? You can get tons of literature for WebForms.
  3. Would the time to develop it be comparable or less to building a traditional enterprise WebForms site?
  4. How long would it take to get a whole team of developers comfortable (if not enamored) with WebForms to become well versed in ASP.NET MVC?

The truth of it I think is that StackOverflow is Google-like product and ASP.NET MVC might be great for that. But I'm stuck developing software in the Your company's app category.

alt text http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png

So taking a plunge could prove very costly later on if something can't be done or it has to be hacked. Hope to hear from those that have taken the plunge.

Thanks.

like image 917
Fung Avatar asked Apr 22 '09 04:04

Fung


2 Answers

About 3 months ago, I was told that I needed to develop an enterprise web-app (well, a series of small web-apps actually), but that I could choose whatever technology I wanted.

Since I'm most comfortable with VS/C#/.Net, the dilemma was whether to choose ASP.NET WebForms or ASP.NET MVC2 -- Unlike you, my only background was with Windows Forms (WinForms) and a little WPF. So I had to research (and try-out) both WebForms and MVC.

Just like you, I realized that my app would be neither Google nor Apple like, but your bog standard company app with thousands of buttons and boxes, etc. WebForms seemed like it would be the fastest to deploy, but hard to test and hard to maintain on a long-term basis. MVC seemed to have a much steeper learning curve, but once established, testing and maintenance would be a breeze.

I only fiddled with WebForms for a week, so I can't really comment on it. But MVC is definitely everything I was expecting it to be.

Yes, it's a steep learning curve. Concepts that were new to me:

  • Model-View-Controller (MVC)
  • Separation of Concerns (SoC)
  • Model Binding
  • Unit Testing and Test Driven Design (TDD)
  • Mocking and Stubbing
  • Dependency Injection (DI)

The books that helped me the most were:

  • Pro ASP.NET MVC2 by Sanderson (MVC, Model Binding, DI, TDD)
  • The Art of Unit Testing by Osherove (TDD, Mocking, Stubbing, DI)

I also had to brush up on my HTML, CSS, and Javascript.

Overall, there seems to be a fair amount of ramp-up work in the beginning, but maintaining and extending the existing application has been pretty painless. Whenever I've been asked to make changes, it's been fairly easy and I've typically been able to deliver on-time or even sometimes ahead of schedule.

In an ideal world, writing an MVC app would happen with 2 people. One person writing the core code and a second person writing the UI and the Views (HTML, CSS, Javascript.) Although it's entirely possible to do it all by yourself. (which is what I'm doing right now...)

I have run into some hitches deploying in the Enterprise, though. Internally, my company is running Windows Server 2003 and IIS6. Unfortunately, we have been unable to get the app to deploy properly on IIS6 when using Virtual Pathing. (All the references to and in the CSS files are broken.) If you plan on deploying MVC, I would recommend using IIS7 or higher. MVC supposedly works on IIS6, but requires that your IT department be willing to figure out how to get it to work.

Edit: I just realized I never directly answered your questions. Here goes:

  1. My personal experience has said, that, yes, the learning curve is steep for building good Models and UIs, but I'm not really a web-developer so I've been working with that handicap. The good news is that the MVC technology is pretty mature.

  2. Yes, the community is pretty well developed and growing. You'll get a lot of good answers from StackOverflow as well as MS's ASP.NET MVC sub-forum.

  3. I have no personal experience coding WebForms, but I have coded plenty of WinForms apps and I feel like it's taken me approx. 3 times longer to build this MVC app. The initial investment is a bear, but regular maintenance and improvements seem to come WAY faster, especially as the app has grown... Since you seem to have a team of programmers, it may come faster for you guys as you can probably split up the learning/workload.

  4. Again, no prior experience with WebForms, but what I can tell you is that as I was learning ASP.NET MVC, there were times when I was struggling to understand what was going on because I had no prior ASP.NET background. (Example: Membership and Role Providers -- I had to code my own recently. Boy was that fun...) On the plus side, I didn't have any "old ways of doing things" (aka. WebForms) to unlearn either. If you have a team of folks enamored with PostBack / CodeBehind, you can bet that MVC is gonna seem awfully strange at first. But hopefully your team will see the advantages that MVC brings and embraces it fully.

Oh, and it should be noted that you can blend MVC and WebForms. It's not an all-or-nothing proposition. Although, if I were in your shoes, I'd try to embrace MVC as much as possible and only use WebForms where it clearly makes more sense.

Ok, I hope this helps... :-)

like image 88
Pretzel Avatar answered Oct 04 '22 01:10

Pretzel


I can answer half of your question. I've just dove into MVC from a WebForms background. There is (obviously) a learning curve, but it's really not very steep. I've been able to make the transition with little effort, and I find the whole thing to be a breath of fresh air.

However, I am quite capable with front-end technologies (HTML & Javascript), and I don't like the HTML the WebForms and Microsoft ajax framework generates. If you and/or your team are like this, you will love it. However, if you are proud of the in-depth knowledge you have of the event hierarchy, or if you love the simplicity of UpdatePanels, then you'll probably bridle against the changes.

The documentation is OK, enough to get going happily, anyway. Here's a few videos to whet your appetite: http://videos.visitmix.com/MIX09/T49F http://videos.visitmix.com/MIX09/T50F http://videos.visitmix.com/MIX09/T44F

Here's your documentation home: http://www.asp.net/mvc/

For a bit more info, the first chapter of the asp.net mvc 1.0 book is online and can be downloaded for free. See ScottGu's blog here: http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx

And, the full code for the chapter can be found here: http://www.codeplex.com/nerddinner

Finally, in terms of development time, I think it might take a bit longer to develop apps using MVC (although I have no evidence of this), but I think supporting, maintaining, bugfixing and enhancing will take a lot less time. So, with a small up-front investment, I think you'll more than recoup that effort.

Anyway, like I said, these are my preliminary findings. I still have yet to hit a really hairy problem.

like image 35
tsimon Avatar answered Oct 04 '22 02:10

tsimon