Pizza Over the Internet
I had previously created a pizza ordering system using classic ASP and COM. This was a killer app at the time. ASP classic really didn’t really support enterprise applications well. Having to do the “real” code in C++ and layer it with VBScript created a lot of hindering mismatch. It also made debugging very, very hard. The new hotness of ASP.NET laid the groundwork for a much brighter future. Along with ASP.NET, C# would be announced. It was a powerful new language by the guy who had invented Pascal and it gave the C++ developer a much more productive environment without the limitations of Visual Basic. The WebForms technology let you work with objects, events and controls in a way that sheltered you from the limitations and complexities of stateless HTTP, while providing a rich library for data-driven applications. The Pizza Apps of the future would rock so much that we would take them for granted.
All Good Things Come to an End
With the new power, performance and richness of HTML5, it no longer makes sense to shelter the developer from it. Indeed, MVC provides a powerful framework for generating dynamic content and the new Razor view engine even makes integrating server side code with HTML a breeze. Its architecture allows an elegant separation of process into Models, Views and Controllers.
While MVC is a significant move toward a better .NET, it is not ideal for every company. MVC requires a fundamental understanding of object-oriented principles, which is not something most of today’s web designers possess. I’ve seen companies experience multi-year delays because they switched to MVC without considering the difficulty of finding qualified talent. Since MVC is so new, there are very few software developers that have sufficient experience with it and I see little indication this will change soon. Many MVC developers are literally learning on the job. If you have a good pool of MVC developers with a few projects under their belt, treat them well as they are not easy to find.
MVC as a Gateway to “Pure” HTML5
While I would not recommend creating a significant amount of functionality in MVC because of the difficulty of finding experienced developers, MVC is a great gateway to HTML5. You can do the majority of user experience code in HTML5 and use server-side MVC for system-level code, like security authentication.
The User Experience Advantage
An entire generation of people is entering the world of computing having never owned a keyboard. I like to call them the “Cloud Generation.” This obviously includes early twenties hipsters, but also includes a surprising number of grandmothers, farmers, doctors and other people in non-desk professions. Ordering a touch device and plugging it into cloud services is the only computing model they know. With hundreds of thousands of apps to choose from and the ability to rate them poorly if they are hard to use or too buggy, users have expectations of their enterprise software that many in IT find unrealistic. Me too! Enterprise software should be as easy to use as consumer home apps.
The Best of Both Worlds
Using ASP.NET MVC in a limited way to power a pure HTML5 user experience lets everyone focus on what they are good at, while keeping your team agile and responsive in a competitive environment. You are not “stuck” with the old UI because HR can’t find an MVC developer. Armies of recent college graduates already know how to take your app to the next level. Some of them don’t own keyboards so they know how your touch experience should work. Your app will work great on mobile devices and can be converted into a native app with a small amount of shell code. The technical name for this type of architecture is Model View ViewModel or MVVM. MVC: it is an excellent way to get there, if you remember that HTML5 is the king and MVC is there to play a supporting role.