Products

Solutions

Resources

Partners

Community

About

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.


The Future of DNN Speaks Razor - #4 The Death of ASP.net MVC

You may have ready my article on the death of ASP.net WebForms. In summary we can say that WebForms is becoming obsolete, because Microsofts vision of hiding the web-complexities from the developer and giving her a Visual-Basic style programming environment failed.

Along came MVC to provide a new solution. And there are quite a few things it's done very, very well. And a lot of things that won't make it. Our goal is to focus our time and energy on the relevant parts and ignore the rest.

In this part 4 of my Series The Future of DNN Speaks Razor, I'll explain why ASP.net MVC started well but was overtaken by the internet, and why the resulting good solution is still called MVC, even though it's not Model-View-Controller.

ASP.net MVC is Dead…

ASP.net MVC completely turned around Microsofts Visual-Basic-style approach to the web: This time, it was "embrace the web" and leverage what it does. Suddenly it was all about testability, patterns, Dependency-Injection, Inversion-Of-Control, Routing, Dynamic Objects and more. And it was a very tough start.

It looked great on paper - the same way a business plan looks great on paper. And in practice it also felt like a business plan - academic and unrealistic. The technology and solution was just too trivial to produce great solutions. A classic problem was that you suddenly had loads of tiny fragments of a solution to manage. And getting these to work together felt simple - as long as your solutions were at demo-level and trivial. Suddenly the platform didn't do much anymore, and many things it did (like adaptive views for mobile devices - see my post on Responsive vs. Adaptive) were ivory-tower leftovers and not really relevant.

The start was so tough that for many years, third-party controls simply sucked. Getting something like a WYSIWYG control (like the classic telerik rad-editor) in MVC was like picking up your kids bike to replace your car. It may feel like you're going green, but you're not going anywhere!

To the left you see the amazing MVC-Telerik editor - and it's easy to see that the non-MVC-edition to the right was a bit better at the time...

Third party controls finally got better - when they started doing everything in JavaScript. That's right: they got better, when they stopped relying on ASP.net MVC. This became obvious when the control makers (incl. Telerik) started marketing their controls to also work with Java and PHP. Of course they work - they are simply HTML, CSS and JS!

Here the newest non-WebForms editor. Better (because zero-ASP.net) but still not even close to the WebForms version. 

…because MVC is Now Happening on the Client, not on the Server…

Think about the "cool" UIs you see today, like a powerful mail client (Google, Outlook), a neat game, a stylish business UI. All of them have in common, that the entire View is client rendered using AngularJS, knockout or Kendo.

 

the two most popular MVC-style frameworks in JS at the moment

Today's SPA (Single Page Application) receives a generic HTML, a generic JavaScript and a generic CSS. I'm saying generic because these pieces don't vary with URL parameters or with user logins. When the server was in charge, each request delivered a different HTML, usually containing the tables, the data, fragments of the JS and more. This is passé.

But when the server doesn't have to deliver different content-fragments based on URL or session state, what good is programming on the server? Why play MVC on the server if you already do it on the client? The simple answer is: you don't. The need for MVC on the server is collapsing…at least for Apps (content-management is another story). 

You won't Notice MVC on the Server Failed, Because they Rethinged the Name

That's right! Some things get renamed, but MVC got re-thinged. I guess Microsoft realized that another name would further confuse everybody - and anger all the early adopters who already had a hard time getting into MVC. Imagine telling them "Yeah, it was hard, and it sucked, and it was unproductive - but in the long run, we don't need it any more." That's a recipe for losing developers. So Microsoft opted for the "MVC got much better, it now also does lots of new things that don't have to do with MVC. You can also use this now!"

Examples of how the Name MVC got Re-Thinged

Most of the really important new features in ASP.net (and supposedly part of MVC) have little or nothing to do with Model-View-Controller Separations-Of-Concerns in the view-layer of an application. Here some examples: 

  • ASP.net WebAPI part of MVC 4 - a data layer if ever I saw one, ideal for JavaScript applications
  • Razor - a text-parser if I may say so - was heavily marketed as part of MVC 4
  • SignalR 2 (http://www.asp.net/signalr) part of MVC 5 - real-time communication, ideal for JavaScript applications

Other features like Routing etc. are awesome but they are basically necessary for any kind of web site incl. WebForms and CMSs in general (irrelevant of the framework-flavor below).

But to keep things simple MS choose to keep the name MVC. It'll get more complicated when they start promoting Katana etc., but for now they call new things MVC. I believe this will change in 2015...

The Browser is the better MVC-Playground

I would like to add a note on a common misconception: MVC is a View-Layer Pattern. I've met many programmers who try to place the business and data-layer in the "M" or "C" layer of MVC (model or controller). Both are completely and utterly wrong - M,V, and C are not the tiers 1,2 and 3 of an n-tier-solution. MVC is a way to split the view-layer (the top layer of the n-tier solution) into 3 Separations-of-Concerns. You still need a business and a data layer in an MVC-App. 

Doing M, V & C in the browser is much easier because the three parts are connected, live and receive mouse-interactions. Doing this on the server was just frustrating, difficult and totally unsexy for the end user.

In Summary MVC is dead on the Server…

So the basic MVC-concept, replacing the VB-Style Page/View separation with a Model-View-Controller-Style separation on the server is history. Todays and future web applications will embrace MVC / MVVM / MVP - but they will do it on the client. ASP.net will be an important layer in the application stack, but not because of MVC.

Not all is Lost…

Because the server still serves an important role in many other sub-function, incl. Data-Delivery. That's where Microsoft built a masterpiece with the WebAPI. More on that tomorrow…

With love from Switzerland
Daniel

Daniel Mettler grew up in the jungles of Indonesia and is founder and CEO of 2sic internet solutions in Switzerland and Liechtenstein, an 20-head web specialist with over 600 DNN projects since 1999. He is also chief architect of 2sxc (2SexyContent - see forge), an open source module for creating attractive content and DNN Apps.

 

PS: Want to get started before the entire Razor-series is out? For the impatient, try the DNN-Razor Host Module and watch this video  or try packaged code apps by installing 2sxc and some of the Razor Apps like the Razor Basic TutorialsList-Tutorials or the SQL and Peta-Poco Tutorials

 

Comments

Ava James
it is helpful
Ava James Thursday, August 28, 2014 2:30 PM (link)
infosolve
Soon you will be embracing Wordpress Event method architecture again, as long as it's on MS Cloud services. Back to the Good Old Days with intranet like Big End Of Town stuff. Then you can call your WebForms --> MVC WF.

The SME market has to simplify its business processes to again cater for small minded stuff like this article.

What a joke.
infosolve Monday, April 6, 2015 8:46 PM (link)
Daniel Mettler
@infosolve: I would like to respond to your concerns, but based on your post I'm unable to figure out what exactly you disagree on. Maybe you could rephrase it. Thanks, Daniel
Daniel Mettler Tuesday, April 7, 2015 5:31 AM (link)
infosolve
OK.

At either end of the SME (Small Medium Enterprise), the two biggest CMS systems are WordPress and DNN. Neither group embraced MVC architecture, thus my comments about DNN stuck in the Big End of Town supporting ASP.NET developers.

As for your comments about "you suddenly had loads of tiny fragments of a solution to manage" is exactly what a great system should have. As we now see the merger of CMS, CRMS and Ecommerce, having modules that can integrate together, providing a broader more flexible workflow platform, MVC enters its own. The management of multi thread clients can be managed and flexible form based UI can be applied. Database development becomes a simple process to initiate and supports rapid development cycle.

Your comments on Google and Outlook are for client side designed apps, i.e. email is non transactional. Thus they can have all the bells and whistles applied. Games work well too, that's way Apps are 90% games.

We have seen most other web platforms move to MVC (Magento, Nopcommerce, Umbraco, Orchard).

Wordpress is slow, hackable, over complex in module design and development. It has a great CMS UI for basic web design, however its always going to struggle with database integration. Same as DNN.

I agree client/server side development is complex and challenging, especially with the addition of mobility, however browser based application development is here to stay and requires great UI.

App development is again for the Big-End-Of-Town. Who can maintain an application on 8 versions for IOS and Android, then add Windows into the mix? Plus Apple has no problem moving to non-compatible software when it suits.

It seems DNN is happy for Wordpress to be dominant, as its convenient to live in the past.

Regards,
Paul King

infosolve Wednesday, April 8, 2015 8:54 PM (link)
Daniel Mettler
@Paul - I'm still very confused :). Maybe we both have a different level of information - so I'll try to straighten it out

* DNN is moving towards MVC, that's what V8 is all about. I personally like separation of concerns, but don't fully agree with the MS-model; that's what this post is about.

* DNN next will go a step further - it will be .net core based and drop all WebForms. So the MVC-model will be +/- the default

Best, Daniel
Daniel Mettler Thursday, April 9, 2015 5:05 PM (link)
infosolve
Thanks for your time Daniel,

Can you point me in the direction of a V8 article? I'd like to have a read.

Your "In Summary MVC is dead on the Server" is very brave to say the least, as even classic event driven client applications has a large element of server side database integration. So you're suggesting I load the whole database on the client-side? Or your suggesting I use the WebAPI, bypassing the MVC architecture? Seems like the Good Old Blues Brothers Boysband to me.

The bottom line is I'd use DNN in a flash, if it was built on MVC or MVVM.

Paul

infosolve Thursday, April 9, 2015 8:45 PM (link)
Daniel Mettler
@Paul - check out http://www.dnnsoftware.com/community-blog/cid/155187/solving-the-hard-things

We've been experimenting with JS frameworks for a few years now - started with knockout but it does to little so we moved to AngularJS. It's simply amazing. So we're all for WebAPI + JavaScript - any flavor you like. Basically the concept of building the UI on the server and then trying to over-plumb it like the HTML-AJAX concepts (where the server would render more html and send it again) is simply to messy IMHO.
Daniel Mettler Friday, April 10, 2015 2:10 AM (link)
infosolve
OK I'll give a try.

I agree HTMLAJAX is a nightmare.

PK
infosolve Friday, April 10, 2015 7:28 PM (link)

Comment Form

Only registered users may post comments.

NewsArchives


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Daniels (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out