Здравствуйте, Neud, Вы писали:
N>Добрый день всем!
N>У меня несколько "нубовский" вопрос по .Net Я думаю, что почти каждый из вас видел Google Chrome browser. И как вы уже знаете, что каждая вкладка у это веб броузера в отдельном процессе. Как я понял, это сделано для того, что бы если одна вкладка повисла — она не потянет полностью все приложение. Так вот вопрос в том, что — почему они сделали именно так? Ведь многопоточностью можно достичь, по сути, такого же результата?
Нельзя, chrome написан на неуправляемом языке (С++) поэтому ошибка может уронить браузер. Выгодно разделять вкладки по процессам.
N>Когда я гуглил по поводу имплементации такого плана приложения (вкладка — процесс) я наткнулся на советы, что лучше делать это через домены приложения. Типа одна вкладка — один домен.
.NET процессы, запуская только безопасный код, могут максимум уронить только домен приложения поэтому архитектура с одним процессом и разными доменами там работает. Но если надо вызывать неуправляемый код, то полюбому нужны разные процессы.
N>Так вот вопрос, кто-нибудь уже проектировал и делал такие приложения, которые предусматривают отказоустойчевость, если хотя бы один элемент повис? И какие плюсы и минусы а) разных доменов б) разных процессов в) разных потоков?
В .NET 4 необработанное исключение в потоке вызывает завершение домена приложения, поэтому если груpить недоверенный код, то только в отдельный домен.
Разные процессы — кросс-процессный маршалинг — дорого. Межу доменами должно получше работать.