September 30th, 2008


Further Thoughts on CAB

I've been meaning to write an entry for a couple of weeks and finally found a bit of time. We have been very busy at the "day job" moving from Delphi to C#. We made the decision 3 or 4 months ago not to use the Microsoft Composite Application Block. I was somewhat disappointed since I had done so much work with the framework.

Our first C# application at work is relatively simple compared to some of our other applications. This makes it a great candidate to be our vanguard into the .NET and C# world. Because of the research that I did into the CAB framework one of my initial requirements was a dependency injection container. I chose Ninject and and I'm very happy with it. It is simple, does not require a complex configuration files, and is easy to use.

As soon as I implemented Ninject, I needed a publisher/subscriber tool. I found a lightweight EventBroker that worked very similar to the CAB event broker. It wasn't until after this was in place that I realized there is a message broker in Ninject - not documented and not easily discoverable. As I have mentioned before, one of the biggest problems with open source is the lack of documentation. Developing software is my passion, but it's also how I make my living. I generally don't have time to pour through the source code to discover how something works - I want documentation. That's why when I started my investigation into CAB I documented everything that I was attempting to accomplish. So far I'm going to stick with the lightweight EventBroker that I originally found.

I added a state manager, workspaces, a variation of smart parts, and pretty soon, I had created a lightweight version of the CAB just like Jeremy D. Miller said could be done. I just didn't believe it would be easy until I did it.

So, where do I go with the CAB framework? I don't have an answer for that yet. There are still things that are available in the CAB that my framework at the "day job" does not do; I'm sure that those will be added as soon as they are needed.

In the mean time I'm working on another Open Source project which I will announce here as soon as it's ready for beta testing. More to follow...