Persistence ignorance - rebus-org/Rebus GitHub Wiki

"Persistence ignorance" is allowing for code to stay oblivious to whichever storage technology is used underneath to persist objects.

If a system is persistence ignorant, it means that e.g. an object like this:

public class Whatever {
    public int Id { get; set; }
    public string Text { get; set; }
}

can be saved and retrieved again, and the system need not care if it's NHibernate, Entity Framework, HybridDB, or whatever that saves and loads the object.

Rebus aims to be persistence ignorant in every way, thus providing storage abstractions for

  • transport
  • sagas
  • subscriptions
  • timeouts

allowing you to take advantage of these mechanisms and not care if they're saved in MongoDB or SQL Server.

This also includes the ability to be "transport ignorant", meaning that - once it has been properly configured and set up - the code can stay oblivious to whether SQL Server, MSMQ, RabbitMQ, Azure Service Bus, etc..., is moving messages around.

"Ignorant"

Please note that it's YOUR CODE that can stay ignorant - it does not free the developer from knowing what's actually cooking underneath the covers. I would say that it does not require detailed knowledge about the chosen technologies, but some minimum of knowledge must be applied when configuring Rebus in order to configure it in the way that makes the most sense.