Итак, у меня есть сайт устаревших веб-форм, и я работаю над тем, чтобы упростить его поддержку. Отбросить его и переписать это не вариант.
IoC, очевидно, является одной из первых вещей, которые он получил, но это оставляет меня с шаблоном сервис-локатора и плохим вкусом, и интересно, можно ли это сделать лучше.
Различные люди, с которыми я разговаривал в режиме онлайн и вне, рассказывали мне, что я мог бы сделать инъекцию свойств с помощью HttpModule, который сканирует класс страницы для свойств, украшенных атрибутом Inject или аналогичным, но это звучит как удар отражения (кешированный, но все же) по каждому запросу. Не привлекателен.
Итак, я смотрел другие варианты и наткнулся на System.Web.IHttpHandlerFactory, который, по-видимому, был в рамках с версии v2. Можно удалить обработчик *.aspx по умолчанию и заменить его на тот, который использует пользовательскую реализацию, в разделе httpHandlers web.config.
Итак, люди, с которыми я разговаривал, не тупые; Я думал, что попрошу здесь. Есть ли какие-либо проблемы с заменой веб-форм PageHandlerFactory на реализацию на основе IoC...?
Похоже, что у него есть метод CreateHandler и ReleaseHandler, поэтому утечка памяти, связанная с жизненным стилем, из контейнера, содержащего ссылку на созданные компоненты, не должна быть проблемой...