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.


DNN Labs : Project MaVeriCK

DNN's loosely coupled architecture has always provided software developers with the flexibility to extend the platform using their preferred tools and methodologies. This has allowed the platform to cater to the needs of developers with diverse backgrounds, skill sets, architectural ideals, process requirements, and risk tolerances to new approaches and techniques.

Approximately two years ago I published a controversial article where I described how the shift to client-side development techniques was making the server-side framework choice less relevant. And if you look at the technology landscape today, you can clearly see how the trend towards back-end services that can be consumed by a variety of clients and devices is now a mainstream business requirement. So in this respect, the predictions made 2 years ago have come true.

That being said, there is still a need for a capable server-side framework. This is because every single web interaction begins with a transfer of content between the server and the client. In the case of single page administrative applications ( SPA ) the subsequent interactions are limited to small focused communications between the client and server. However when it comes to publishing web page content to anonymous visitors; a primary use case in most DNN sites, it is critical to have a high performance server-side page compositing engine. This is especially true if you want your site content to be properly indexed by search engines, as they are only capable of following links and parsing the raw HTML content that your site produces.

ASP.NET WebForms is a capable server-side framework and customers have been relying on its capabilities for many years. ASP.NET MVC is another viable option within the .NET Framework which has evolved significantly in the past 5 years and has now reached a point of maturity and market penetration where it is often the preferred development methodology for many organizations in the Microsoft ecosystem. And since it is also the primary development methodology for new software developers who are just entering the workforce, it is important for DNN to offer a native MVC development option for building modular extensions.

With that I would like to introduce Project MaVeriCK ( the capitalization is important because it represents M-V-C on Project K ). The goal of Project MaVeriCK is to do some research on how we could enable a side-by-side development model so that both WebForms and MVC can co-exist within the same DNN website.

The diagram below shows a high level architectural representation of how MVC could be integrated with the existing DNN platform. You will notice that the URL Rewriting and Multi-Tenant identification is the first thing that happens in the pipeline and this is where the decision will be made to hand off the request to either a WebForms or MVC container for further processing.

In the MVC model, we would utilize all of the native capabilities of MVC for skinning and developing modular apps. Modular MVC apps would also be able to leverage the broad range of capabilities in the existing DNN API - either natively or via web services. Initially this pipeline would run on the existing .NET stack but we are also looking at opportunities to run on the new Project K infrastructure that Microsoft will be releasing in the not too distant future. A noSQL database is also included on the diagram to represent opportuities where apps may need to manage Big Data ( ie. analytics ) and would therefore need to consider a best-of-breed database for that use case.

Modernized MVC Architecture

The following diagram provides more detail of the side-by-side processing model, where some pages within a site will be processed using the WebForms pipeline and others using the MVC pipeline. An important item to note is that modular apps built in the traditional manner based on ASP.NET User Controls will only function in the WebForms pipeline. Whereas, modular apps built using native MVC techniques will be best suited to run in the MVC pipeline. However, there is also the opportunity to build modular client-side apps using simply HTML5 and Javascript which will function in either pipeline. These apps could leverage popular client-side frameworks such as Anglular.js or Bootstrap.

Side by Side MVC and WebForms Page Processing

Charles Nurse will be providing more detailed information about Project MaVeriCK as he makes progress on the prototype.

 

Comments

rudgr
Wow, this is great news Shaun!!! :)
rudgr Thursday, July 3, 2014 1:57 AM (link)
Rodney Joyce
This is excellent news - I was weighing up the cost of abandoning DNN to focus on MVC projects as it is so much easier to deploy and developer... now I will wait to see how this project goes - would be great to be able to use MVC projects in a DNN site.
Rodney Joyce Monday, July 7, 2014 8:44 PM (link)
Daniel Mettler
I believe such a future is awesome. And very, very important to do soon.
My recommendation: Please give out guidelines how to create MVC-Modules today, ensuring compatibility in the future. Because I believe that it's possible to create MVC-Modules that will work on both "pipelines" without a problem, it just requires some clean pattern.
Daniel Mettler Thursday, July 10, 2014 11:25 AM (link)
Shaun Walker
It is possible to create modules using Razor today ( Razor is the default "view engine" in MVC ). However using Razor alone is not a truly native MVC development experience, as you can not use some of the other fundamental aspects of MVC ( ie. you can not easily use routes which is a core aspect of MVC ). Some developers want to be able to take advantage of more of what MVC has to offer - well beyond just using Razor. That being said, I know there are many developers who are successfully using Razor in the WebForms model today and I think we should continue to encourage this practice.
Shaun Walker Thursday, July 10, 2014 3:23 PM (link)
Ax. Wx.
I am pretty interested in seeing how this evolves. Is there a way to be put on an update thread, so I can keep my company abreast of developments on this front.
thanks
Ax. Wx. Tuesday, August 5, 2014 12:15 PM (link)
David Poindexter
One word - SWEET!!!! We have been anxiously awaiting this type of evolution in DNN and we can hardly wait to see some best practices published so we can make development plans accordingly.
David Poindexter Thursday, August 14, 2014 7:49 PM (link)
Yuriy Kirichenko
The MaVeriCk project is not supported since 2009 (https://github.com/anurse/MaVeriCk/).
Yuriy Kirichenko Wednesday, August 27, 2014 1:19 PM (link)
David Poindexter
@Yuriy Kirichenko - please see http://www.dnnsoftware.com/community-blog/cid/155045/project-maverick--an-update as this is very much a current and viable effort.
David Poindexter Saturday, September 13, 2014 3:10 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