Может ли кто-нибудь направить меня на хороший пример внедрения Unity Dependency Injection для служб WCF? Любой блог или статья msdn также помогут.
Инъекция зависимостей Unity для служб WCF
Ответ 1
Этот ответ дает пример о том, как включить DI в WCF с Castle Windsor.
Просто замените IWindsorContainer на IUnityContainer в этом примере, и вы должны быть настроены, хотя вы также можете изменить имена классов от WindsorXyz до UnityXyz:)
Ответ 2
Чтобы вводить зависимости в сервисы WCF, мне пришлось реализовать хост службы factory.
Я нашел пошаговый учебник здесь.
В основном вы должны:
- Внедрение IInstanceProvider для создания служб с использованием контейнера
- Внедрение IServiceBehavior для установки поставщика экземпляра в диспетчере конечных точек
- Расширьте ServiceHost, чтобы добавить новое поведение службы.
- Расширение ServiceHostFactory для создания нового хоста службы
Ответ 3
Я собираюсь попробовать библиотеку Unity.Wcf(https://github.com/ViceIce/unity.wcf), на первый взгляд выглядит неплохо. Я читал в в этой статье:
Если вы размещаете свою службу WCF в службе Windows с помощью ServiceHost, замените экземпляр ServiceHost на пользовательский Unity.Wcf.UnityServiceHost. Вы обнаружите, что UnityServiceHost принимает контейнер Unity в качестве своего первого параметра, но в остальном идентичен стандарту ServiceHost по умолчанию.
В моем случае я собираюсь сделать это...
class Program
{
static void Main(string[] args)
{
// 1st Initialize the Host (Configures Container and Factories)
ServiceHostController.Initialize();
// 2nd Create a URI to serve as the base address.
var baseAddress = new Uri("http://localhost:54321/BlaBlaBla/");
// 3rd Create a UnityServiceHost instance
var myService = new UnityServiceHost(ServiceHostController.UnityContainer, typeof(MyService), baseAddress);
try
{ //etcetera...
И это сработало для меня, мне все же приходится реорганизовывать некоторые вещи и добавлять функции и методы, но отправная точка работает как прелесть.
Надеюсь, это поможет.