We are in need of a distributed architecture messaging system/service bus with the capability of Publish/Subscribe. Does anyone have any reccomendations for a framework that we can use for .net applications?
NServiceBus is growing in popularity. It is open source as well. Here is a Hanselminutes episode with Scott Hanselman talking with Udi Dahan about NServiceBus to help grok it. You should definitely evaluate using it.
UPDATE: There's also a DNR TV episode which shows what it's like to build an NServiceBus solution from scratch here: http://www.dnrtv.com/default.aspx?showNum=199
Check out masstransit and rhino service bus too. Both open source and written by very smart people.
Check out RabbitMQ. The .NET client is full-featured, and it's pretty easy to use. There's a book called RabbitMQ in Action, as well as RabbitMQ in Depth that's available in early access editions.
I'm currently working on an open source WCF based service bus. You can find it here: http://rockbus.codeplex.com/. It supports dynamic (@run-time) subscriptions, subcription repository (database), pluggable transports, XPath based content-based routing, transactional delivery over wcf protocols, roundrobin delivery, pluggable subscription evaluation, and more. Have a look!
I found ActiveMQ integrated into Apache NMS to be incredibly easy to understand, set up and transparent.
For example, ActiveMQ comes with a web frontend allowing you to use a web browser to look into message queues, and read, delete, and even create messages. So you can very easily start to develop and test only one side of your distributed application, and debugging and monitoring is very straight-forward.
I've found Neuron ESB to be a solid implementation, although I haven't used it in anger yet.
There is no mature Service Bus implementation in .NET stack so far. Microsoft currently is developing one.
http://msdn.microsoft.com/en-us/library/windowsazure/jj193022(v=azure.10).aspx
As an option you can use one from Java world. For instance, TIBCO - they have pretty robust .NET clients avilable, or OpenMQ.
If you don't need a wide range of features and ready to develop your own system - use WCF for this. WCF callbacks are well suitable for this.
精彩评论