What Enterprise Service Bus would you use and why?
I'd recommend looking at NServiceBus. It is a powerful, open source service bus solution that uses a one-way messaging approach. It can be scaled from a small single machine installation to extremely large grid-based high throughput scenarios. It sits on top of MSMQ and MSDTC but can be used with a variety of other transport mechanisms, including Windows Azure.
, but there is work being done to put it on Azure.
Since version 4 optional design and monitoring tools are now available and are collectively named the Particular Platform.
Some key advantages:
- It's easy to deploy
- Very testable
- Robust and proven in use
- Elegantly handles version changes
- Is no longer open source and free, has very cost efficient commercial options (which are included with for BizSpark Program qualifiers). There is a licence for startups on their Licensing page.
- Has excellent samples, documentation and a strong community to get you started, and there are also training courses available.
- As far as I know, it only runs on Windows (although Azure options coming in v3.0 and are already on the trunk if you're brave).
- Requires MSMQ and MSDTC to be installed
Edit 2019: NSB is still going strong and is an excellent choice. But, in 2019, I would now recommend looking at Rebus which is a excellent free and open source .Net service bus. I have been using this now for over 5 years and it it simple to use, has advanced features and also the benefit of being free! It also runs on .Net Core.
Somewhat late to the party but I would use Shuttle ESB (http://shuttle.codeplex.com/).
Mostly because I wrote it :)
It is a distributed ESB with a highly decoupled architecture. The core assemblies have no direct dependencies on third party assemblies although they may be incorparated by using some adapter interfaces.
IQueue 'out-of-the-box' implementations include Msmq and Sql Server. Pub/Sub is there. Distributor is there. Includes a management console and health monitor. Message Forwarding is there. There is even CRON job scheduling.
NServiceBus is fairly popular in the .Net landscape. We are just starting to incorporate it, so I can't really offer any opinion on it yet.
You should look into the Microsoft BizTalk ESB Toolkit.
I've used is successfully on several projects. There really is not a better powerhouse product for enterprise development out there (on the windows platform at least).