In past days, a customer (I can’t say names) ;) Asked me to help them in the solution of a .NET application deployment.
The architecture defined for this app, was based in a DNA like style, with a rich client consuming a series of COM+ based centralized components and accessing an Oracle database. The problem was in essence that they developed all the application and specifically, all the components as simple local components ( using System.ComponentModel.Component as base class for them) and nearly the time to deploy, started the process of conversion to ServicedComponents. Obviously, there were many troubles and high number of instances of components, troubles with object pools, transactions, JIT, and many others.
Another great mistake was the fact that they used intensively inheritance in components, simply to reduce little pieces of code, and not in the essential objective of inheritance that is model specialized variations of concepts in the domain of the problem.
High coupling and high number of dependencies, was also another big trouble within this application. Basically, all forms had dependencies at least with 5 to 12 components, making so dangerous to change any interface exposed by the components.
A very simple solution to many of those problems can be done with the inclusion of a Façade pattern ( GOF, 1995 http://www.amazon.com/exec/obidos/tg/detail/-/0201633612/qid=1128633932/sr=8-1/ref=pd_bbs_1/102-8849697-5773715?v=glance&s=books&n=507846) . Even having not only one façade, there could be a very important improvement of the design giving a lower level of coupling and making the impact of changes in the model much lower.
Simple solutions, for complex problems.
Cheers,
Ricardo González Vargas
Software Development Consultant
Microsoft Regional Director
Microsoft Most Valuable Professional
http://www.devsynergy.net
rgonzalez@mvps.org