The question for today is – if I’m planning on implementing an ASP.NET Web CMS, which one should I choose?
My company used to have its own custom .NET Web CMS, Mantranet. Mantranet was a good solution in its day – it was end-to-end AAA accessible, for one thing – but eventually it became a little long in the tooth and we felt it was no longer worth the effort to modernize the product. The CMS market is now so crowded, and has major players like SharePoint in the field. We decided it was time to move on.
So the question became – which .NET CMS was the right one for us?
We could have gone with SharePoint, of course, but having looked at it, we didn’t feel it was really appropriate for us. SharePoint is very popular, and it’s great for managing information within a large company, but not so much for creating self-standing Web sites (at least, not if you are working with the free version).
So, if not SharePoint, who? The two obvious choices are DotNetNuke and Orchard. With Microsoft putting such a big push behind ASP.NET MVC, and with some Microsoft developers working on the open source Orchard ASP.NET MVC CMS, it seemed like a good idea to give it a try.
Orchard is a thing of beauty. It uses all the right architectures, from Inversion of Control to Test Driven Development. It has extensibility built into it at every point. It uses the Razor view engine (with HTML5) and has clearly been designed by some top flight programmers. We played around with it, set up a test site and created our own theme.
Then we decided not to use it.
There are various problems. Firstly, Orchard is at such an early stage of development that it’s still buggy. I found that it would not successfully create a package for deployment, but gave no useful error message to show what the problem was. Any changes to the code, even trivial ones such as applying an attribute to require HTTPS for logging in, broke the application in unexpected ways. Themes provided on the Website had errors and broke when run in debug mode.
But much more important than any of these teething troubles is a fundamental design flaw: each page is conceived as a single, monolithic content element. Any additional content you want to add is going to appear on multiple pages.
I’ve also been developing DotNetNuke sites for a few years now. It isn’t perfect and it doesn’t have such a fancy architecture – but it works, and my customers can have as many content elements on a page as they like. (Just as they used to be able to do with Mantranet).
So it’s a slam dunk – Orchard may be modern and pretty, but in terms of usability, DotNetNuke has it beat hands down. It’s easy to create your own modules (provided you know Visual Basic and ASP.NET), there’s a vibrant market in third party Modules and Skins and I’ve never had any problems with deployment. So my new site www.time2yak.com is a DNN site… We liked the look and feel of the Orchard version, though, so recreated the theme as a DotNetNuke skin.
Having said that, if you are interested in ASP.NET MVC, then I would strongly recommend downloading Orchard and taking a look at the code. It is seriously well done, and I learned a lot from it. I might well take another look the next time my company site needs renewing, and see if it hasn’t matured enough to be a real contender. Of course, it is very complex, and you might want (or even need!) to go on Building Web Applications with ASP.NET MVC first…
For related information, check out these courses from Learning Tree:
Programming SharePoint® 2010 Applications with .NET
Visual Basic® Programming for .NET
Building Web Applications with ASP.NET and Ajax