powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перекомпиляция dll без выгрузки AppDomain
9 сообщений из 34, страница 2 из 2
Перекомпиляция dll без выгрузки AppDomain
    #38784447
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gr_vlskyANA,

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

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

Как вам такой вариант? ктото пытался чтото подобное использовать???

ГригорийНа прошлой работе подобное использовали. Для обновления своих отчётов в 3rd party приложении без остановки последнего.
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784455
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может сделать так: наступает время для выполнения скопа задач, этот скоп грузится в отдельный домен и там выполняется, как все задачи выполнены, или прерваны, домен выгружается.
Новые задачи и изменения относятся к другому скопу и грузятся в другой домен.
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784466
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА может сделать так: наступает время для выполнения скопа задач, этот скоп грузится в отдельный домен и там выполняется, как все задачи выполнены, или прерваны, домен выгружается.
Новые задачи и изменения относятся к другому скопу и грузятся в другой домен.скайана, это не работает. Представь, что у тебя есть два типа задач:
- одна выполняется раз в час и работает 10 минут
- другая выполняется раз в два часа, и может работать до недели (ждать чего-либо).
Как ты будешь определять границы этого "скопа"?
Как ты будешь поступать со второй задачей? Ты за сутки загрузишь 12 доменов, которые буду висеть неделю.
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784470
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvskyANAА может сделать так: наступает время для выполнения скопа задач, этот скоп грузится в отдельный домен и там выполняется, как все задачи выполнены, или прерваны, домен выгружается.
Новые задачи и изменения относятся к другому скопу и грузятся в другой домен.скайана, это не работает. Представь, что у тебя есть два типа задач:
- одна выполняется раз в час и работает 10 минут
- другая выполняется раз в два часа, и может работать до недели (ждать чего-либо).
Как ты будешь определять границы этого "скопа"?
Как ты будешь поступать со второй задачей? Ты за сутки загрузишь 12 доменов, которые буду висеть неделю.А вариант с одним доменом под одну задачу значит "нормальный вариант в принципе".
Свеном, ты не последователен в своих рассуждениях :)
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784478
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, я понял. Ты намекаешь на то, что не надо выгружать домен по завершению работы всех задач, надо выгружать по другому принципу?

Согласен.
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784500
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА, я понял. Ты намекаешь на то, что не надо выгружать домен по завершению работы всех задач, надо выгружать по другому принципу?

Согласен.Ну что-то вроде того. Например, у меня есть связанный список доменов - от наиболее старого до наиболее свежего. Когда мне приходит новая задача, я по ее версии проверяю самый "свежий домен". Если он не содержит ассембли этой задачи, или содержит, но версии совпадают - я запендюриваю это задачу в этот домен. В противном случае я создаю новый домен, а загружаю эту задачу туда.
Таким образом у нас всегда будет некий "наиболее актуальный" домен, в котором крутят последние версии всех задач, и хвост из "старых" доменов, в которых дорабатывают задачи более древних версий. Ну и в каждом домене поддерживаем какой-нибудь статический счетчик текущих задач и флажок "obsolete", который означает, что него больше не придет ни одна задача. Когда счетчик задач обнуляется и obsolete=true, домен можно выгружать.
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784503
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvskyANAА, я понял. Ты намекаешь на то, что не надо выгружать домен по завершению работы всех задач, надо выгружать по другому принципу?

Согласен.Ну что-то вроде того. Например, у меня есть связанный список доменов - от наиболее старого до наиболее свежего. Когда мне приходит новая задача, я по ее версии проверяю самый "свежий домен". Если он не содержит ассембли этой задачи, или содержит, но версии совпадают - я запендюриваю это задачу в этот домен. В противном случае я создаю новый домен, а загружаю эту задачу туда.
Таким образом у нас всегда будет некий "наиболее актуальный" домен, в котором крутят последние версии всех задач, и хвост из "старых" доменов, в которых дорабатывают задачи более древних версий. Ну и в каждом домене поддерживаем какой-нибудь статический счетчик текущих задач и флажок "obsolete", который означает, что него больше не придет ни одна задача. Когда счетчик задач обнуляется и obsolete=true, домен можно выгружать.

Скажите, а зачем все это нужно, если уже есть готовый WWF? Ведь объем работы для реализации вышеперечисленного + тестирование будет значительным.
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784525
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Скажите, а зачем все это нужно, если уже есть готовый WWF? Ведь объем работы для реализации вышеперечисленного + тестирование будет значительным.У ТС уже есть работающее решение, в котором WWF нет. Ему надо просто добавить фичу - что бы при обновлении таска старые не обрывались.
Описанное мною решение - это где-то в районе 100 строчек кода. Трудоемкость - порядка 1 дня работы.
Ваше предложение перейти на WWF заведомо потребует больше трудозатрат.

Если бы ТС писал что-то с нуля - не вопрос, WWF надо было рассматривать в первую очередь.
...
Рейтинг: 0 / 0
Перекомпиляция dll без выгрузки AppDomain
    #38784659
gr_vl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,
Спасибо
примерно к такому же выводу я пришел. Радует что подобное реализовано и проверенно в условиях эксплуатации.
Особая благодарность за высказывания по теме вопроса, а не лишь бы что-то написать.
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перекомпиляция dll без выгрузки AppDomain
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]