У меня есть wcf ServiceHost, который должен опубликовать сообщение в IBus.
Как мне изящно получить доступ к IBus из класса хоста (который создается wcf)?
У меня есть wcf ServiceHost, который должен опубликовать сообщение в IBus.
Как мне изящно получить доступ к IBus из класса хоста (который создается wcf)?
Что мы делаем (может быть более чистый способ), так это то, что у нас есть класс, который реализует IWantToRunAtStartup. Мы даем этому классу свойство IBus, которое инициализируется контейнером DI, встроенным в NServiceBus.
Затем мы создаем экземпляр нашего класса веб-службы (тот, который имеет атрибут ServiceBehavior), передавая экземпляр IBus из класса запуска. Затем мы создаем экземпляр нашего ServiceHost из этого экземпляра.
Это кажется немного неуклюжим, но у нас не было никаких проблем с этим. Надеюсь, это поможет.
Это должно обеспечить вам более удобный доступ к IBus. Назовите статический класс как хотите. Не беспокойтесь о совместном использовании экземпляра IBus — шина полностью потокобезопасна.
public static class BusAccess
{
private static IBus bus;
public static IBus Bus
{
get
{
if (bus == null)
bus = NServiceBus.Configure.Instance.Builder.Build<IBus>();
return bus;
}
}
}