Re: Вопрос про IoC (Windsor container)
От: TK Лес кывт.рф
Дата: 22.08.07 21:28
Оценка: 4 (1)
Здравствуйте, Ivan Danilov, Вы писали:

ID>Пусть используется с1. Как только его запросят у IoC-контейнера — тут же будут инстанцированы и с2 и с3. Но что, если с2 и с3 используются только в редких случаях? Получается использование ресурсов вникуда...


ID>Особенно это хорошо заметно, если в качестве компонентов брать формы в WinForms-клиенте. Фактически, получается, что все формы создаются сразу, что создает заметную задержку при старте. Хотя некоторые из этих форм вызываются один-два раза за все время эксплуатации приложения.


Реализовать подобную Facility не особенно сложно — поддержка proxy уже есть. Например, можно взять TypedFactory facility, DynamicProxy для создания Lazy оболочек и написать create метод который будет дергаться через TypedFactory и создавать Proxy для нужного компонента. Или можно взять исходный код TypedFactory и сделать на его основе LazyFactory

ID>Это действительно проблема, или я не заметил какого-то простого решения вопроса?


А насколько правильно регистривать экземпляры форм как компоненты контейнера? У формы может быть куча заморочек с их соданием/удалением, доступом из разных потоков, повторным использованием из нескольких компонент... Не лучше будет регистрировать компонент с названием "менеджер формы" который будет отвечать за ее создание/удаление и т.п? В любом случае, если компонент по своей природе "особо не нужен" то, его можно спросить у контейнера явно.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.