I have a customer that wants to built a client application, the application should support composition, add-ins type development (each developer or team to concentrate on their area of expertise), smart parts UI controls and several other typical client requirements.
Being Microsoft oriented person, I considered using the CAB (composite application block). I had to make a design decision whether I will go that road or not.
The Composite UI Application Block facilitates the design and implementation of your client applications in three areas:
- It allows your application to be based on the concept of modules or plug-ins.
- It allows developers with shell expertise to build components that hide user interface complexity from the business logic development.
- It facilitates development using patterns for loose coupling between modules.
Sounds good! Right?
- Neither the developers know or used CAB.
- Developers are 6/10 knowledge in .NET 3.5 and 7-8/10 in .NET 2.0
- Time limit for infrastructures: 14 days!!!
- My Team was not yet assembled and only few of the developers were available.
So, Microsoft recommends that before deciding to use CAB, we first must analyze whether this application block if it is suitable for your particular needs. To evaluate this application block and determine its applicability to your projects, it is suggested that you dedicate at least half of a day to explore the application block. The following is a suggested evaluation approach:
- Download the code and documentation in the language of your preference.
- Install the Composite UI Application Block and compile it.
- Read the "Introduction" and "Scenarios and Goals" sections of the documentation.
- Compile and run the QuickStart samples.
- Start with the "Walkthrough – Designing and Building a CAB Application" QuickStart and read the related documentation.
- If the application block looks like a good fit for your application, and for an in-depth, quick immersion on the code, follow the instructions on the Hands-on-Lab training content.
Making a decision
It took me one day to achieve all that and make it "work". The impression I got was that this is a great tool and can suite my needs functionality speaking. However before making the decision I need to understand whether this works for me budget wise. Remembering the time limit and the dev team, I seek for an advise on the overhead in time limit to for training and infrastructure development. The result was that it should take around 7 days for my developers to "Get Started" and have a good knowledge in CAB not to mentioned the fact that not all my team was assembled yet. Considering this I stood at a dilemma. From one had functionality speaking I wanted to use CAB, but on the other hand project wise, I had no time to spare for training my team.
For this customer under the facts I have mentioned, we have decided not choosing CAB.
If there are any thoughts on the issue and the selection, I would love to hear them.