Review of a Trading System Project

Introduction In late 2007 I wrote a series of articles on Microsoft’s Composite Application Block (CAB).  At that time I was running a team that was developing a user interface framework that used the CAB. We’re now four years on and that framework is widely used throughout our department.  There are currently modules from eleven … Continue reading Review of a Trading System Project

Extending Classes: Extension Methods or Inheritance?

Introduction Extension methods were introduced in C# 3.0 as a way of extending a class without necessarily having access to the original source code of the class. As discussed in the C# Programming Guide on MSDN, extension methods were primarily introduced to the language to allow LINQ to add standard query operators such as GroupBy … Continue reading Extending Classes: Extension Methods or Inheritance?

User Interface Design for Business Applications

Introduction This article is going to give a quick tour of the various high-level user interface designs for business applications that need to display multiple windows. It will discuss multiple document interface (MDI), single document interface (SDI) and other paradigms for handling multiple windows. The article will illustrate these concepts by looking at the user … Continue reading User Interface Design for Business Applications

Table of Contents for ‘Introduction to CAB/SCSF’ Articles (2)

I've revised the table of contents to give some detail on what each of the articles is about: Part 1 Modules and Shells A guide to these two core concepts without the need to understand dependency injection or WorkItems. Explains what a composite application is and why we might want one, and shows a naive … Continue reading Table of Contents for ‘Introduction to CAB/SCSF’ Articles (2)

Events in the CAB (Introduction to CAB/SCSF Part 12)

Introduction Part 11 of this series of articles gave a general introduction to events in the CAB. This article investigates what we can do with these events in a little more detail. Parameters of the Fire Method As shown in part 11, the Fire method has four parameters: workItem.EventTopics["MyEvent"].Fire(this, EventArgs.Empty, null, PublicationScope.Global); The first two … Continue reading Events in the CAB (Introduction to CAB/SCSF Part 12)

Commands in the CAB (Introduction to CAB/SCSF Part 10)

Introduction Part 9 of this series of articles discussed the Command design pattern. Commands in the CAB are a neat way of implementing this pattern. This article will examine them in some detail. Commands and Events As already discussed in part 9, commands in the CAB are closely related to events. In fact one of … Continue reading Commands in the CAB (Introduction to CAB/SCSF Part 10)

Creating and Using Services in the CAB (Introduction to the CAB/SCSF Part 8)

Introduction Part 7 of this series of articles gave us a general introduction to services in the CAB. This article will go into more detail on the various ways we can create and use such services. Ways of Creating a Service We start with the various ways services can be created. This can be done … Continue reading Creating and Using Services in the CAB (Introduction to the CAB/SCSF Part 8)

Introduction to Services in the CAB (Introduction to the CAB/SCSF Part 7)

Introduction Part 6 of this series of articles concluded our discussion of dependency injection in the CAB. This article and part 8 of the series will discuss services in the CAB in some more detail. This article discusses services in general terms, whilst part 8 will show in detail the various ways of creating and … Continue reading Introduction to Services in the CAB (Introduction to the CAB/SCSF Part 7)

Constructor Injection in the CAB (Introduction to the CAB/SCSF Part 6)

Introduction Part 3 of this series of articles described the different types of dependency injection that we can use in general. These are setter injection, constructor injection and interface injection. Part 5 showed how dependency injection works in the CAB. The examples given there exclusively used setter injection. In general we don’t use interface injection … Continue reading Constructor Injection in the CAB (Introduction to the CAB/SCSF Part 6)

Composite Application Block MdiWorkspace Sample

Introduction As has been noted on some other blogs, there is no sample provided for the MdiWorkspace in the Composite Application Block. There are a couple of examples elsewhere, but these seem a little overcomplicated, and I had difficulty getting them running. Also there doesn’t seem to be an example that shows how to use … Continue reading Composite Application Block MdiWorkspace Sample