0

Я хочу обновить до StructureMap 3.x в моем проекте MVC, но я застрял на NServiceBus 4.x, потому что условия лицензии 5.x не имеют смысла для нашего ограниченного использования. Проект MVC предназначен только для отправки.Как обновить до StructureMap 3.x, оставаясь на NServiceBus 4.x?

Как обновить StructureMap, оставив NSB 4.x на месте?

ответ

0

Вместо этого:

Configure 
    .With() 
    .StructureMapBuilder(ObjectFactory.Container) 

Используйте контейнер по умолчанию:

Configure 
    .With() 
    .DefaultBuilder() 

Потому что вы больше не проходя ObjectFactory.Container до NServiceBus, вы должны сказать StructureMap, как выполнить IBus как зависимость, например, ваши MVC-контроллеры:

x.For<NServiceBus.IBus>() 
    .Use(() => Configure 
     .Instance 
     .CreateBus() 
     .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install()) 
    ); 

Если у вас есть что-то, что NServiceBus необходимо создать, например. то, что реализует IMutateOutgoingMessages и ваше сообщение мутатор имеет зависимости, то вы должны будете сказать NServiceBus, как разрешить эти зависимости:

Configure 
    .Instance 
    .Configurer 
    .ConfigureComponent(
     () => new MessageMutator(new MessageMutatorDependency()), 
     DependencyLifecycle.InstancePerCall 
    ); 
1

Я задал тот же вопрос в списке рассылки here. Ответ на тот момент состоял в том, что эта конфигурация не поддерживается, и AFAIK не изменился.

Я бы порекомендовал вам выслать электронное письмо в Частное лицо и посмотреть, сможете ли вы что-то решить относительно лицензирования, если это демонстрационный проект для вашего проекта.

+0

Поскольку конечная точка отправки только я думаю, что есть способ вокруг него. Мне не нужно вызывать обработчики. –

+2

В этом случае просто оставьте внутренний контейнер как есть и просто зарегистрируйте IBus в своем собственном контейнере SM? –