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

.NET open sources CRM Framework and Microsoft path towaed Open Source projects

June 12, 2009 12:53 by Dmitry

I just came across excellent open source CRM framework for .NET developers.  DNN (http://www.dotnetnuke.com/) .  I am .NET developer but love open source concept.  Until recently .NET had nothing open and more available then Starter Kits.  Though lately I notices Microsoft tendency to work and encourage open source community. 

 

Microsoft started to partner with non-Microsoft platforms and open source communities and showed great signs of openness and support.  Now it can run PHP on IIS, run Apache on Windows,  have different combinations of non Microsoft platform to work together like combining your project with PHP – SQL, IIS-PHP, .NET – MySQL and so on.

 

I was looking for open source CRM like Drupal and Joomla .  Even though I could run on current Microsoft infrastructure, due to the lack of extensive PHP experience I was reluctant to use it even though it did not require much development and just needed configuration.  However, I feel more comfortable to work in the environment I am professional in due to the fact that I know I will end up developing many modules and extension.  Then I stumbled upon DNN and started to investigate it.   I just started so it is too early to say on how I end up using it  but it looks like very extensive .NET open source CRM framework with large developer and user base and large number of modules, flexible , extensible and so on.  I will post later as I get to experience it.


Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Convert IQueryable (result of LINQ select or where or other function) to Generic List List

March 12, 2009 11:44 by Dmitry

 

I tried to cast it directly like this

 

And get error: Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Collections.Generic.List<TEntity>'

 

Then I found that it has method to convert to list or cast to object  and it can be either casted to TEntity by calling cast<object> or converted to List<TEntety>

 

By calling .ToList(List<TEntety>)

 

For example here us property :

 

        public List<TEntety> test

        {

            get

            {

                 Return (from tentety in db.TEntety

                            select tentety).ToList<TEntety>();

            }

        }


Currently rated 4.3 by 3 people

  • Currently 4.333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ways to Add ascx custom user control to asp.net aspx page.

March 11, 2009 12:02 by Dmitry

I  tried different ways of adding user controls to aspx page. 

 

You can add  ascx custom user control to any aspx page in different ways:

 

1.       In Declarative manner by just dragging and dropping acsx control to aspx page.  This will create the code for you.

2.       You can manually register control on the aspx page declaratively. Here in my example I just add custom calendar control to my page.  Since I use master page you see I put custom control within Content.  Tagname and Tagprefix are the names you select yourself, however it is good to have meaningful names.  Using many controls you can group them using the same tagprefix

 

<%@ Register src="../Controls/Calendar.ascx" tagname="Calendar" tagprefix="uc1" %>

 

 

<asp:Content runat="server" ID="Schedule" ContentPlaceHolderID="Main" >

 

 

                  <asp:PlaceHolder ID="customcontrols" runat="server" />

                  <uc1:Calendar ID="Calendar1" runat="server" />

 

 

 </asp:Content>

 

3.       Sometimes you will need to add user control dynamically in code behind.   This gives you flexibility to manipulate user control and add it on demand in code behind.  First you will need to load control and then just add it as a child control to any existing controls.  If you just want to add it to the page I suggest just to create PlaceHolder what can be used to attach child  controls to it.

 

<asp:Content runat="server" ID="Schedule" ContentPlaceHolderID="Main" >

 

                  <asp:PlaceHolder ID="customcontrols" runat="server" />

 

           </asp:Content>

 

              protected void Page_Load(object sender, EventArgs e)

              {

                   Control contr = LoadControl("../Controls/Calendar.ascx");

                  this.customcontrols.Controls.Add(contr);

 

              }

              

4.  If you need to access properties of public method of created control you have to access strongly typed control.  In order to do that you need to register control in aspx page:

                <%@ Register src="../Controls/Calendar.ascx" tagname="Calendar" tagprefix="uc1" %>

And in code behind cretae instance of strongly type control by using the class name assigned in codebehind and casting it like this:

 

Controls_Calendar contr = (Controls_Calendar)LoadControl("../Controls/Calendar.ascx");

this.customcontrols.Controls.Add(contr);

 

 

 

 


Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Book by Peter. F Drucker “The Effective Executive”

January 28, 2009 12:18 by Dmitry
 

Just came across interesting book that I started reading and what caught my attention.  This book is intended to anybody who is involved in decision making and who works in small or large business or organization. It is not written just for managers and executes but for everybody who’s work requires effectiveness and not just efficiency.  I attached it for all who like to read PDF version.

The_Effective_Executive.pdf (2.05 mb)


Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

MSDE Developer Conference in NY

January 22, 2009 07:42 by Dmitry
 

Just returned from it with a little ruffle gift(programmable Lego robot) what would be fun to play with and may be teach how to clean and cook dinner.

 

It was quite informative event with focus on new Microsoft Development.  As always it had parallel breakout sessions that people  could attend based on the interests.  Well, I wanted to listen all of them but unfortunately as much as I can multitask I could not be at the same time in 3 different rooms.  I am working on  being able to do it next time.

 

The focus was on new VS2010 and new tools and C# language features, Windows Azure –interesting Microsoft approach toward  all known and “so-called buz word” cloud  computing technology . Also they touched upon WPF and Silverlight 2 but in very basic aspects that I already was aware of plus presentation on that aspect was not that great.  I did like the overview of new ASP.NET 4.0 Roadmap and Jquery  introduction.  I cannot wait to see some of 4.0 features to come out especially enhanced URI routing and enhanced  element client ID infrastructure as well as MVC technology.


Currently rated 5.0 by 2 people

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

Usefull Today's Reading

January 22, 2009 05:10 by Dmitry

 

Here we go:

 1.

ASP.NET Configuration

http://www.codeproject.com/KB/aspnet/websitecofig.aspx

 

2.

Converting .NET assemblies  to Silverlight assemblies - quite usefull.  Just modify IL to use Silverlight.dll and Silverlight cut down version of mscorlib.dll and you are good to go.  See details in the article below

http://www.codeproject.com/KB/silverlight/SLAssemblies.aspx

 

3. Calling Web Service from AJAX page, MIcrosoft made it very easy and now you can use JASON instead of SOAP:

 http://aspnet.4guysfromrolla.com/articles/011409-1.aspx

 

Tip of Today:  In order to enable JavaScript intelisence in VS 2008, just drug and drop javascript file on the asp.net page. 

 


 

 


Currently rated 5.0 by 2 people

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

About Me - Here how it starts

January 15, 2009 11:54 by Dmitry

Here is where I start my blog.  I will not cover all aspects about myself because I do not intend to write a book or autobiography  but will share my professional experience and will post as I develop and grow.   I decided to start a blog about my life, my profession – what is also my passion and hobbies, however then I decided to keep my personal and professional life separately and started 2 different blogs.

 

I work as IT director in mid range fast growing company in wellness industry.  Along with significant IT and Development experience I am learning a lot about health and wellness.    I am in charge of all software development in the company including and not limited to desktop and web applications.  We have 2 main complex diagnostic systems products that comes with software that we support, develop and enhance.  Systems are unique and innovative in a main concept and technology.   We also have 3 web site that we constantly update, develop and improve.  Working with small development team I get to do many different task working with Database, Client/Server Apps, Network, Desktop apps, Web Application and so on, you name it.

 

I have started programming since I was 12 years old and never stop loving it. In a rapidly growing industry and highly innovative environment  no developer can be successful without hard work and constant knowledge update and practice.  I read and practice new things everyday and here I will share my experience.  I will use this blog to share new challenges I face, useful tricks and code sample I come up or stumbled upon on the web and many more whatever I in a mood of sharing

 

Stay tuned… 


Currently rated 5.0 by 1 people

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