2010-09-26 26 views
14

¿Alguien que usa NServiceBus 2.0 con éxito con Unity 2.0?NServiceBus con Unity 2.0?

He intentado compilar las fuentes de NServiceBus.ObjectBuilder.Unity.dll contra los ensamblados de Unity 2.0, pero obtuve varios errores de tiempo de compilación debido a las firmas modificadas/eliminadas de muchos métodos de objetos en la nueva Unidad.

En la documentación Udi Dahan says que conectar cualquier contenedor es tan fácil como implementar 5 métodos de IContainer. Pero cuando miro la implementación de NServiceBus.ObjectBuilder.Unity, veo que hay MUCHO más trabajo por hacer. ¿Por qué es así?

+0

¿Qué quiere decir con "MUCHO más trabajo por hacer" (puede ser más específico)? La implementación solo llama a los métodos de Unity apropiados y devuelve los objetos creados de acuerdo con la semántica de la interfaz. – tobsen

+0

@tobsen Cuando miro estas fuentes, no veo la simplicidad: https://github.com/NServiceBus/NServiceBus/tree/master/src/impl/ObjectBuilder/ObjectBuilder.Unity. Parece que el implementador debe conocer la arquitectura interna de NServiceBus. Avísame si me equivoco ... –

Respuesta

3

Unity, de forma predeterminada, se comporta diferente de lo que espera NSB. Es por eso que hay una necesidad de algunas extensiones personalizadas para que sea compatible con el contrato de ObjectBuilder. Hay dos diferencias principales:

  • La unidad requiere DependencyAttribute a dependencia inyectar en la propiedad. NSB espera ObjectBuilder para inyectar en cualquier propiedad que se combina con tipo
  • Al hacer la inyección propiedad unidad trata a dependencias de propiedad como obligatorio, mientras que NSB les espera ser opcional.

Creo que estas características se conservan en la versión 2.0 y será fácil migrarlas. Debería tener algo de tiempo esta semana y espero crear una implementación de Unity v2. Te avisaré cuando haya terminado.

Editar: Listo. El generador de objetos de la Unidad 2 está en el tronco.

+1

Aquí está el enlace a la confirmación: https://github.com/NServiceBus/NServiceBus/commit/324a112229bedd55baaff144eea9a81126a0f343 –

+0

1.2 sigue siendo la versión implementada en Nuget. ¿Hay alguna posibilidad de que esto se actualice? Unity 2.x ha estado fuera por mucho tiempo y realmente debería ser el predeterminado en este punto. –