Можно ли расширять или исправлять проекты веб-приложений ASP.NET 3.5 «в полете»? - PullRequest
2 голосов
/ 11 ноября 2008

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

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

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

Джеймс Уайт

Ответы [ 4 ]

1 голос
/ 11 ноября 2008

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

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

1 голос
/ 11 ноября 2008

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

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

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

1 голос
/ 11 ноября 2008

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

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

Другим вариантом было бы реализовать замену кода hod .

.

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

0 голосов
/ 12 ноября 2008

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

...