Welcome!

.NET Authors: Liz McMillan, Peter Silva, Yakov Werde, Matthew Pollicove , Kevin Benedict

Related Topics: .NET

.NET: Article

ASP.NET - Introducing the "DotNetNuke" Web Application Framework

Content management made easy and a new breed of highly functional Web applications has emerged

After you create the page, you will see a WYSIWYG representation of the page in your browser that contains a number of empty content regions. Since you are logged in as the administrator, you will be able to add content modules to the page by selecting the appropriate options from the controls in the center of the control panel and selecting the Add Module icon (see Figure 3).

Once a module has been added to a page, you will need to add some content for the module. Hovering your cursor over the drop-down arrow icon next to the module title will display a pop-up module actions menu. This menu contains a variety of options that you can use to manage module content. To add new content to a module, select the top item in the list (Edit Text in the case of the HTML/Text module). This will display an edit-user interface that is specific to the module (see Figure 4).

Customization
Every Web site needs to have the ability to customize its appearance, a term often referred to as "skinning." The level of customization depends on the needs of the individual client, but in general, any restrictions on creative freedom may be considered to be serious deficiencies in the eyes of the Web design community. Some Web Application Frameworks limit you to static layouts, others claim to have customization through cascading style sheets (or themes). The optimal skinning architecture abstracts the Web application details from the Web designer, thereby allowing them to replicate the visual appeal of a static Web site in a fully functional Web site (see Figure 5).

Perhaps the most powerful feature in DotNetNuke is its flexible skinning engine. The base architecture evolved from a realization that the needs of Web developers are much different from those of Web designers. Web developers are comfortable with Integrated Development Environments (IDE), which generally have powerful debuggers and syntax validators but extremely limited design features. Conversely, Web designers are proficent in a wide array of creative applications that provide expert design features, but extremely limited programming support. In order to actively engage the Web design community, DotNetNuke provides an architecture that provides the cleanest abstraction of these two philosophies and maximum flexibility for Web design elements.

With a constant focus on simplicity, a DotNetNuke skin is developed as a standard HTML document (a classic Web page). Each area in the Web page that requires interaction with the underlying Web application is specified as a token (i.e., [MENU], [LOGIN], [REGISTER], etc.). Once the skin is fully designed, it is then packaged as a standard ZIP file which allows for maximum portability. The ZIP file contains the HTML document, its related graphical images, styles sheets, and other related resources. When the skin package is deployed into a DotNetNuke application, the HTML document is parsed and an ASP.NET User Control (*.ascx) is created. This User Control represents the compiled version of the skin that integrates seamlessly with the underlying Web Application Framework. Skins can be applied to a site at run time by administrators using the Skins option in the admin menu.

Moving beyond Web design customization, there is also an extensibility requirement in terms of Web site functionality. As mentioned earlier, DotNetNuke has a concept of mini-applications known as modules. Modules are not simply "dashboard" components that display relatively static information in the Web browser. Rather, they can include an unlimited number of interactive user interfaces and views, empowering developers to create highly functional and intuitive Web site components. Modules are created as standard ASP.NET user controls that can then be packaged, distributed, and deployed directly into the run-time environment. The module architecture is based on the classic Model-View-Controller (MVC) pattern that has become ubiquitous with enterprise Web application development on all platforms.

In terms of module availability, DotNetNuke provides a variety of highly functional modules, including Announcements, Events, Forums, and Blogs, which are managed in an official capacity by the open source contributor community. In addition, there are hundreds of third-party modules available, both free and commercial, which can be acquired from various resellers and resource sites. This active ecosystem is one of the primary reasons for DotNetNuke's exponential growth and sustained momentum.

DotNetNuke's world-wide popularity could also be attributed to the fact that it is has powerful localization architecture. Similar to the plug-in model for skins and modules, each language pack is a single ZIP file wrapping a series of resource (RESX) files that contain the localized values for all static text in the application. Switching languages is done easily through the admin menu option for Languages. DotNetNuke takes flexibility a step further by making it possible for an administrator to customize the localized text to suit their specific needs. For example, if you want to change the word "Log In" to "Sign In," it can be changed in the associated resource file. The terms in the language pack can all be edited directly in the administrator area of the Web site.

Why DotNetNuke?
DotNetNuke offers tangible benefits for a number of diverse stakeholder groups.

Creating and maintaining a Web application can be a complex task. DotNetNuke does an exceptional job of hiding this complexity. Its detailed on-line help, open source samples, and sensible defaults assist developers and administrators in installing, administrating, and using the Web Application Framework. Extensibility pervades all aspects of the core architecture, providing nearly unlimited opportunities to extend the base application (see Table 1).

Perhaps the greatest strength of DotNetNuke is the community that has grown around the project. Both developers and users participate in DotNetNuke's active discussion forums, where they share tips, announce new developments, help new users, share resources, and debate new ideas. DotNetNuke's low barrier on entry, flexibility, and ease of use helps bring powerful Web application technology within the reach of those with limited technical and financial resources. DotNetNuke is an excellent example of how and why the open source model works.

The Future
The DotNetNuke project has been restructured recently to separate the modules from the core application. This separation allows the modules to form their own open source project teams that can manage the functionality and provide enhancements on their own release cycle. This should result in more frequent release schedules, better community support, and more innovative features.

Microsoft has recently launched their new ASP.NET 2.0 platform on November 7, 2005. One of DotNetNuke's traditional strengths has been its ability to "bring the power to the people" - showcasing cutting-edge technology in an open format that is easy to understand and leverage in real-world environments. Our current plans are to release a new version of DotNetNuke for ASP.NET 2.0 in conjunction with Microsoft's platform launch.

More Stories By Shaun Walker

Shaun Walker is founder and president of Perpetual Motion Interactive Systems Inc., a solutions company specializing in Microsoft enterprise technologies. Shaun has 15 years of professional experience in architecting and implementing large-scale IT solutions for private and public organizations. Shaun is the creator and maintainer of DotNetNuke, an open source Web Application Framework written for the Microsoft ASP.NET platform.

Comments (5) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
11/01/08 06:16:54 AM EDT

Trackback Added: ASP.NET - Introducing the "DotNetNuke" Web Application Framework; <p> </p> ...

Keith Norfleet 12/21/05 03:49:24 PM EST

I am a DNN fan with several small business and personal efforts. I am currently looking to architect a new framework based on .Net 2.0 and looking at DNN as entry point. My problem and concern is finding documented examples pf people/companies that have actually taken DNN and used it as there core web application framework in an a truly enterprise environment is sparse. If any one could give me a strong business case or success story (links?) that would be great. We have many lines/divisions of business here and my DNN experience leads me to think I could take DNN and customize a base DNN site (our own starter kit) that has the marketing and custom modules that I would want all sites to start from.

The thinking is this would lowering our TCO and time to market for new business initiatives but I would like to hear if anyone has ever done it. I also know that creating custom modules for DNN is not a small undertaking especially a multiple page wizard such as an operator completing a loan for an applicant over a phone!

The other piece is modules talking to modules. Say I have a module for taking in a loan and another module with the notes pertinent to that loan with history, comments etc. Tying these modules together (dashboard) is simply something I have not seen DNN do. The modules are intentionally autonomous.

Editor 12/02/05 06:20:38 PM EST

An interesting enough read, but why is it in the **JAVA** developers journal?

Editor: "Stephen this article was published in the current issue of .NET Developer's Journal, not in Java Developer's Journal.

Stephen 12/02/05 04:58:02 PM EST

An interesting enough read, but why is it in the **JAVA** developers journal?

.NET News Desk 11/30/05 03:35:16 PM EST

ASP.NET - Introducing the "DotNetNuke" Web Application Framework. Over the past few years, a paradigm shift of monumental proportions has been quietly occurring on the World Wide Web. The traditional 'brand-builder' Web site whose sole purpose was the delivery of static marketing information to potential customers has finally lost its appeal. Fuelled by the demands of Web-savvy business owners and consumers, a new breed of highly functional Web applications has emerged; these applications deliver dynamic content, community collaboration, interactive behavior, and real-time communication.