Можно ли расширять или исправлять проекты веб-приложений ASP.NET 3.5 в # Flight & # 8221 ;?

StackOverflow https://stackoverflow.com/questions/282028

Вопрос

При создании ASP.NET 3.5 WAP меня всегда расстраивает чувство, что, как бы я ни "изолировал" или "инкапсулировать" немного логики или пользовательского интерфейса Я все еще собираюсь свалить весь сайт всякий раз, когда мне нужно обновить одну строку кода. Возможно, я неправильно понимаю, как ASP.NET обрабатывает изменения в " bin " директории, но с учетом номера " почему мой AppDomain выгружается? " сообщений в различных группах, это все еще кажется чем-то, чего следует избегать.

Есть ли у кого-нибудь какие-либо руководящие указания и / или структуры для действительно модульной WAP ASP.NET 3.5, чтобы можно было добавлять / обновлять логику и страницы "в полете"? Я немного погуглил System.AddIn, но, похоже, он сосредоточен на приложениях WPF.

Спасибо за вашу помощь!

Джеймс Уайт

Это было полезно?

Решение

Этого действительно трудно достичь, поскольку .NET не поддерживает выгрузку типа, который был загружен в домен приложения.

Один из способов сделать это - поиграться с доменами приложений или сделать так, чтобы WCF сделал это за вас.

Другой вариант - реализовать замену кода hod в ayende .

Третий способ - поместить логику в динамически скомпилированную часть (ASPX). Однако приложение будет перезагружено после настраиваемого количества изменений.

Другие советы

Используйте два или более сервера. Когда вам нужно обновить, снимите один, обновите его, поднимите, снимите другой, обновите, поднимите.

Чтобы сделать это - нужно, чтобы обе версии работали одновременно, требуется немного усилий, так как изменения в базе данных и т. д. могут быть сложными. Но то же усилие окупается возможностью откатить изменения, возможно, разместить всего несколько пользователей на «экспериментальном» уровне. сервер и т. д. Не говоря уже о том, что горизонтальное масштабирование является хорошей вещью в целом:)

Здесь вы можете использовать другой подход, заключающийся в том, что перезапуск AppDomain не влияет на удобство использования сайта.

Для этого выведите сеанс из процесса или прекратите полностью полагаться на него.

Если вы сделаете это, перезапуск домена приложения не составит большого труда, и вы подготавливаете свое приложение для упрощения масштабирования по кластерам, если вы когда-нибудь дойдете до этого.

Просто добавленная мысль, но держу пари, что это был весь "COM +". бит разрешен (за исключением общих хостов). Разбиение логики на маленькие колбасные фабрики без сохранения состояния, вероятно, позволило беспрепятственно выполнять операции по исправлению в полете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top