CSLA vs. DotNetNuke for an enterprise web app

CSLA vs. DotNetNuke for an enterprise web app

Old forum URL: forums.lhotka.net/forums/t/485.aspx


Mountain posted on Tuesday, June 27, 2006

My company is getting ready to start development on a major new version of its web application. We want to utilize an open source framework such as CSLA. Internally, we have been considering CSLA 2.0 most strongly. An outside "consultant" told us yesterday that he would use DotNetNuke instead (version 3.3, not 4.3).

For a web-only application, how do the people on this forum feel about CSLA vs. DotNetNuke?

Is it simply a question of choosing either best-of-class components (i.e., CSLA + whatever else we select) vs. choosing a bundle (DotNetNuke), or is there more to it? Do the 3rd party modules for DotNetNuke tips things in its favor?

Is DotNetNuke truly OO in design, at the same level as CSLA?

Thanks

david.wendelken replied on Tuesday, June 27, 2006

DotNetNuke (DNN) has some really slick features.  I've learned a lot about .Net by going thru its code.

Ditto for CSLA.

Mostly learned very different things from each, by the way!

Personally, I don't feel that you have an either-or choice.  I don't see any reason why you couldn't make use of DotNetNuke for its website architecture and built-in features and CSLA for its business object architecture for your own application specific logic.

I'm intending to do just that for a project of my own.

FYI, DNN is written in VB, but accepts C# modules that you write.

CSLA is, of course, available in VB or C# versions.

DNN website is www.dotnetnuke.com.

 

tetranz replied on Tuesday, June 27, 2006

I was about to say pretty much exactly what David said Smile [:)]

Its a subject I'm quite interested in and would like to hear others' experiences. DNN seems to be a real rising star. Its not perfect but it has a great community and good leadership.

The built-in business and data access layers in DNN are somewhat simplistic compared to CSLA but then again, a lot of CSLA stuff is concerned with multilevel undo etc which doesn't really apply in a web situation.

As David said, you can build modules which act as a front end to CSLA business objects. I've done this for a simple inhouse application and used some of exactly the same C# BO's as we use in a WinForms application. I think it would get more difficult if you try to integrate the DNN security roles etc. They control what menu items appear and what modules are visible etc. I haven't looked at the latest DNN 4.3 yet but from what I've read, they've done a lot of refactoring and decoupling of the membership system so things may well be easily now.

Admittedly I haven't done a lot with ASP.NET 2 yet but if you're building a significant CSLA based web application, I think you need more "framework" than just CSLA. You need to first decide whether to have separate aspx pages directly accessible or pass everything through Default.aspx in more of a MVC pattern which then makes life easier in terms of logging and security etc. DNN certainly seems like an attractive place to start from.

Cheers
Ross

Mountain replied on Tuesday, June 27, 2006

tetranz:
I was about to say pretty much exactly what David said Smile [:)]

if you're building a significant CSLA based web application, I think you need more "framework" than just CSLA. You need to first decide whether to have separate aspx pages directly accessible or pass everything through Default.aspx in more of a MVC pattern which then makes life easier in terms of logging and security etc. DNN certainly seems like an attractive place to start from.

Cheers
Ross

We have a very nice MVC architecture that we were planning to graft onto CSLA. I suspect we would end up with something a lot less sophisticated by using DNN. However, it might be that the faster time to market with DNN wins out over the better architecture we would get by using CSLA plus our MVC framework plus a really nice data access architecture.

The comments here are really interesting and really helpful. Thanks!

david.wendelken replied on Tuesday, June 27, 2006

If you already have a nice MVC architecture that you want to make use of, and that your staff already know and use well, don't assume DNN will speed you up.

Where it would help you would be:

Where it would hinder you would be:

Good luck either way!

 

 

kennster replied on Friday, July 21, 2006

david.wendelken:

Personally, I don't feel that you have an either-or choice.  I don't see any reason why you couldn't make use of DotNetNuke for its website architecture and built-in features and CSLA for its business object architecture for your own application specific logic.

I'm intending to do just that for a project of my own.

Hi David:

Thanks for your input. I have been thinking the same thing:  I have developed numerous DotNetNuke modules using the standard DNN DAL approach. I find that it is too simplistic and not well defined enough to use on future projects. I am curious, about a month has passed since your post, have you made any progress on your project you may wish to share?

I am also considering the use of .netTiers for these layers as well as I wish to use Codesmith to generate this code. My only questions are, how much dependency do I wish to have on DotNetNuke when I write my UI Layer: I use what I have read to be the 'dispatcher' pattern for module development: that is, my modules use a single View Control, and all actions within the module are driven by reading the query string to determine which sub-module control to load, which is then loaded into the main module workspace using a frame control, much like YetAnotherForum.net, which has compatibility library for both Rainbow Portal & DotNetNuke.

Speaking of Compatibility library, this would be a good idea for any Enterprise Module developer to abstract a Specific Portal's capabilities such that the module can be portable between say Rainbow Portal, DotNetNuke, and possibly even Windows Sharepoint Services or Microsoft Content Management Server.

 

david.wendelken replied on Friday, July 21, 2006

Nowhere near where I wanted to be, but none of it due to CSLA or DNN issues.

Severe staffing shortages on my project have slowed us down, plus some configuration issues and non-project related taskings. 

Had to struggle thru the object model for the project a bit.  I'm a data modeler that's becoming an object modeler.  Some of you know what that entails.  I think I've gotten an object model that's pretty close to what I need it to do.  There are a few situations I'm unsure about the best way to model.  I made a best guess and I'll find out next week.  If I guessed wrong, I'll be able to try the other ways with less than a day's work, so I'm not too worried.

We have about 30 CSLA classes written (first cut took a non-CSLA trained junior programmer a week to do).  Had to do the coding in notepad because the vs2005 software hadn't been installed yet. 

We just got the ability to compile in vs2005 today and we're working thru the typos, code inconsistencies and conceptual misunderstandings on our part.  I expect we'll have a number of basic read-only screens up by the end of next week.   Haven't worked with the ASP.Net 2.0 controls that much, so we've got some learning curve there too.  If I could work on that part of it full time, I think I could knock it all out in less than two weeks - and that's with the ASP.Net 2.0 learning curve.  10 to 12 screens plus a half-dozen reports.  As it stands, it will probably take a month because I'll mostly be working on another sub-system and only supporting the junior programmer. :(

I've been handling the database side.  The main stored procedures were done in less than a day thanks to a code generator I wrote awhile back.  A couple of complex, hand-written data load / data transformation procedures are being tested now. 

I'm learning DNN on my own time at home, and my time on that is being spent on improving its core compliance with Accessibility standards.  (I volunteered for the team to help out.)  The wife's in Hawaii for the summer on a federal grant - thank you fellow taxpayers for your contribution :), so single-Dad duties have cut down on my time there.

I won't be able to start experimenting putting DNN and CSLA together until sometime this fall at the earliest.

The good thing is I have a very reasonable client.  I went to them and explicitly said, "I want to add extra risk to this project.  And here's why..."  They agreed that the extra risk was worth the potential payback in software features and quality, not just in this app but in the next ones.

 

kennster replied on Friday, August 04, 2006

Any news on progress? I am specifically interested in if you are integrating security from DotNetNuke to CSLA... looks like this would be a great thing to do... has anybody else done this?

I have searched and searched for what the community believes is the best Business Object architecture for DotNetNuke (other than the simplistic/non-tiered/ business object model/dal approach it uses) and I am of the thinking that CSLA.net offers the most bang... Specifically, I would like an object model in which all of the business rules reside in the business objects... which I can just as easily bind to a Windows Forms UI as a Web Forms UI.

Would be great if you could blog on your progress integrating these two great projects, I would definitely put it on my google home page :).

 

Mountain replied on Friday, August 04, 2006

kennster:

Any news on progress?

@kennster: The news is that the company I am working for let all the development staff go except a couple of us, and it seems like the rest of us may be leaving soon. I am going to leave as soon as I complete three minor tasks I promised to finish. (That means I'll be leaving by the end of this month.)

The company is struggling to stay in business and may not succeed. The great new OO framework with CSLA and .NET 2.0 is dead. Desperate times apparently call for desperate development approaches - the new "turnaround executive" is apparently not going to use OO programming techniques at all. It looks like whatever happens going forward is just going to use datasets connected to the UI with lots of stored procedures and no business objects.

I know it is off topic, but I just have to say that those of us watching management during the last year got a first hand lesson in poor financial management by the CEO. Maybe this new turnaround guy can salvage something, but the work environment for developers is going to be depressing - at least for anyone who likes to do good work.

Sorry for the bad news.

kennster replied on Wednesday, August 09, 2006

Mountain:
kennster:

Any news on progress?

@kennster: The news is that the company I am working for let all the development staff go except a couple of us, and it seems like the rest of us may be leaving soon. I am going to leave as soon as I complete three minor tasks I promised to finish. (That means I'll be leaving by the end of this month.)

The company is struggling to stay in business and may not succeed. The great new OO framework with CSLA and .NET 2.0 is dead. Desperate times apparently call for desperate development approaches - the new "turnaround executive" is apparently not going to use OO programming techniques at all. It looks like whatever happens going forward is just going to use datasets connected to the UI with lots of stored procedures and no business objects.

I know it is off topic, but I just have to say that those of us watching management during the last year got a first hand lesson in poor financial management by the CEO. Maybe this new turnaround guy can salvage something, but the work environment for developers is going to be depressing - at least for anyone who likes to do good work.

Sorry for the bad news.

Hey, I don't see how this is bad news...

Your company is about to s$hit-can an incredible framework you derived from Open Source technologies in favor of who knows what. This is a perfect opportunity to donate this back to the community from which it wouldn't have been possible otherwise, don't you think? Many open source projects got their starts this way.

Additionally, so what if the company goes belly up? I get 20+ calls a week from a resume on Monster.com I haven't updated since last November. If you can't find a job wherever you are, come down to Brandon/Tampa area (East Tampa) and I guarantee you will have a job within two weeks! As a matter of a fact, once the main project I was hired for ramps up, my company will be hiring a long term contractor to support the development of this project... at very good market rates.

With that being said, if you have made progress, please do share. If you would like, and more importantly if you really believe as I do that DNN needs a better, enterprise grade Business Object approach as I do, lets set up a site dedicated to exploring this!

 

Ruckus77 replied on Tuesday, June 27, 2006

You really can't compare CSLA to DNN. DNN is an open source portal application whereas CSLA is a framework for application development based on best practices and pattern implementation. If you are developing a portal application then DNN (VB.Net) or RainbowPortal (C#) are excellent starting points. If you are building an OLTP application that is not a portal then CSLA, nTier, and nHibernate are all excellent choices for building (code generating) a business and data access layer as the foundation for your application.

jwooley replied on Tuesday, June 27, 2006

IMHO, the two approaches deal with rather different architectural issues. CSLA is geared more toward stateful business objects and editing values while retaining a centralized set of business rules in the middle tier which can be remoted using a number of various methodologies. CSLA is applicable to the web, but functions best in a windows environment (due to the potentially stateful basis of the object entities).

DNN on the other hand, is primarily a portal for displaying web based data allowing for end users to maintain the content for the site using various user controls. It is stateless and the business tier is mostly a thin wrapper for the entity classes. The business validation logic is housed primarily in the UI. There is no built-in support for remoting, although the datasource of any given module can just as easily be a webservice as a database. Typically the database is local to the application and not hidden behind firewall or other domain boundaries. It is good for limited people maintianing a "brochure" type site, but not as good for a lot of data entry by end users.

The question isn't so much which architecture should you use, but how should you use the tools you have at your disposal. I have seen mention of people who ported DNN to use CSLA in the business and data tiers, so they can indeed be complementary. The main question you need to ask yourself is, "what kind of solution do I need to meet the business needs". The answer to this question may well help to guide you to your end decision goal.

Jim Wooley
http://devauthority.com/blogs/jwooley/default.aspx

Copyright (c) Marimer LLC