Tuesday, February 3, 2009

ASP.NET and Content Management - Telerik's Sitefinity CMS

Over the years I have had several occasions to integrate a content management system (CMS) with a .NET or classic-ASP web site. Until recently, I had never found what I would consider the "ideal" solution from a cost, development flexibility, and CMS feature standpoint.

I don't think my client situations have been significantly different from those you have experienced in your workplace or with your clients. Our clients want full-feature content management solutions at a relatively low cost with the flexibility to build their sites exactly how they want them without being restricted by the capabilities of the CMS.

The various integration options I had investigated usually did not provide the level of flexibility required from a development standpoint or the cost of the package was prohibitively high. Custom development of content management capabilities is always an option, but it is hard to justify the cost associated with custom development that results in a minimal set of CMS features.

This past November, I engaged with a client to re-build an existing commerce-enabled web site. One of the priorities high on their list was Content Management Capability. My quest for an adequate content management system was started anew and continued until I found Telerik's Sitefinity CMS. I downloaded the free standard version, installed it on my laptop, and took it for a spin.

What I discovered was a CMS solution that, 1) provides excellent CMS functionality, 2) integrates seamlessly within a .NET environment, 3) provides endless customization capability, and 4) is free! (the Standard version is free, the Community version is in the neighborhood of $700).

Sitefinity has a full-feature, web-based administration console that allows Content Managers to create pages, modify page layouts, organize content blocks, add and edit static content, schedule and expire content, manage themes, manage CMS security, and, essentially, any other standard CMS feature.

From a development standpoint, a Sitefinity site is made up of the standard building blocks of any .NET web application. The site templates are essentially master pages with defined content zones. Developers can create the site templates (master pages) to accommodate all functional and creative design requirements. The web pages themselves are defined through the Sitefinity admin console and are deployed as .aspx pages. Static content can be created and maintained through the admin console by dragging and dropping Sitefinity controls into the content zones of the .aspx pages. Components of the site that require custom code can be deployed as .NET web user controls (.ascx files) and integrated into admin console with one web.config setting. The .NET web user controls can then be dragged and dropped into any of the web (.aspx) pages through the admin console.

In my current implementation, I have 20-30 custom .NET web user controls, 4 master pages, 1 theme, 50+ .aspx pages, and a client business and data access assembly. There are also 75+ static content blocks managed by the business users.

Even though the Sitefinity solution has met my Cost, Flexibility, and Functionality criteria, there have still been a few drawbacks.

1. I have not had to establish a legitimate staging environment for this web site yet, but I anticipate some struggles when that day comes. The Sitefinity data is stored in a SQL Server database and includes the .aspx pages, layouts, static content, CMS user info, etc. In order to successfully promote the site from development to staging to production, we will need to follow a strict process that involves the promotion of the Sitefinity CMS databases.

By the way, the current development environment consists of a central Sitefinity CMS database on a development server. The web site files (master pages, stylesheets, .ascx controls, etc.) are stored in the file system and checked into a Subversion repository. Developers must have connectivity to the Sitefinity CMS database to be able to work. Custom code is checked into the subversion repository and promoted to the development site as needed. Developers can work on their own local development site as long as they're connected to the central Sitefinity CMS database

2. The build process can be painfully slow. This falls under the category of "there has to be a better way," however, I haven't discovered that better way yet :) The Sitefinity footprint contains many assemblies that may or not be required for my deployment, so I'm sure there are some that I can eliminate to speed up the build and de-bug process.

If you would like to discuss LogiSolve's experience integrating Telerik's Sitefinity CMS solution with a .NET web deployment, please do not hesitate to contact me at dave.lillquist@logisolve.com.

You can learn more about Telerik Sitefinity CMS at: http://www.telerik.com/products/sitefinity.aspx

You can learn more about LogiSolve at:

Dave Lillquist
Partner, Microsoft .NET Technologies
LogiSolve, LLC