Примеры использования NServiceBus с NServiceBus.Ninject-CI в решении ASP.NET MVC 3 - PullRequest
2 голосов
/ 17 декабря 2011

Я бы хотел поэкспериментировать с NServiceBus с использованием ASP.NET MVC 3. У меня есть решение с установленным NServiceBus, плюс NinjectMVC3 и NServiceBus.Ninject-CI. Проблема в том, что я не знаю, как настроить NServiceBus в файле NinjectMVC3.cs в App_Start.

Скорее досадно, но у меня возникают проблемы с поиском каких-либо примеров использования NServiceBus.Ninject-CI (я ненавижу, когда люди не удосуживаются приводить примеры использования своих вещей).

Может кто-нибудь помочь мне начать, пожалуйста?

Ответы [ 2 ]

7 голосов
/ 17 декабря 2011

Загрузите такой модуль в ядро, чтобы обеспечить доступ к шине

public class NServiceBusModule : NinjectModule
{
    public override void Load()
    {
        this.Bind<IBus>().ToConstant(this.CreateBus()).InSingletonScope();
    }

    private IBus CreateBus()
    {
        return NServiceBus.Configure.WithWeb()
            .NinjectBuilder(this.Kernel)

            ... // put NServiceBus config here 

            .CreateBus()
            .Start();
    }
}

Прочтите документацию NServiceBus о том, как настроить NServiveBus: http://docs.particular.net/nservicebus/containers/ninject http://docs.particular.net/samples/web/asp-mvc-application/

0 голосов
/ 14 ноября 2012

Надеюсь, это кому-нибудь поможет. У меня было много проблем с поиском примера кода для работы с ninject в NServiceBus.

Этот код ниже работает для меня вместо более обычной версии Castle:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Publisher, IWantCustomInitialization
{
    #region IWantCustomInitialization Members

    public void Init()
    {
        Configure
            .With()
            .NinjectBuilder(CreateKernel())
            .XmlSerializer()
            .MsmqTransport();

        SetLoggingLibrary.Log4Net(XmlConfigurator.Configure);
    }

    protected IKernel CreateKernel()
    {
        var kernel = new StandardKernel();

        kernel.Load<MyCustomNinjectModule>();

        return kernel;
    }

    #endregion
}

с обычным форматом, а именно:

public class MyCustomNinjectModule : NinjectModule
{
    public override void Load()
    {
        Bind(typeof(ILogger<>)).To(typeof(Log4NetLogger<>));  
        ...
    }
}
...