Business Objects are cooler than you think

I think it was Paul Stovell’s article on Validation in WPF that got me started. The article is amazing and has inspired a lot of my thoughts on what to do with binding in v-next.

Paul mentioned CSLA. I wasn’t familiar. I dug in. Found Rockford Lhotka. Then I found Expert C# 2005 Business Objects.

Great book! (at least as of page 53).

I figured if we’re going to build a foundation that allows easy use of business objects, I’d better understand them deeply.

An interesting nugget from the book: the philosophical difference between a relational model and a object model (at least according to Rockford).

Relational model: all about data. Should always strive for data normalization–reduce duplication of data.
Object model: all about behavior. Should always strive for behavior normalization–reduce duplication of behavior.

Things I rarely think about. I’ll let you know if I get any other cool nuggets as I read.

Any other good resources on the topic that you know?

Hope ya’ll had a good weekend.

Comments (3)

  1. Eisenberg says:


    Another great book to check out is “Applying Domain-Driven Design and Patterns” by Jimmy Nilsson.

  2. gblock says:

    Rocky’s an icon in the business object world. He showed VB developers how to push object development to the max with his "Professional VB Business Objects" book.

    The one area in his C# book that I would caution on is the whole state management thing. Basically he lays out an implementation that uses binary serialization to save every modification of an object in n a "transaction". The heavy part gets in that it not only saves its serialization state, but the state of all referenced objects. With a large object graph, that’s a lot of serialization. The idea is to the order of operations so that in a rollback scenario each object literally undoes each and every operation that was done to it.

    My $.02

  3. Ivolved says:

    Here’s another great book in that area

    Agile Principles, Patterns, and Practices in C#

    (left out the referral ID because I didn’t want anyone to take offense).