Недавно я поигрался с PostSharp, и это напомнило мне о проблеме, с которой я столкнулся несколько лет назад: разработчик клиента создал веб-приложение, но не уделил должного внимания тому, как они управляют информацией о состоянии — хранят это (не спрашивайте меня, почему) статически в экземпляре приложения в IIS. Излишне говорить, что система не масштабировалась, была глубоко ошибочной и нестабильной. Но это была большая и очень сложная система, поэтому стоимость ее переделки была непомерно высокой. Моя задача в то время заключалась в том, чтобы попытаться реорганизовать кодовую базу, чтобы установить надлежащее разделение между компонентами.
В то время я пытался использовать какой-то механизм абстракции, чтобы позволить мне перехватывать все обращения к статическому ресурсу и перенаправлять их на компонент, который правильно управлял бы данными состояния. Проблема заключалась в том, что нужно было перенаправить около 1000 сложных ссылок (и у меня не было много времени, чтобы сделать это). Ручное кодирование (даже с помощью R#) оказалось слишком трудоемким — мы выбросили кодовую базу и правильно переписал. на переписывание ушло больше года.
Что меня интересует сейчас, так это то, что если бы у меня был доступ к рерайтеру сборки и/или системе программирования, ориентированной на аспекты (такой как PostSharp), мог бы я легко автоматизировать процесс рефакторинга поиска прямых ссылок и преобразовать их в ссылки интерфейса, которые можно было бы перенаправить автоматически и поставляются заводами.
Кто-нибудь использовал PostSharp или аналогичные системы для реабилитации патологических устаревших систем? Насколько успешными были проекты? Вы нашли после факта, что усилия того стоили? Вы бы сделали это снова?
ОБНОВЛЕНИЕ: см. этот пост в блоге для дальнейшего обсуждения.