I’ve recently been swamped by quite a bit of exploration around both NServiceBus and, predictably, MSMQ. Amazingly enough, NServiceBus presents far more obstacles than WCF ever did, even with mildly complicated scenarios like getting it to play nice with Silverlight & SQL Server. Why so? Put briefly, it’s because of the following:

  • I’m running AD. Most developers would think it insane, but I think it’s a fair test: running Windows 2008R2 and a domain means that there’s less chance I’ll ship something that shoots the end user in the foot – particularly when related to authentication. Unfortunately, correct interaction with AD is an absolute pain to get right, which rightly gets people worried about the eternal “how much time will it take to fix” question. I’m worried too. I just think it’s good practice, and the pain is worth it in the long run.

  • I’m running 2008R2. By default, a server system comes with a lot more security restrictions, some of which have to be tweaked from the outset by people who know what they are doing. This highlights a weakness that most developers have: very little idea about the infrastructure they are operating with. Not everything if a full-trust environment with all ports open. Once again, this is a cause of headaches that sometimes pays off.

  • No commercial support. Yesterday I posted a question on the NServiceBus forums about something that shouldn’t happen. Today, I still have no response. The issue in question is one that will inconvenience the end user, which in my book is a ‘bad thing’. But because we don’t have commercial support (I bet it’s available in the form of consulting, though), there isn’t much one can do.

  • MSMQ is a real pain. The main reason for that is that it’s a subject area of its own, with its own experts who know exactly how to dig in and trace the way messages are going. This also requires a lot of low-level work (testing that the right ports are opened, that the firewalls are set to let through messages) as well as some serious understanding of security issues, particularly in setting such as where a non-domain machine is listening on messages from one in a domain (it shouldn’t matter, but…)

  • Configuration is a real pain. For example, right now, the NServiceBus host only reads its own config file, and ignores the ones that are supplied with event listeners. Why? I don’t know yet, but I bet by tomorrow I’ll have an idea.

All that said, I’m not saying that NServiceBus doesn’t work – it does. It’s just that it requires the same amount of patience and study as, say, WCF. And, needless to say, I don’t really mind – as far as I’m concerned, it’s a fairly valuable skill in one’s basket.