Category Archives: Architecture

Don’t write your own ORM

In my last post, I talked about various kinds of patterns of ORMs and how to choose an ORM strategy. From the comments and tweets I got, it seems like some folks still think that their only ORM choices are: … Continue reading 


Choosing an ORM strategy

One of the mistakes I see people make (and have made myself) is assuming that you must choose exactly one ORM strategy for an entire database/application/system. It’s simply not the case. You can (and should) tailor your ORM strategy to … Continue reading 


Troubleshooting SQL index performance on varchar columns

Doing a deployment last night, I ran into an issue around indexing performance around SQL columns of type varchar. Varchar is the ANSI version of character data – storing as 8-bits, while nvarchar is Unicode, storing as 16 bits. For … Continue reading 


Limits of performance optimization

Back in college, where I was an Electrical Engineering undergrad, I had an especially difficult professor for my microcontrollers course. In this course, we would hand-roll assembly language instructions and upload them to the 68HC12 testing board. (Side-note, I never, … Continue reading 


Dealing with transactions

In the last post on NServiceBus, I got quite a few comments that one way to fix the problem of dealing with non-transactional operations that must happen if some transaction succeeds is to simply move the non-transactional operation after the … Continue reading 


Async messaging realities

I got a bit of a chuckle from Ayende’s post on time traveling emails. In it, he shows messages in his email inbox received out of order chronologically from when they actually occurred in the real world. That’s one of … Continue reading 


Distributed computing fallacies and REST

One item to keep in mind when investigating consuming or exposing REST APIs are the fallacies of distributed computing: The network is reliable. Latency is zero. Bandwidth is infinite. The network is secure. Topology doesn’t change. There is one administrator. … Continue reading 

Also posted in Distributed Systems | 9 Comments

Efficient transactional processing

Ayende had a post on how to handle race conditions and unbounded result sets, describing a problem where you needed to perform transactional work against a set of entities. A bad solution would be: var subscriptions = session.Query<Subscription>().Where(s=>s.NextCharge < DateTime.Now); … Continue reading 


Case study in mixing system concerns

For the vast majority of systems I’ve been involved with, transaction isolation levels were never something I really had to worry about too much.  The number of reads on these systems overwhelmingly outnumbered the number of writes.  But every once … Continue reading 


Queues are still queues

Recently, we’ve started migrating our application to more of a message-based architecture.  This will be part of a bigger series on migrating to a messaging-based architecture, but one rather funny (or not funny, since we were in production) side effect … Continue reading 

Also posted in Distributed Systems, NServiceBus | 7 Comments