Szymon Kobalczyk's Blog

A Developer's Notebook

  Home  |   Contact  |   Syndication    |   Login
  96 Posts | 5 Stories | 258 Comments | 369 Trackbacks

News

Spotkasz mnie na CodeCamp'09 View Szymon Kobalczyk's profile on LinkedIn

Twitter












Article Categories

Archives

Post Categories

Blogs I Read

Tools I Use

I spent last two days trying to learn the Composite UI Application Block (CAB) recently published by Microsoft's patterns&practices group. This application block provides practices and components to build complex smart client user interfaces.

I've been working on similar frameworks in the past but I always wasn't quite happy of my design. The problem such frameworks are trying to solve is to allow to build the application from independent modules. The module here can consist of views (i.e. forms and other controls), business objects and logic, and something to glue all this together. The final application is “composed” by registering currently available modules. The focus here is to minimize the dependencies between modules and allow rapid development with a team of programmers.

The most prevalent problem I had was to allow the parts to communicate with one another and yet don't introduce too much dependencies. The solution I settled on recently is to implement an automation model that is accessible for all parts and publishes events the parts can subscribe to. You can learn this from great articles from Omar Al Zabir. But still I have problems with connecting this model with the business objects and logic.

So my interest in CAB is to see how they intend to solve such issues and maybe implement similar mechanisms in my framework. The design of CAB is based on few really sophisticated patterns like inversion of control, event broker, commands and of course composite items. Altogether this builds a flexible framework that promises great extensibility. But it also makes it all really hard to comprehend (or maybe it's just for me). The quick-starts aren't much help here because they focus on narrow concepts. What I would really like to see is how all this elements work together in a complete n-tier application like TaskVision, IssueVision or FotoVision.

Through lack of any I decided to create one myself. I thought it would be interesting to re-implement some existing application, and was looking for something that already had well designed data access and business logic layers with good separation of presentation layer. In the end I choose the .NET PetShop, one of Microsoft's benchmark applications,which makes it more interesting as originally this is a web application.

I will write along as I work my way through.

posted on Friday, January 06, 2006 6:40 AM

Feedback

# re: Understanding Composite UI Application Block 1/6/2006 9:12 AM rasyadi
I think CAB is quite hard to learn...

# re: Understanding Composite UI Application Block 1/27/2006 6:51 PM Jose Fuentes
I'm starting to think the same thing, looks like a monster and not very designer friendly.

# re: Understanding Composite UI Application Block 1/27/2006 8:04 PM Szymon
Jose,
Actually I think CAB is really well designed, flexible and realy powerful app block. Of course it is only the core on which you need to build up your own application framework. But before you start adding automation and templates it's worth to spend some time and try to build few example screen, or small but complete application to learn and understand how it works and what patterns you can use or extend later.

I will try to remmember to send you the code later this weekend (it even doesn't compile at the moment :-)). For more feature-reach example see the SmartClient Baseline Architecture Toolkit. Latest release contains preliminary GAT package.

# re: Understanding Composite UI Application Block 7/19/2006 3:19 PM Roman Pawlig
Hi, have to learn it in my job.
Problem is, its not very good documented.
So its very hard to learn.
Would be glad if anyone knows about additional documents.
Hope that there is more existing than just the December release and Guidance Automation.
Please tell me if there is something.

Thanks

My mail: rpipsen@hotmail.de

# re: Understanding Composite UI Application Block 12/1/2006 6:49 PM Bjoern
Hi,
We use CAB in one of our new projects.

I took me two weeks to learn the CAB framework and to understand the concepts. If you understand the ObjectBuilder which CAB is based upon then CAB is a useful framework.

After the two weeks CAB makes it more and more easy to implement parts of the project.

# CAB isn't so easy to learn... 3/9/2007 5:14 PM Guy Burstein's Blog
After spending a few hours trying to figure out the responsibilities of all the elements of CAB, I found

# re: Understanding Composite UI Application Block 5/9/2007 6:51 PM Composite UI Application Block
When I first started learning CAB, I had trouble getting over the steep learning curve.
I have set up a blog where users can read examples/tutorials and ask questions.



# re: Understanding Composite UI Application Block 7/26/2007 1:23 PM suresh
Hi All,

We are using CAB in our project and i have just started on CAB buit the document (Help file)provided is not good.Could anyone provide me with additional document.

Thanks





# re: Understanding Composite UI Application Block 8/3/2007 11:28 AM suresh
Hi All,

We are using CAB in our project and i have just started on CAB buit the document (Help file)provided is not good.Could anyone provide me with additional document.

My Emai Id is suresh.09@gmail.com

Thanks




# re: Understanding Composite UI Application Block 9/11/2007 7:26 PM Spartan
Great intro article. one quick question before I continue on, Is this based on the latest release of CAB, I noticed the date was 2006. Thanks for your efforts.

# re: Understanding Composite UI Application Block 3/8/2008 12:50 AM JBE
Hi suresh!

IF you are interested in more material about CAB than have a look at http://www.codeplex.com/cabext

# re: Understanding Composite UI Application Block 10/29/2008 6:51 AM Mohamed
Please advice .

Once the projected loaded with many module on the CAB project , can be load few more module based on user inputs ( if the user is in the inventory and he / she wants to navigate payroll module which in not loaded as a part of initial load. )



Post A Comment
Title:
Name:
Email:
Website:
Comment:
Verification: