Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is NServiceBus an ESB at all

Is NServiceBus a ESB or lightweight ESB at all? or is it more like WCF with durable/ reliable messaging? It looks to me more like a messaging framework than ESB.

just want some pointer as I am just started looking into different ESB products and what they are able to do or not.

like image 737
Eatdoku Avatar asked May 31 '12 18:05

Eatdoku


3 Answers

NServiceBus is definitely an ESB. Full Stop.

Enterprise Service Bus, a Bus, meaning a thing that allows, by design, for components of a system to be distributed and work independently. The bus itself is also distributed. A failure of one component or service doesn't affect the availability of other components connected to the bus.

The opposite of a bus is a broker. A broker presents a single point of failure in a system. Things like MS BizTalk are brokers, not ESB.

UPDATE
Just to elaborate a bit on the enterprise support in NSB
- supported messaging patterns are one-way fire and forget (durable and express), correlated request-response, publish-subscribe. Everything else can be built on top of that.
- transactional message processing and automatic retries
- load balancing with a distrubutor
- configurable auditing and monitoring with performance counters
- built-in long running process management
the list goes on ... making NServiceBus an ESB

Some message broker products can be deployed in a 'federated mode', which makes those deployments decentralised. The decentralised deployment type aligns well with the bus architecture style. So, I guess, it depends. However, a centralised deployment is just an enterprise service broker, not a bus.

like image 81
Chris Bednarski Avatar answered Sep 18 '22 13:09

Chris Bednarski


Enterprise service bus is a compound SOA pattern. If you look into Thomas Earl's books here are the patterns that ESB includes

  1. Broker (Protocol Bridging, Data Format and Data Model Transformation)
  2. Intermediate Routing
  3. Asynchronous Queuing
  4. Reliable messing
  5. Event Driven
  6. Policy Centralization
  7. Rules Centralization

NServiceBus to my knowledge (limited) does apply some of these patterns - rest (ex: Rules Centralization and Policy Centralization) are expected to be implemented by the user. By this definition, BizTalk is also an ESB.

An important thing to keep in mind, is that by using NServiceBus or Biztalk or anything else does not make you SOA. In fact, if not used properly, you might find yourself tied to a vendor, defeating the first principal of SOA - Vendor neutrality.

like image 37
Bitmask Avatar answered Sep 18 '22 13:09

Bitmask


Well I think nServicebus is certainly a ServiceBus, not sure you can call it an "Enterprise" ServiceBus without spending hundreds of thousands on it. Seriously though, you need to think through whether you really want an ESB or not. Most of them promise a wealth of riches, but deliver a lot of overhead, and it can be very difficult to realize the value. I have used WSO2 in a big enterprise, where it was one of our 3 ESB's. Very enterprisey, run by the OPs team, and a real pain because we had to deal with another team to set up and run our system. Other issues include the so called features like message routing or message translation. Sure the product can do those things but it takes you out of your development environment and gives you more pieces to worry about. Code and or configuration get spread into more places, more things to manage more things that can go wrong. That’s something I do like about nServiceBus it is very accessible to the developer. Another implementation I like is the Azure ServiceBus. Obviously it is not as full featured and it’s probably not what you are looking for, but I love the Developer accessibility and self-service nature, and those are traits I would be looking at.

like image 43
Noel Avatar answered Sep 19 '22 13:09

Noel