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