Recently at work we have been having some discussions around standardizing .Net development around Rockford Lhotka’s CSLA framework. My team has been digging into CSLA for several weeks now generating business objects using Codesmith Freeware 2.6 and working through Rockford’s book generating CSLA objects for our main product. With only a few weeks into it and no real production time behind the framework we are having a hard time jumping on one side of the fence or the other. There are things we like about CSLA such as the ability to restructure an application from a two tier to a three tier application just by changing the config file. Maybe those of you that have used CSLA can chime in and provide some constructive criticism or positive feedback about your experience.
Before you jump in and start commenting here is some background on why this is being considered. I think it is important to know why we are considering this path.
The main reason we are looking to standardized development across various teams is we have teams moving to .Net and we have teams that make it hard to move engineers among the various projects as needed. Today there isn’t a standard on how applications should be built and each team builds things the way they chose. Some people may think that is good since it gives developers flexibility but it also causes problems. For example, one team may use NHibernate and another might use something else. If a team member needs to be reallocated to provide an additional resource to a project the problem arises they are no longer productive because they don’t know NHibernate. Now of course this can be said for any variety of things. Obviously having a standard each team follows would be beneficial.
In addition to reallocating resources other teams are moving into .Net from various other platforms. Given the fact there are 15 ways to do data access alone we are trying to minimize that thought process so the engineers can focus mainly on business development not the “how”. The CSLA framework is very attractive from this angle because it provides a wealth of documentation whereby we could hand an engineer a book and they can learn how things are done. They also don’t have to know the internals of CSLA since they are going to focus on business rules, validation and security.
That’s some of the thought process going on. There are other things we are considering as well but I don’t want to get into all of the details. The community in general seems to be somewhat happy with CSLA and then there are some that are not. I have always said you really don’t know a product until you put it into production. For those that have heard me speak, you know that I don’t normally speak on topics until I have put them in production and gone through all of the rusty washers. So for those of you that have used CSLA for a lengthy amount of time what are the rusty washers or shiny pennies you found?
Please keep your emotional flames to yourself, I don’t want this to get ugly and turn into a Y vs Z vs X debate, just the facts. Ok, that’s it. Ready? Discuss!