Я думаю, что любая ситуация, которая выиграет от разделения проблем, выиграет от IoC. Проблема, с которой вы здесь сталкиваетесь, заключается в том, что вы требуете, чтобы MEF использовался в вашем сервисе. Будет ли это для самой основной службы или для какой-либо функции, которую выполняет служба.
Например, если вы хотите внедрить службы в ваши службы WCF, вы можете использовать что-то похожее на пример MEF для WCF в CodePlex. Я не слишком углубился в это, но, по сути, он оборачивает расположение службы через IInstanceProvider
, позволяя вам настроить способ создания типа службы. Не уверен, поддерживает ли он инжектор конструктора (что было бы моим предпочтением), хотя ...?
Если компонент службы WCF находится не там, где вы хотите использовать MEF, вы все равно можете использовать преимущества MEF для создания подмножеств компонентов, используемых службой. Недавно для компании, в которой я работаю, мы перестраивали наш процесс предложения, и я построил гибкую модель расчета рабочего процесса, в которой единицами рабочего процесса являются составные части MEF, которые можно подключать при необходимости. Важной частью здесь будет управление тем, как ваш CompositionContainer
используется в отношении времени жизни вашей службы WCF (например, поведение Singleton и т. Д.). Это очень важно, если вы решили каждый раз создавать новый контейнер (создание контейнера довольно дешево, тогда как создание каталога может быть дорогим).
Надеюсь, это поможет.