Если вы понимаете, что Shell должна иметь состояние, то оно не должно быть статичным.Неважно, является ли это консольным приложением или веб-приложением.Во-первых, вы можете безопасно использовать его в однопотоковом приложении, где вы знаете, что никто другой не использует ваш класс, но совсем другое дело в том, что это хороший дизайн.
Если в вашем классе есть какой-тоКонфигурация, которая должна использоваться совместно для многих функций и всех экземпляров, можно объявить статические свойства или поля для этих данных.Но данные, которые должны быть разными для разных потоков, должны быть нестатичными.
Кроме того, в многопоточной среде, такой как веб-приложение, вы должны создать свой класс так, чтобы он был безопасным для потоков, иливы столкнетесь с неприятностями.Если у вас есть класс, в котором есть статические методы, но нет статических данных, вам не нужно беспокоиться о безопасности потоков.
Пока «продолжительность жизни» вашего статического класса в веб-приложениион выдержит несколько запросов, но помните, что основной поток веб-сервера будет время от времени перезагружаться автоматически (в зависимости от конфигурации IIS), так что вы не можете доверять статическим членам для сохранения данных «навсегда».Вам следует настроить статические данные на событие запуска приложения и сохранить измененные данные в хранилище permamnet (обычно в базе данных), чтобы гарантировать их восстановление после перезапуска приложения.
Так что вам лучшеизменить дизайн вашего класса.Это не должно предполагать внесения множества изменений в ваше консольное приложение (кроме использования нескольких новых).