Я использую Windsor Container в сервис Win.Я использую Linq2sql для постоянных целей.Экземпляр Linq2Sql DC был внедрен в 2-х компонентный UnitOfWork и Repository. Я мог бы установить для Lifestyle значение Singleton для DC + UoW + Repository, но я опасаюсь, что в долгосрочной перспективе мой Dc будет удерживать многие элементы, влияющие на память без какой-либо причинымое приложение: после того, как я закончу с сущностью, я больше не буду его использовать, но на DC нет открытого метода для очистки кэша.
Из-за того, что мой DC будет введен в 2 компонента, я не могу использовать Lifestyle.В противном случае будут созданы 2 экземпляра (по одному на каждую инъекцию)
Поэтому я решил установить для Lifestyle значение Thread: у моего приложения есть таймер для выполнения задания каждые n минут, при каждом тикании я запускаю новый поток.В этом случае новый DC будет создаваться в каждом потоке и вводиться в 2 cmp, как указано выше.Поскольку политика удаления для Lifestyle = Thread такая же, как для singleton (при удалении контейнера / в конце моего приложения / при остановке), я беспокоюсь о количестве удерживаемых объектов в контейнере до тех пор, пока winservice не будет остановлен.
Так как явызовите Join () в моей ветке, я точно сейчас, когда все закончится.Я думал извлечь из контейнера мои 3 объекта и вызвать dispose, но мне не нравится этот подход: я предпочитаю, чтобы контейнер имел дело с его собственными объектами ...
Любые комментарии / предложения?
Я также думал о том, чтобы создать свой собственный стиль жизни, чтобы выполнить удаление в конце потока, имитируя то, что произошло в веб-сценарии с PerWebRequest (в конце запроса все cmp будут удалены).Есть ли пример, как создать свой стиль жизни?