Dmitry Starchuk's Professional Blog
Development and Architect Experience

Using DNN(DotnetNuke) for large projects – my experience

November 6, 2009 12:06 by Dmitry

I started  relatively large web project that has potential to grow and one of the major requirement was to have it scalable, flexible and extensible.   Little wile  before I started the project I have heard about DNN and did some basic reading and research on what it is and what it does.   After what I found I would say DNN impressed me and I decide to use it when appropriate project comes up Though I primarily work on Microsoft platforms, I respect and see a great value in open source community.  It was kind of cool to see open source CMS build on .NET  after seeing  mature open source projects such as Drupal, Joomla succeed.   A while ago I never thought that Microsoft can get along with open source community what always bothered me no matter how much I liked the technology.  I am very glad to see that Microsoft saw opportunities to go that route.   I guess it was the move  toward opportunities and at the same time inevitable decision.   I firmly believe that it would hurt Microsoft not to take this route.  Now we see Apache  on Windows and PHP on ISS and other variations from LAMP(makes me happy).

Back to the topic.   Before starting my project in design phase I was debating on whether to use exiting framework or build it from scratch.  After some research and decision revisions I made decided  to use DNN as framework(at that time and still it is a biggest  .net web framework plus it is open source).   DNN is not just CMS what I thought before but mature framework with many plug ins and modules.   Here are some rational that I used when making the decision:

Reasons to use DNN:

1.       Using existing framework will enable me to concentrate on the biasness and domain logic rather spending time on infrastructure and plumbing

2.       Defiantly a time saver

3.       I could take advantage of exiting mature, secure framework contributed into by open source community. 

4.       Also to mention that I could also learn from it( I love looking at learning from code written by talented  developers – one of the best way to learn and grow)

5.       I could take advantage of thousands free or low cost  modules developed for DNN – why reinvent the wheel – use the time for important domain logic and requirements

 

Here is what I was concerned and how I justified it

        1. Learning curve time to use DNN

  •     I figured that learning it will be less then coding it and it will benefit me for future projects if I tend to like it – well I think good time investment

2.       2.  Was not sure about maturity of the framework and quality of the architecture and code – did not really want to deal with somebody’s else bugs

  •    After my research I learned that DNN was mature system, had very talented community of developers behind it as well as powered thousands web site as well as some very large once that gave me confidence in using it

3.       3. I knew I will have to wrap my head around new technologies and might be limited on how I can use different design patterns and work with latest Microsoft frameworks.

  •   I decide that benefits outweigh  the inconvenience  and went ahead on learning it.

 

After few month into the project here is what I find:

1.       Still do not regret on using DNN but seemed to encounter more problems that I thought but at the same time positive surprises

2.       DNN is very robust and well working framework , though it has it minor problems and bugs like all software  do

3.       In particular

Pros

  • It has reach and useful API and basic plumbing build what was even beyond my expectation
  • Has useful controls and widgets
  • Easy to work with and well written code

Cons

  • As I expected and confirmed by now I am limited on design patterns and frameworks.  Wanted to use MVC but have to stick to Web Forms. I guess benefits still outweigh the cost
  • I tried to build my own library by warping DNN classes so I can easily decouple if I decide not to use DNN later, however it turned out to be more work then I though and I decide that it outweigh the benefits using  the platform since I almost have to rewrite most of classes. So instead of doing that I decide to reuse exiting classes but build some wrappers trying to keep it as decoupled as possible.
  • Tried to use TDD using nUnit what is not very straight forward since running DNN assumes that it runs in web context and it heavily rally’s on HTTPContext for cashing.  Though I found a solution on codeproject (http://www.codeproject.com/KB/aspnet/DnnUnitTesting.aspx) by  Bruce Champman that seem to have solution to it by building  library that mocks the objects.  Still working on making it work and hope to successfully utilize it.  Hats off to Bruce.

CONCLUSION:

 

I am still exited on using DNN deposit few set back.  In either case I will continue with it unless I run into too many problems or dead blocks.  Even then I think, that DNN is very useful and great framework – cms.  I will keep writing on my experience as I proceed further.

 

Feel free to comment with your experience, I am always grateful to find out on whether  you encounter similar or different cases.

 

 


Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: ,
Categories:
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Related posts

Comments are closed