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.

SPA: A DNN First Class Citizen


SPAOver the last 25 years since the World Wide Web was first created, the web has undergone dramatic change. Web pages started out as static documents with rudimentary styling and graphics. During the first decade of web development, frameworks like Active Server Pages and ColdFusion added server side programming to enable the development of rich web applications. JavaScript was added to enable simple browser interactions, but was generally considered too slow and limited for serious web application development.

Over the following decade, the web went through another major growth spurt as developers pushed JavaScript to its limits and beyond. Browsers continued to advance to drive client-side performance and capability. In addition, the development and refinement of AJAX techniques made it possible to deliver even richer browser experiences than were previously possible.

In the last 5 years we have seen an explosion of Single Page Application (SPA) frameworks like Angular, Backbone, Ember, Aurelia and more. These frameworks leverage JavaScript and AJAX to enable the development of rich web applications with desktop application like performance.


In DNN 8, we are working to enhance the platform by embracing modern web development techniques. In CTP 1 we provided the framework enhancements necessary for building modules using the ASP.Net Model View Controller framework. MVC modules embrace a convention over configuration approach that simplifies module development. This approach also makes it easier to build modules which use modern development techniques like dependency injection and unit testing throughout.

I am happy to announce the release of DNN 8 CTP 2. In CTP 2 we focused on enabling the development of pure SPA modules. There have been many blog posts on DNNSoftware discussing how to develop modules for DNN using SPA frameworks. Unfortunately, virtually every previous approach relied on the use of Razor scripts or ASCXs to host the SPA app. This adds an extra layer of complexity to SPA development.

In CTP 2, SPA modules will become first class citizens that don’t rely on RazorHost or an ASCX page for bootstrapping your module. DNN 8 will allow you to take pure HTML, CSS and JavaScript and package them as a standard module. If you add a little server side WebAPI code, then you can create full featured SPA modules very quickly and with minimal friction.

In order to allow developers to take advantage of some DNN features when building SPA modules, we also added TokenReplace API support. This will allow developers to access common tokens like Users, PortalSettings, ModuleSettings and the like and have those automatically rendered inline. In addition we created new tokens that you can use to render JavaScript and CSS references. These tokens integrate with existing JavaScript library APIs as well as the Client Resource Framework. Finally we added a token for accessing resource strings and another for creating lightweight Module Action Menu items.

Secure Web Services

CTP 2 doesn’t stop with just SPA modules. Ever since we added the Web Service Framework to DNN, we have wanted to have the ability to create secure web services that could be accessed from outside of your DNN installation. In prior DNN versions, modules could access DNN web services securely, but if you wanted to consume a web service from a mobile application or another website, you were forced to roll your own security framework.

In this build, we have enabled the use of a new HMAC attribute. This attribute, along with new user settings allow for a lightweight option for securing web services over HTTP. Once your web service is built using this attribute, you will be able to authenticate every user. When combined with the existing Authorization attributes, you will have full control over who can access your API. This is a good start for securing web services, but it just the first access security option we will deliver in DNN 8.


There are still many features left to be developed for DNN 8, but we think CTP 2 includes many useful developer focused features. Future builds will finish fleshing out these initial developer features and will include many user oriented features as well. Charles Nurse and Cathal Connolly will be following up over the next couple of days with more in depth posts on how to use the MVC, SPA and HMAC features delivered in CTP 1 & 2.

As usual you can download CTP 2 on CodePlex.


Clint Patterson
Very exciting stuff Joe! Thanks for sharing... looking forward to the release and upcoming blog entries!
Clint Patterson Friday, May 22, 2015 4:19 PM (link)
Tony Henrich
Thanks for the update. However the install blows up because of a syntax error in the last sql provider file. Please test the releases before announcing their availability. I reported syntax errors in the same file in the tracker a while back. Someone seems to be doing manual edits in the file without testing their changes. This is becoming frustrating because, we early adapters, are spending (or should I say.. wasting) too much time trying out these stuff, finding these types of simple avoidable issues if someone spent 5 minutes testing.. and then we have to file a bug report. I am OK with bugs but these syntax errors should not be there in the first place. Anyways, someone reported the fix on codeplex and gave the release one star. Another unhappy user!
Tony Henrich Saturday, May 23, 2015 3:42 AM (link)
Joe Brinkman
Tony, We normally do a better job of testing but due to our efforts to finish 7.4.1 testing and some last minute updates to 8.0.0 to resolve issues with HMAC I ended up testing the wrong packages. I've uploaded new packages to CodePlex.
Joe Brinkman Saturday, May 23, 2015 7:18 PM (link)
Daniel Mettler
Awesome stuff. SPAs are for certain the way to go. Also looking forward to HMAC support. Keep it up :)
Daniel Mettler Tuesday, May 26, 2015 4:23 AM (link)

Comment Form

Only registered users may post comments.


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Davies (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)
Timo Breumelhof (24)
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