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.


DNN8 Development Technique Comparison: Webforms, MVC, and SPA

Introduction

Mmmmmm....  southern home-style cooking...  I must have been hungry in the spring of 2013 when I came up with the concept of developing a restaurant menu module as a sample for the module development class that I taught at the Southern Fried DNN conference in Charlotte.  I thought it was a good sample application to train developer who were new to DNN because it illustrated fundamental aspects of a real world module: data access operation (create, read, delete, update), module settings, and image upload.

Fast forward to early 2016 and I found myself in need of a demonstration to teach students at my module development class at DNNCon Baltimore.  I decided to dust off my restaurant module and give it an update.  I wrote it two more times using the new DNN8 development techniques, MVC and SPA.  Then I posted all 3 modules, an updated version of the original Webforms module and the new MVC and SPA modules, on my github page.


Which technique do I use?

What are the reasons you would want to use one development technique over the other? I was able to implement the Restaurant Menu module with all three techniques.  Let's discuss...

Webforms

I'm already familiar with this technique - Ok, that's not really a good reason, but many developers may continue to build Webforms modules just because they haven't updated their skill-sets and the DNN8 platform still supports this.

I am building a module for DNN8 that still needs to be compatible with DNN7 - If you are a vendor building modules for anyone, you still need to support the older versions.  At some point, you may want to branch your code and move to a new DNN8 technique, but for now you are sticking with Webforms.

I like leveraging prebuilt Usercontrols like dnnLabel and dnnFilePicker - This is the nice thing about Webforms; the ability to compose our pages of other components.  Sure we can do it with Partial Views in MVC and directives and partial views in a SPA/Angular modules, but many useful webforms usercontrols are currently built for us in the DNN core.

SPA

Forces you to use client-centric design - What does that mean? Since our module controls must be .html files, we have no choice but to put all of our business logic into the javascript and framework services. That's what a lot of us are doing with our webforms modules anyway.

Responsive UI - I'm not talking about mobile responsive here, although in my restaurant module, I did base the new SPA version on Bootstrap. What I mean here is not posting back the page makes the UI much snappier. And let's dispel the myth that the DNN SPA technique will automatically make your module a "Single Page Application". It won't; you need to use Angular partials or Knockout templates to achieve that moniker.

MVC

You can build complex business logic and unit tests - I see this as the strongest point for MVC development; building unit tests for your MVC controllers. In the Restaurant Menu MVC module, I provide a sample unit test to get you started.

Familiar web development pattern - To old-school ASP.NET developers like me, webforms is comfortable. But to people used to other technologies, the MVC pattern is more comfortable and familiar. I was recently training a young new developer at Bluebolt on Webforms and it was completely foreign to him. But he already knew MVC, NodeJS, Angular and other modern technolgies and patterns.

Free Code?

Yes, if you missed my link in the article's introduction, get the Restaurant Menu Module in its 3 flavors on my github page.

Comments

Will Strohl
Great article, Scott. Thanks for sharing your thoughts with the community.
Will Strohl Monday, May 2, 2016 9:18 AM (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