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.


Project MaVeriCK - An Update

Just over six weeks ago Shaun published a blog called “DNN Labs: Project MaVeriCk”, where he indicated that we had initiated a project to look at supporting ASP.NET MVC development in DNN. I have spent about 25% of my time over the last six weeks on this project. There are really two objectives to Project MaVeriCK:

  1. Can we create a completely new MVC based Platform that will enable us to move forward on future versions of ASP.NET?
  2. Can we enable developers to create Modules using ASP.NET MVC today that will work within the current DNN Platform?

About the Name

The capitalization of the name “MaVeriCK” is important as it represents M-V-C on Project K. Project K was the working code name of the recently announced ASP.NET vNext which will only support ASP.NET MVC, Web API and SignalR - no Web Forms - the technology on which we have built DNN.

However, there is a second reason for the name for me personally. Back in the early days of MVC my son, Andrew, who had just started working at Microsoft and had been a member of the “DNN Core Team” developed a prototype that he called Maverick (for similar reasons). While not built directly for DNN, this was a simple multi-tenant web platform in the style of DNN, and with his permission I have used many of the ideas he proposed as a starting point for my work so far on the first goal.

The Project Goals

Let’s take a look in more detail at the project goals. The following picture shows the proposed structure of an MVC- based Architecture for DNN.

In this Architecture, we continue to support a multi-tenant solution, and the specific tenant (portal) is identified as part of the MVC Routing. Once the tenant portal and page are identified a Razor skin (cshtml) will be loaded which will in turn load the MVC Apps.

This architecture is identical in approach to how we use Web Forms today, except for the technology upon which it is based (i.e. MVC vs WebForms). In future blogs I will go into more technical detail on how we are approaching each of the steps, but I do already have a very basic working prototype that includes routing, multi-tenancy and Razor-based MVC Apps (or modules), and uses the existing DNN API. This prototype will connect to and work with a previously installed DNN database.

The second goal of this project is to bridge the gap to the MVC future by enabling the use of MVC modules side by side with Web Forms. This goal is a little more challenging as we have to merge the technologies. Developing a clean MVC-based Platform is relatively straightforward - supporting Web Form modules and MVC modules in the same application is much more challenging.

Our initial thought in this area was to put the WebForms pipeline side-by-side with the MVC pipeline as shown in the second image.

This approach keeps the MVC and WebForms pipelines separate - all the complex work to decide whether to use WebForms or MVC is in the URL Routing. The request is then routed to a pure MVC pipeline or a pure Web Forms pipeline.

Initial research in this area suggests that this approach is feasible. The cons to this approach, however are that Page Level components such as Control Panel and Page Settings would need to be re-written in MVC ,as well as key Module components like Module Actions and Module Settings.

Another approach to meeting the second goal is to support MVC Apps (modules) in the current Web Forms pipeline, by hosting the MVC app in a Web Form control. I am currently doing some research in this area, and it is initially quite promising. The work required to make this functional should be much less.

Given recent changes in the technical team at DNN Corp, I am now the prime contact with the Microsoft ASP.NET team, and we are working closely with the that team to ensure we have a compelling story when they release the next version of ASP.NET. I will keep you posted on our progress.

Comments

Brad Bamford
I would like to see a complete move away from WebForms.
IMHO, any architectural changes made to allow both WebForms and MVC should be though of as a temporary measure to ease the transition, rather than an architecture to build the future on.
Brad Bamford Friday, August 29, 2014 2:22 PM (link)
Will Strohl
Thanks for publishing these plans and your progress. It's great to have updates like this and it sounds great. Would it be possible to also share your prototypes with the community as well?
Will Strohl Friday, August 29, 2014 5:12 PM (link)
Daniel Mettler
Thanks Charles for publishing this. I believe it will help a lot in focusing future resources.

Could you confirm that the goals is to allow "new" modules made in MVC to also run inside WebForms, but that WebForms-Module-Support is not planned inside MVC? This is IMHO the only reasonable (and easy) solution, but since I believe many old-school developers are hoping for WebForms inside MVC, I believe it's important to clarify this.

Thanks,
Daniel
Daniel Mettler Monday, September 1, 2014 2:36 AM (link)
David Poindexter
Very exciting Charles! We are watching the progress of this effort closely. We have contemplated building our on "wrapper" or leveraging something like https://dnnmvcbridge.codeplex.com/ as a starting point for shifting our module development efforts to MVC. However, we are holding off to see if this effort pans out. Please keep us posted on how things are going. And any examples/prototypes visibility would be much appreciated.
David Poindexter Saturday, September 13, 2014 3:09 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