Re: Процессы vs. потоки vs. домены
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 31.10.11 20:02
Оценка:
Здравствуйте, Neud, Вы писали:

N>Добрый день всем!


N>У меня несколько "нубовский" вопрос по .Net Я думаю, что почти каждый из вас видел Google Chrome browser. И как вы уже знаете, что каждая вкладка у это веб броузера в отдельном процессе. Как я понял, это сделано для того, что бы если одна вкладка повисла — она не потянет полностью все приложение. Так вот вопрос в том, что — почему они сделали именно так? Ведь многопоточностью можно достичь, по сути, такого же результата?


Нельзя, chrome написан на неуправляемом языке (С++) поэтому ошибка может уронить браузер. Выгодно разделять вкладки по процессам.

N>Когда я гуглил по поводу имплементации такого плана приложения (вкладка — процесс) я наткнулся на советы, что лучше делать это через домены приложения. Типа одна вкладка — один домен.

.NET процессы, запуская только безопасный код, могут максимум уронить только домен приложения поэтому архитектура с одним процессом и разными доменами там работает. Но если надо вызывать неуправляемый код, то полюбому нужны разные процессы.

N>Так вот вопрос, кто-нибудь уже проектировал и делал такие приложения, которые предусматривают отказоустойчевость, если хотя бы один элемент повис? И какие плюсы и минусы а) разных доменов б) разных процессов в) разных потоков?

В .NET 4 необработанное исключение в потоке вызывает завершение домена приложения, поэтому если груpить недоверенный код, то только в отдельный домен.

Разные процессы — кросс-процессный маршалинг — дорого. Межу доменами должно получше работать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.