To CAB or not to CAB different case

Topics: CAB & Smart Client Software Factory
Apr 8, 2006 at 4:37 AM
originally posted by: unassal

I'm a member of a small team which is about to develop a new application based on .NET2.0, Windows Forms, Infragistics components and several inhouse components which partially include some architectural elements (like a basic infrastructure for command objects to support undo functionality).

The app we will build will operate on complex data that is gathered by some instrument and which is stored in a file system now (might move to some kind of content management system later). The UI will consist of multiple views which will have some dependency (like highlighting a line in a table will display some kind of graph in another screen - moving a marker there will update another graph and so on). From my point of view this could be considered as a complex application - it's not Photoshop (which is a standalone app, too) but it is also not notepad 2.0.

In the last weeks I had a close look at CAB and to me it looks very attractive - event broker, support for MVC/MVP, guidance through SC-BAT, support for CAB from infragistics: everything seems to be there to get us going. Now, what makes me hesitate a bit are statements like "You typically wouldn't use it for small standalone apps." (Peter Provost) or the definition of target apps in the documentation package which mentions enterprise-type applications quite often. I wouldn't consider this app an enterprise app - it will be used by scientists to review, process and report complex data which resides (currently) in files on their local PCs.

So I would like to understand what might be reasons to not use CAB in a specific type of application. I guess it is all related to some kind of cost like:
- learning CAB vs. just using VS2005 designer generated code right away
- run-time cost (any performance penalties to consider here?)
- deployment (additional depencies to consider)
- debugging complexity
- more ?

One of the main objectives of CAB is increasing developer productivity. To me it looks like CAB (especially in combination with SC-BAT) is very effective in this respect for all but the most trivial applications. And this would outweigh to some amount the potential cost that is involved in using CAB.

Has anybody been in a similar position and can make some comments on the cost vs. benefit considerations for non-enterprise apps?

Apr 8, 2006 at 4:47 AM
originally posted by: BradWilsonMSFT

Bear in mind when we say things like "You typically wouldn't use it for small standalone apps", we're making statements about our design goals rather than the applicability of the framework.

For me personally, there are a lot of things in CAB that I want, regardless of the size of app I'm writing:

- Dependency Injection
- EventBroker
- Model-View-Presenter

Add in the guidance automation from SC-BAT, and it's an easy sell.

So I will always choose CAB for writing my apps, even if they're small and standalone, even though we didn't design the system for such users. I'll probably also pick and choose the select pieces of CAB that I'll use and perhaps ignore everything else that's more geared towards large apps. I think it's entirely reasonable to choose CAB to write apps that it wasn't designed for, because you want some of those benefits from CAB that you'd have to write yourself.
Apr 8, 2006 at 6:02 AM
originally posted by: ChrisHolmes

- Dependency Injection
- EventBroker
- Model-View-Presenter

I just want to echo that part. Those three things alone make it worth my time to use the CAB in any Windows app I build.
Apr 13, 2006 at 5:26 AM
originally posted by: abbrescia

Another important thing to consider is the plugin (Module) infrastructure; i think that also small application need this service from a framework.