Создание экземпляра службы WCF через контейнер IoC - PullRequest
12 голосов
/ 30 декабря 2008

Можно ли сделать среду выполнения WCF для создания экземпляра службы с помощью контейнера IoC, а не с помощью обычного процесса? (Кроме того, учитывая потенциальное столкновение между конфигурацией образа контейнера для типа и InstanceContextBehavior службы, будет ли такой подход ужасной идеей?)

Я знаю, что, возможно, я задаю совсем не тот вопрос. Моя цель - подход AOP с помощью средств перехвата методов, предоставляемых контейнером (например, ведение журнала входа / выхода метода, подсчет перфорации и регулирование вызовов, причем все это включает логику и зависимости, которые я не хочу вставлять в мою реализацию сервиса). Я полагаю, что WCF предлагает другие способы решения этой проблемы, поэтому мне также было бы интересно услышать другие рекомендуемые подходы.

Ответы [ 2 ]

8 голосов
/ 30 декабря 2008

Краткий ответ - да, может.

Пожалуйста, ознакомьтесь с интеграцией Castle WCF. Это позволяет вам использовать Castle Windsor для WCF, что дает вам гораздо более мощные возможности, чем просто введение зависимостей. Лучше всего использовать транковую версию , найденную здесь . Там не так много документации, но посмотрите на тесты. За ними легко следовать, и они будут хорошим примером кода для вас. WCF позволяет вам делать именно те мысли, о которых вы спрашиваете.

3 голосов
/ 30 декабря 2008

Да, вот реализации, использующие как ObjectBuilder, так и Spring.NET (и более, если вы перейдете по ссылкам!):

http://www.infoq.com/news/2008/01/wcf-di

Не могу прокомментировать взаимодействие образа жизни и поведения экземпляра контекста.

Что касается более специфичных для WCF подходов, использование концепции поведения WCF (как в приведенном выше примере) также может быть полезным. Есть несколько разных типов, вот отправная точка:

http://mehranikoo.net/CS/archive/2007/02/22/WCFBehaviours.aspx

Приветствия
Matt

...