With over 160,000 registered members, DotNetNuke (DNN) is by far the most popular, free, open-source content management system available for ASP.NET. And while many people (and companies) have designed professional looking websites with it, a significant portion of the websites based on DNN do not exploit even a fraction of the capabilities it provides. One reason for this is that, despite the wealth of documentation that comes with DNN, most people are not fully aware of the capabilities of the system. The book Building Websites with VB.NET and DotNetNuke 3.0 can help you discover these capabilities.
The contents of the book can be logically grouped into five sections. The first section covers chapters 1-5 and deals with the introduction, the installation procedure, and the various components of a default DNN installation. The second section, chapter 6, deals with the core architecture of DotNetNuke. The third section, chapters 7-9, explores the various ways of extending and customizing DNN. The fourth section, chapters 10 and 11, deals with deploying a DNN portal and creating multiple portals. The final section, chapter 12, makes an attempt to explain how the Provider model has been used in DNN to create a pluggable architecture.
The first chapter of this book gives a brief introduction to the concept of web portals and DotNetNuke. This chapter serves as a good introduction to DNN and web portals for the uninitiated. However, in my opinion, the section selling DNN over the other content management systems was not really necessary.
The second chapter details the installation procedure, and covers both a clean install and an upgrade to an existing DNN installation. The clear narrative and screenshots would enable even a novice to perform a clean installation or upgrade an existing installation. It also provides URLs of resources that might come in handy while installing DNN.
The third chapter discusses the concept of users, roles, and pages as applied to DotNetNuke. The descriptions of various screens are quite detailed and helpful, but a few walkthroughs of common tasks with the results displayed would have been great to have. Also, while users and roles belong together, the description of pages would probably have gone better with modules.
Chapter 4 discusses the standard modules that are installed by default with a DNN installation, and explains the various features of each one in detail. The level of detail makes this helpful to a beginner, though someone with a bit more experience would probably skim through this chapter noting the various salient points. Also, a few walkthroughs of configuring the modules with a screenshot of the end result would have been a good idea.
The concept of host and admin users and the various tasks associated with these account types are detailed in Chapter 5. Once again the description of the various screens and tasks is detailed and clear.
The core architecture of DotNetNuke is discussed in Chapter 6. This chapter begins by giving a brief overview of how a page is constructed by DNN when a user requests it. From there it dives into the architecture and describes the various objects and configuration files that are key to the CMS, and explains what they do and how they do it. The chapter rounds off with an overview of what happens in the CMS when a page is requested.
Chapter 7 deals with creating a custom module from scratch. It deals with all aspects of developing a module, like setting up a private assembly project, creating view and edit controls, and coding the Data Access Layer and Business Logic Layer. Finally, it describes how to package and deploy the module for public distribution.
Skins are used to customize the look and feel of the portal and are dealt with in Chapter 8. This chapter first explains what a skin is and then goes on to explain how to create a custom skin using Visual Studio .NET or an HTML editor, how to deploy it, and how to apply it to all the sites running on an installation of DNN, a specific site, a specific page, or even a specific module.
Chapter 9 lists a collection of free and commercial modules that can be added to your portal to provide specific functionality (payment processing, blogging, displaying weather information, etc.) and provides useful links to sites that offer more modules.
It's all well and fine having a DNN portal hosted on your local machine, but if it is to serve any useful purpose, the portal needs to be hosted on a public web server. Chapter 10 covers the nitty-gritty of deploying the portal to a web host. It covers setting up the database, setting permissions to folders, and all the various tasks that need to be done.
One of the key features of DNN is the ability to run multiple portals from the same installation. This permits us to host several different websites (domains with their own unique URL) to be hosted under one DNN installation. This is a powerful feature and Chapter 11 describes how to configure your DNN installation to set up multiple portals.
Another exciting feature about DNN is its use of the Provider model to give the application a pluggable architecture. This permits the developer to swap the tools used to accomplish various tasks (logging, text editing, etc.) with his or her own choices. The Provider model is explained in chapter 12, which also has a walkthrough that shows how to replace the default RichText editor that comes with DNN (FreeTextBox) with another editor.
The subject matter is dealt with in a manner that is clear and easy to follow, and the screenshots that are used enhance the clarity of the topic being discussed. While dealing with the configuration of the site and various modules, the text follows a screen description format that is clear and simple, but using walkthroughs for common tasks would be helpful, especially for users who are new to DNN. The price, while a bit on the high side, is not extraordinary for a book covering a niche area. Overall, this book is a good resource for both novices and more experienced developers.
About the Book
Building Websites with VB.NET and DotNetNuke 3.0
By Daniel N. Egan