Вопросы про MEF
От: Dimonira  
Дата: 01.06.11 11:36
Оценка:
Решил применить MEF для связи между различными модулями. На мой взгляд это удобно, особенно если делить написание модулей между людьми.
Поскольку ранее не пользовался, есть непонятки. Прошу плз спецов ответить.
Когда один импорт (ImportMany) выдаёт на несколько экспортов, это понятно.
А вот когда наоборот, экспорт один, а импортов много. Только что попробовал — работает.
Но непонятно, надёжно ли это? Ведь дёргать экспорт могут разные потоки, не будет ли состязаний, а главное, их последствий?
Или "внутри" MEF-а всё уже разрулено и синхронные вызовы преобразуются в асинхронные?
Будут ещё пара вопросов, но сначала ответьте на этот плз.
mef
Re: Вопросы про MEF
От: Аноним  
Дата: 01.06.11 11:38
Оценка: +1
Здравствуйте, Dimonira, Вы писали:

D>Решил применить MEF для связи между различными модулями. На мой взгляд это удобно, особенно если делить написание модулей между людьми.

D>Поскольку ранее не пользовался, есть непонятки. Прошу плз спецов ответить.
D>Когда один импорт (ImportMany) выдаёт на несколько экспортов, это понятно.
D>А вот когда наоборот, экспорт один, а импортов много. Только что попробовал — работает.
D>Но непонятно, надёжно ли это? Ведь дёргать экспорт могут разные потоки, не будет ли состязаний, а главное, их последствий?
D>Или "внутри" MEF-а всё уже разрулено и синхронные вызовы преобразуются в асинхронные?

MEF не стоит использовать таким образом. Ты хочешь эмулировать IoC, а потому лучше взять готовый, Unity тот же. MeF предназначен в основном для всяких расширений.
Re: Вопросы про MEF
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.06.11 11:42
Оценка:
Здравствуйте, Dimonira, Вы писали:

D>Решил применить MEF для связи между различными модулями. На мой взгляд это удобно, особенно если делить написание модулей между людьми.

D>Поскольку ранее не пользовался, есть непонятки. Прошу плз спецов ответить.
D>Когда один импорт (ImportMany) выдаёт на несколько экспортов, это понятно.
D>А вот когда наоборот, экспорт один, а импортов много. Только что попробовал — работает.
D>Но непонятно, надёжно ли это? Ведь дёргать экспорт могут разные потоки, не будет ли состязаний, а главное, их последствий?
D>Или "внутри" MEF-а всё уже разрулено и синхронные вызовы преобразуются в асинхронные?
D>Будут ещё пара вопросов, но сначала ответьте на этот плз.

Composition происходит один раз, никакого thread safety не заложено в MEF, об этом ты, как всегда, должен заботиться сам.
Re[2]: Вопросы про MEF
От: Dimonira  
Дата: 02.06.11 04:14
Оценка:
Другой вопрос. Не поняли пока можно ли делать "принудительную" композицию между определёнными модулями с одинаковыми интерфейсами?
Например, есть два модуля с одинаковым импортом и два с одинаковым экспортом.
Если делать композицию из солянки этих модулей, то каждый импорт соединится с обоими экспортами.
А мне надо каждый конкретный импорт соединить с конкретным экспортом, т.е. иметь две разные пары соединения. Можно ли это состряпать?
При этом хотелось бы как-то "распознавать" модули, чтобы понимать кого с кем соединять. Может через метаданные?
Или может просто сначала в две кучки собирать модули по именам файлов?
Может ли быть две композиции (или более) одновременно (хотя такой случай вряд ли нужен)?
Re[2]: Вопросы про MEF
От: Dimonira  
Дата: 02.06.11 04:15
Оценка:
Здравствуйте, Аноним, Вы писали:
А>MEF не стоит использовать таким образом. Ты хочешь эмулировать IoC, а потому лучше взять готовый, Unity тот же. MeF предназначен в основном для всяких расширений.
Где этот Unity искать?
Re[3]: Вопросы про MEF
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 02.06.11 04:37
Оценка:
Здравствуйте, Dimonira, Вы писали:

D>Другой вопрос. Не поняли пока можно ли делать "принудительную" композицию между определёнными модулями с одинаковыми интерфейсами?

D>Например, есть два модуля с одинаковым импортом и два с одинаковым экспортом.
D>Если делать композицию из солянки этих модулей, то каждый импорт соединится с обоими экспортами.
D>А мне надо каждый конкретный импорт соединить с конкретным экспортом, т.е. иметь две разные пары соединения. Можно ли это состряпать?
D>При этом хотелось бы как-то "распознавать" модули, чтобы понимать кого с кем соединять. Может через метаданные?
D>Или может просто сначала в две кучки собирать модули по именам файлов?
D>Может ли быть две композиции (или более) одновременно (хотя такой случай вряд ли нужен)?

Да, гугли parts metadata.
Re[4]: Вопросы про MEF
От: Dimonira  
Дата: 02.06.11 05:16
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, Dimonira, Вы писали:


D>>Другой вопрос. Не поняли пока можно ли делать "принудительную" композицию между определёнными модулями с одинаковыми интерфейсами?

D>>Например, есть два модуля с одинаковым импортом и два с одинаковым экспортом.
D>>Если делать композицию из солянки этих модулей, то каждый импорт соединится с обоими экспортами.
D>>А мне надо каждый конкретный импорт соединить с конкретным экспортом, т.е. иметь две разные пары соединения. Можно ли это состряпать?
D>>При этом хотелось бы как-то "распознавать" модули, чтобы понимать кого с кем соединять. Может через метаданные?
D>>Или может просто сначала в две кучки собирать модули по именам файлов?
D>>Может ли быть две композиции (или более) одновременно (хотя такой случай вряд ли нужен)?

G>Да, гугли parts metadata.

Извините, не понял))) "Да" — это ответ на какой вопрос?
Re[5]: Вопросы про MEF
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 02.06.11 05:35
Оценка:
Здравствуйте, Dimonira, Вы писали:

D>Здравствуйте, gandjustas, Вы писали:


G>>Здравствуйте, Dimonira, Вы писали:


D>>>Другой вопрос. Не поняли пока можно ли делать "принудительную" композицию между определёнными модулями с одинаковыми интерфейсами?

D>>>Например, есть два модуля с одинаковым импортом и два с одинаковым экспортом.
D>>>Если делать композицию из солянки этих модулей, то каждый импорт соединится с обоими экспортами.
D>>>А мне надо каждый конкретный импорт соединить с конкретным экспортом, т.е. иметь две разные пары соединения. Можно ли это состряпать?
D>>>При этом хотелось бы как-то "распознавать" модули, чтобы понимать кого с кем соединять. Может через метаданные?
D>>>Или может просто сначала в две кучки собирать модули по именам файлов?
D>>>Может ли быть две композиции (или более) одновременно (хотя такой случай вряд ли нужен)?

G>>Да, гугли parts metadata.

D>Извините, не понял))) "Да" — это ответ на какой вопрос?

Собственно на все. Есть метаданные у партов, кроме типа импорта, можно также указывать необходимые метаданные. Также метаданные можно запрашивать императивно в коде. Этот механизм позволит реализовать все что написано.
Re[6]: Вопросы про MEF
От: Dimonira  
Дата: 02.06.11 07:48
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>Да, гугли parts metadata.

D>>Извините, не понял))) "Да" — это ответ на какой вопрос?

G>Собственно на все. Есть метаданные у партов, кроме типа импорта, можно также указывать необходимые метаданные. Также метаданные можно запрашивать императивно в коде. Этот механизм позволит реализовать все что написано.


Спасибо, будем пробовать.
Re[3]: Вопросы про MEF
От: Lloyd Россия  
Дата: 02.06.11 17:46
Оценка:
Здравствуйте, Dimonira, Вы писали:

А>>MEF не стоит использовать таким образом. Ты хочешь эмулировать IoC, а потому лучше взять готовый, Unity тот же. MeF предназначен в основном для всяких расширений.

D>Где этот Unity искать?
Microsoft Unity 2.1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.