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.
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.
Charles Nurse will be providing more detailed information about Project MaVeriCK as he makes progress on the prototype.