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