NServiceBus with Unity 2.0?
Asked Answered
S

1

14

Anyone using NServiceBus 2.0 successfully with Unity 2.0?

I've tried to compile sources of NServiceBus.ObjectBuilder.Unity.dll against Unity 2.0 assemblies but got several compile-time errors because of changed/deleted signatures of many object methods in new Unity.

In the documentation Udi Dahan says that attaching any container is as easy as implementing 5 methods of IContainer. But when i look into NServiceBus.ObjectBuilder.Unity implementation i see that there is a LOT more work to be done. Why it is so?

Spirochaetosis answered 26/9, 2010 at 13:28 Comment(2)
What do you mean with "a LOT more work to be done" (can you be more specific)? The implementation just calls the appropriate Unity methods and returns the created objects according to the semantic of the Interface.Canter
@Canter When i look to this sources, i don't see simplicity: github.com/NServiceBus/NServiceBus/tree/master/src/impl/…. Seems that implementor should be aware of internal architecture of NServiceBus. Let me know if i'm wrong...Spirochaetosis
I
3

Unity, by default, behaves different from what NSB expects. That's why there is a need for some custom extensions to make it compatible with ObjectBuilder contract. There are two major differences:

  • Unity requires DependencyAttribute to inject dependency into the property. NSB expects ObjectBuilder to inject in any property that with matching type
  • When doing property injection unity treats property dependencies as mandatory whereas NSB expects them to be optional.

I believe that these features are preserved in version 2.0 and it will be easy to migrate them. I should have some time this week and I hope I will create a Unity v2 implementation. I'll let you know when it's finished.

Edit: Done. The Unit 2 object builder is in the trunk.

Interrupter answered 28/3, 2011 at 7:42 Comment(2)
Here's the link to the commit: github.com/NServiceBus/NServiceBus/commit/…Jayme
1.2 is still the version deployed on Nuget. Any chance this will be updated? Unity 2.x has been out for a very long time and really should be the default at this point.Dixon

© 2022 - 2024 — McMap. All rights reserved.