|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Создаю объект следующим образом Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
собственно при возникновении неперехваченного исключения сначала вызывается метод domain_UnhandledException (тоесть домена в котором создан объект), а потом вызывается метод AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; тоесть уже исключение в текущем домене. а нужно чтобы в текущем домене исключение не возникало. тоесть по сути надо сделать так что приложение загружало сборки выполняло там некоторые операции, и при возникновении исключений в них, оно не падало а продолжало работу. если нужно могу приложить весь код проекта. если кто-то реально может помочь, могу даже заплатить. задача очень актуальная. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 17:38 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
noob123тоесть по сути надо сделать так что приложение загружало сборки выполняло там некоторые операции, и при возникновении исключений в них, оно не падало а продолжало работу. можно развести по разным приложениям. главное приложение дёргает нужный екзешник, и из него потом тащит результат. через ремоут, ТСР.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 17:57 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
beg-in-ernoob123тоесть по сути надо сделать так что приложение загружало сборки выполняло там некоторые операции, и при возникновении исключений в них, оно не падало а продолжало работу. можно развести по разным приложениям. главное приложение дёргает нужный екзешник, и из него потом тащит результат. через ремоут, ТСР.... можно и колеса квадратные машине поставить:) только что то так не делают. хотелось бы всетаки найти решение поставленной задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2013, 19:17 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Посмотри здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 00:25 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
noob123, Может, вопрос не совсем в тему, но если вы работаете с плагинами, то почему не используете MEF? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 09:18 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Arm79noob123, Может, вопрос не совсем в тему, но если вы работаете с плагинами, то почему не используете MEF? так насколько я знаю он как раз и не позволяет решить данную задачу. там все загружается в одном домене, и любая критическая ошибка в плагине(одном из плагинов) уронит все приложение ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 09:27 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
noob123так насколько я знаю он как раз и не позволяет решить данную задачу. там все загружается в одном домене, и любая критическая ошибка в плагине(одном из плагинов) уронит все приложение Конечно, я не великий спец, но ИМХО загрузка плагинов в отдельный домен и MEF мало связаны друг с другом. Никто не мешает грузить в отдельный домен плагин с помощью MEF вместо своих велосипедов. К тому же, тоже ИМХО, нет особого смысла грузить плагин в отдельный домен (или в теме не приведено обоснование). В любом случае вы перехватываете исключение. Что мешает также перехватывать исключения в текущем домене? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 09:47 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Arm79noob123так насколько я знаю он как раз и не позволяет решить данную задачу. там все загружается в одном домене, и любая критическая ошибка в плагине(одном из плагинов) уронит все приложение Конечно, я не великий спец, но ИМХО загрузка плагинов в отдельный домен и MEF мало связаны друг с другом. Никто не мешает грузить в отдельный домен плагин с помощью MEF вместо своих велосипедов. К тому же, тоже ИМХО, нет особого смысла грузить плагин в отдельный домен (или в теме не приведено обоснование). В любом случае вы перехватываете исключение. Что мешает также перехватывать исключения в текущем домене? - как в текущем при перехвате исключения в текущем домене определить в каком из плагинов произошел ексепшен? (без глубокого копания в call stack - как выгрузить сломавшийся плагин? (насколько знаю, нельзя выгрузить сборку из домена, а только выгрузить весь домен) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 09:56 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Возможно, вам поможет связка MEF + MAF вот еще инфа по MAF: http://msdn.microsoft.com/ru-ru/library/bb384200.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 10:14 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 10:16 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Arm79Arm79Возможно, вам поможет связка MEF + MAF http://kentb.blogspot.com/2009/02/maf-and-mef.html ну этот пример работает 1 в 1 аналогично моему, только у меня не maf ни mef не используется. (но видимо в внутри они по схожим принципам работают). вообщем начальную проблему решить не удалось. на msdn вычитал, что раньше... все было хорошо, и необработанные исключения можно было игнорировать.. а теперь в новых версиях (по причине того, что пропущенные не перехваченные исключения сложно отлаживать.. и обнаруживать), почти все исключения валят приложение, (за исключением нескольких) и даже если они происходят в не в основном домене приложения, но в основном домене определен обработчик для них, то они перехватываются как в домене где произошли так и в основном домене приложения, после этого системный обработчик завершает приложение. на просторах интернета попался эдакий костыль: Код: c# 1. 2. 3. 4. 5.
но это вообще какой то ахтунг.. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 13:51 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
noob123, всё же попробуйте сторонний вызов длл. если она завалится, то никто ни что не заметит. а то что так не делают , это не значит шта эта неправильно. просто умные дядьки об этом книги не пишут. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 14:33 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
мне вот интересно, какие обстоятельства могут вынудить принудительно выгрузить сборку? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 21:35 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Arm79 какие обстоятельства могут вынудить принудительно выгрузить сборку? самое банальное - память где-то внутри потекла, а сборщик филонит. главное приложение нельзя перезагружать. ну там заменить сборку, на допиленную ( хотя это можно и по-другому решить ). в общем задачка редкая , но меткая. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 21:44 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
beg-in-erArm79 какие обстоятельства могут вынудить принудительно выгрузить сборку? самое банальное - память где-то внутри потекла, а сборщик филонит. главное приложение нельзя перезагружать. ну там заменить сборку, на допиленную ( хотя это можно и по-другому решить ). в общем задачка редкая , но меткая. Вот именно, редкая. Я делал в свое время Web-сервис, юзающий Spring.Net. Подмена сборок проходила на ура. В общем, у меня есть небольшое чувство, что ТС слишком избыточно пытается решить свою задачу. Лучшее - враг хорошего. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:09 |
|
Загрузка сборки в отдельном домене
|
|||
---|---|---|---|
#18+
Arm79 Вот именно, редкая. Я делал в свое время Web-сервис, юзающий Spring.Net. Подмена сборок проходила на ура. В общем, у меня есть небольшое чувство, что ТС слишком избыточно пытается решить свою задачу. Лучшее - враг хорошего. ТС хочет решить задачу "правильно", я знаю "десять" способов обойти эту проблему, запускать сборки как отдельные процессы, и предоставить некое API (wcf, socket'ы да хоть шаред мемори) для общения с основной программой (так сказать оболочкой), можно еще как-то извратиться.. но все же хочется получить все преимущества "нормальной" загрузки сборок, такие как ограничение прав, чтобы например не давать сборке лазить в ФС и тд.. и при этом не давать им убить основное приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2013, 22:19 |
|
|
start [/forum/topic.php?fid=20&msg=38156217&tid=1405142]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 309ms |
total: | 445ms |
0 / 0 |