Есть приложение Asp.Net Core. Оно развернуто на сервере IIS.
Нужно добавить новый функционал в часть приложения. Например в библиотеку C#, которую используют представления приложения и которая не затрагивает само ядро приложения. Есть ли техники позволяющие обновить конкретную библиотеку не публикуя приложение заново целиком? Особенно интересуют библиотеки Razor Class Library.
(раньше в Asp.Net MVC была возможность обновлять пакеты nuget прямо на развернутом приложении. Правильно ли я понял, что теперь такой возможности нет?)
UPD:
Приложение использует Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation и изменения вносятся непосредственно в представления развернутые на сервере. Поэтому и интересен подход обновления только отдельных модулей (например, RCL), а не всего приложения целиком.
insighter, app_offline.htm — знаю. Именно так сейчас и приходится поступать, что очень неудобно в рабочем процессе.
Часто возникает необходимость вносить мелкие доработки в тегхелперы и модели для представлений. При этом трудоемко публиковать весь проект целиком. Кроме того, есть необходимость выделить разработку некоторых компонентов от всего приложения.
Раньше в MVC было отличное решение App_Code, которое закрывало кучу проблем с ручной доработкой на «открытом головном мозге», но с Корой все поменялось и теперь такой подход недоступен и альтернатив нет, как я понял.
insighter, да, с IIS не работаю от слова совсем, как и с razor pages.
Но не вижу никакой проблемы в том чтобы полностью перезаливать приложение.
Если настроен cicd - этот процесс вряд ли займёт более пары минут.
А ещё это можно будет провести с нулевым даунтаймом
Смотрите. Делается прямой FTP доступ к сайту.
1. Делается публикация проекта
2. через FTP копируется app_offline.htm
3. заливаются все файлы которые получены после публикации
4. удаляется app_offline.htm
5. делается простейший healthcheck
Я так понимаю cidi у вас отсутсвует иначе бы вопроса не было.
У меня есть небольшой pet-проект я там сделал подобный application builder (для этого есть хороший фреймворк Cake.Frosting), подобный билдер пишется за день максимум. Теперь я вношу изменения в свой проект комичу. Захожу в папку appbuilder запускаю dotnet run и дальше все само делается.
Если сильно хотите напишите на почту скину ссылку на гитхаб на свой проект.
В таком режиме я и так сейчас работаю (только у меня smb до сервера).
Если подытожить, просто залив новые версии бинарников (и всего сопутствующего) от библиотек — обновление сделать нельзя? Мне только это нужно было выяснить.
(мне казалось, что раньше такой вариант прокатывал на IIS, но сейчас не получается)
Роман Кофф, если честно, я вообще хз как можно обновить зависимости приложения не перезаливая его.
В теории, через appdomain оно может работать, но я бы не стал так рисковать, ибо рано или поздно оно так тупо грохнется
Andrei Brizhak, микросервисный подход используется. Проблема, как раз на стороне пользовательского интерфейса, а не данных. Именно, когда меняются микросервисы приходится менять части главной программы. В этом и проблема.
(за ссылку спасибо, лишним не будет)