Недавно у меня была дискуссия на другом форуме с другим разработчиком, и тема была повторного использования кода в ASP.NET. Заявленный сценарий заключался в том, что ему необходимо часто обновлять код на серверах Production во время перерывов в работе сервера, и это приводит к тому, что сеанс становится сброшен для всех пользователей. Он избегает размещения общего кода или классов в папке App_Code или предварительно скомпилированных DLL в папку Bin, потому что любые обновления также обновят сеанс.Повторное использование кода - App_Code или BIN или UserControls?
Решение, которое он придумал, заключается в том, чтобы поместить свой общий код в UserControls и ссылаться на них везде, где это требуется. Это позволяет ему обновлять только файлы UserControl, которые будут динамически перекомпилированы при следующем запросе без принудительного перезапуска сеанса. Обратите внимание, что в Usercontrols не предусмотрен какой-либо пользовательский интерфейс, они, вероятно, содержат только некоторую бизнес-логику.
Я попытался убедить его в этом, потому что это казалось мне по своей сути неправильным, но я не мог представить никаких твердых фактов, подтверждающих мое утверждение о том, что это был очень плохой способ сделать что-то. Единственное, о чем я мог подумать, это то, что он нарушает принцип отделения бизнес-логики от пользовательского интерфейса. Я глубоко ошибаюсь или есть конкретные причины, почему это не должно быть сделано? Ссылки или примеры были бы полезными.
Примечание: Использование состояния сеанса без обработки в настоящее время не является вариантом, и они не могли принять решение о запланированных простоях. Кроме того, поскольку это сайт под активной разработкой, они пока не используют какую-либо профессиональную модель развертывания.
Заранее спасибо.
Редактировать: Кроме того, было бы полезно, если бы кто-то мог точно определить, почему сеанс перезапускается в вышеупомянутых случаях.
Спасибо за ответ, Джоэл, но тогда почему * есть * папка App_Code вообще? – Cerebrus
Потому что вы можете поместить вещи рядом с элементами управления в папке App_Code. Я не говорил, что ты всегда хочешь это сделать. Просто, учитывая ограничения, это не похоже на линию. –