2010-09-26 6 views
14

Chiunque utilizza NServiceBus 2.0 con successo con Unity 2.0?NServiceBus con Unity 2.0?

Ho provato a compilare le origini di NServiceBus.ObjectBuilder.Unity.dll contro gli assembly di Unity 2.0, ma ho riscontrato diversi errori in fase di compilazione a causa delle firme modificate/cancellate di molti metodi oggetto in Unity.

Nella documentazione Udi Dahan says che allegare qualsiasi contenitore è facile come implementare 5 metodi di IContainer. Ma quando osservo l'implementazione di NServiceBus.ObjectBuilder.Unity, vedo che c'è ancora molto lavoro da fare. Perché è così?

+0

Cosa intendi con "MOLTO lavoro in più da fare" (puoi essere più specifico)? L'implementazione chiama solo i metodi Unity appropriati e restituisce gli oggetti creati secondo la semantica dell'Interfaccia. – tobsen

+0

@tobsen Quando guardo a queste fonti, non vedo la semplicità: https://github.com/NServiceBus/NServiceBus/tree/master/src/impl/ObjectBuilder/ObjectBuilder.Unity. Sembra che implementor dovrebbe essere a conoscenza dell'architettura interna di NServiceBus. Fammi sapere se ho torto ... –

risposta

3

Unity, per impostazione predefinita, si comporta diversamente da quanto previsto da NSB. Ecco perché c'è bisogno di alcune estensioni personalizzate per renderlo compatibile con il contratto ObjectBuilder. Ci sono due grandi differenze:

  • Unità richiede DependencyAttribute a iniettare la dipendenza nella proprietà. NSB aspetta ObjectBuilder iniettare in qualsiasi proprietà che con corrispondenti tipo
  • Quando facendo iniezione struttura unità tratta dipendenze di proprietà, come obbligatorio che NSB si aspetta che essere facoltativo.

Credo che queste funzionalità siano conservate nella versione 2.0 e sarà facile migrarle. Dovrei avere un po 'di tempo questa settimana e spero di creare un'implementazione di Unity v2. Ti farò sapere quando è finito.

Modifica: Fine. Il builder dell'oggetto 2 è nel bagagliaio.

+1

Ecco il link al commit: https://github.com/NServiceBus/NServiceBus/commit/324a112229bedd55baaff144eea9a81126a0f343 –

+0

1.2 è ancora la versione distribuita su Nuget. Ogni possibilità che questo sarà aggiornato? Unity 2.x è uscito da molto tempo e in questo momento dovrebbe essere il default. –