Constructive critique, I hope...

Topics: CAB & Smart Client Software Factory
Jan 5, 2006 at 1:54 AM
originally posted by: _JERKER_

I'm in the position of getting to know CAB for use in a Windows Application (the first of many in the future?). I'm completely new to CAB. How do I make a decision to start using it in the first place?

I've had for about a month to study the community, sample code, message board dialogs and finally the documentation for finding the information I need. Still I'm having trouble guiding the other project members. Why must this be so hard to get into? Why inventing new terms on existing concepts?

Examples of bad-choise-of-terms:
× "Composite" - of what? (Why not "Windows Forms Application Block"?)
× "Smart Client" - might not be that smart after all. The first two weeks of the studying of CAB I had to think "this pattern is not for Smart Devices". This is what the other project members need to do today, too...
× "SmartPart" - why not just call it "WinPart" as all others do!? Or, just something less smart...?
× Using the glossary in the documentation does not explain the concepts, rather how the terms are associated to each other.

There must be a more pedagogic way of transferring this knowledge!? I believe that Microsoft usually is very good at transferring this kind of information to their developer customers. Am I the only one having these thoughts?

I'm positive that I will be impressed by CAB in the real life, but there are things that can be better in communicating the knowledge of using it.

Best regards
Jan 18, 2006 at 3:39 PM
originally posted by: syalachigere

I am in the same situation. I spent most of my holidays to learn CAB. Tomorrow I have to teach this to my other teammates. I've written a sample prototype application but still I am not that comfortable. ‘Hands on lab’ helped me a bit but this CAB is still very confusing.
Jan 20, 2006 at 5:37 PM
originally posted by: rxd9507

CAB is one of the really good guidance for architects. Honestly, CAB is one of the first block that is worth trusting.
Although it solves a tiny subset of Enterprise application domain.
Bad choice of terms: Hmmmm..Think abstract...
Get this thing straight that Microsoft is great innovator of new terms for same 25 year old technology that SmallTalk had...So they have a great marketing team that coins these words to create the ambience....What is the big deal in calling a UI widget, Winpart, Webpart,SmartPart....

SmartPart IS NOT equal to Windows Part as Smart Client includes handheld devices and what not....Think abstract....A winpart is a smartpart but not vice-a-versa...

Same logic for Composite...

I cannot explain better than technical writers (esp MS)... (Rough ideas and partially not correct but be patient)
Somebody own real estate == Shell
Shell is roughly equal to UI Element + WorkSpace (Tons of services), Entry Point, Equal to Web world Portal mgmt
Workspace = container where visual elements (Smart parts) sit
Smart part = User control, View, Widget that has some business sense, group of controls that are in some way a unit of view
Work Items = Glues everything together. Add an employee is a use case.
It will have a view, a controller, some services and Work item will connect all of them to get Add an employee functionality.

Module is roughly = Bunch (lots) of use case that make sense to be called an application.= In web portal example module is an application.

Business entity = Your core objects. Usually properties. Employee {name, age, etc}

Shell developer = Worry about portal & real state
Module developer = application developer, worry about use cases
Infrastructure developer = services (kind of global), authorization, authentication
SMart part developer = GUI kind of person with little knowleddge of events etc.

Attribute(aspect oriented programming) is roughly equal to extending behavior so that some sort of SQL type (declarative)
kind of programming can be done. Instruct the CAB I want this...How? I do not care. CAB will expose what it can do via available attributes.
CreateNew is an example to tell CAB get the work done for me. // Let the system do the work. High level delegation to the system so people do not do messy stuff

Technically speaking WI is a mini MVC in itself and at a diffrent angle it is a controller (in higher scheme). Usually MVC recurs. //Ignore if you are not familiar with MVC

There is no free lunch...Late binding, aspect oriented programming, use of generics makes learning curve higher, debugging difficult. AOP makes debugging extremely difficult so system comes up with Visualizer.//Baby debugger to let you know the CAB. Good use of reflection.

Although BankTeller captures CAB concepts but Smart Part containing WI state (whatever CAB team says) is an ugly pattern and should be avoided. Microsoft, in order to provide short cuts make things worse in long scheme. Yeah, SmartPart holding the state (Session variable like lame example) sounds good but again somewhere deep down it is bad...Keep it simple....

ANyways these are my thoughts on CAB. Any constructive feedback is welcome.