What if we modeled every user action as the passing of a document?

I was listening to a brilliant podcast on .Net Rocks where Carl & Richard interviewed Glenn Block, Henrik Nielson, and Darrel Miller.  The topic was Web API, but it started with Henrik talking about how he worked as a student helping to create HTTP!  Great history lesson and a great philosophical show. 

This post has moved:


Written by

Leveraging past experience managing software organizations and delivering solutions for clients, Jeffrey helps to deliver clarity, measurement, and control for software organizations as they seek to develop and operate mission-critical software systems that help them maintain a competitive advantage. Clear Measure delivers a full lifecycle of services based around Microsoft software technologies. Jeffrey has been recognized by Microsoft as a “Microsoft Most Valuable Professional” (MVP) for five years. He has spoken and facilitated at industry conferences such as VSLive, DevTeach, the Microsoft MVP Summit, various ALT.NET conferences, and Microsoft Tech Ed. He also speaks to user groups around the country as part of the INETA Speakers’ Bureau. A graduate of Texas A&M University, an Eagle Scout, and an Iraq war veteran, Jeffrey holds too many certifications to list, has published many magazine articles , and he has written three editions of his book.

4 Comments to “What if we modeled every user action as the passing of a document?”

  1. Is this essentially not the command pattern that is often used in CQRS/event-sourcing? I’m not expert in that matter but find it (and your post) very interesting and would love to implement such a thing. I too believe it can create a simpler way of working, though it will definitely pose its own problems.

  2. Gene Hughson says:

    This is a style that I’ve been using for quite some time (some detail here: http://genehughson.wordpress.com/2012/04/23/on-the-plane-or-in-the-plane/). It enables moving between in-process and distributed scenarios with little or no disruption and service-enabling an app is relatively trivial. I’m sure it gives purists some heartburn, but as you note, it more closely models reality where some things are actors and some are merely acted upon.

  3. Yup, I posted something along those lines a while ago too… http://lassala.net/2010/11/18/you-have-been-deleted/

  4. Jef Claes says:

    Document, command, potato. I like how everything gets so much more obvious when you start modeling things explicitly as messages (http://www.jefclaes.be/2013/01/organizing-commands-and-queries.html).