Это отличный вопрос.Я собираюсь выбросить то, что я считаю возможным решением.
Основное приложение отвечает за ускорение дополнительных процессов (вкладок) по мере необходимости.Это очень похоже на раскручивание дополнительных нитей.
Он будет использовать некоторый тип межпроцессных обменов данными, таких как именованные каналы, для передачи команд из основного приложения в дополнительные процессы и получения результатов.Например, указание новой вкладке перейти на определенный URL.Кроме того, его можно использовать для передачи некоторого типа дескриптора для поверхности рисования дочернего процесса.
Или даже просто позволить родительскому процессу точно указать, где находится точка просмотра для дочерних областей рисования.Таким образом, может показаться, что у вас полностью интегрированное приложение, при этом поддерживается почти полное разделение.
Ключевым моментом здесь является достаточно точное определение точки связи.Конечно, выгода огромна, так как мертвый подпроцесс не убьет основное приложение, ЕСЛИ БЕЗ сообщений не написано очень плохо.
Кроме того, если точки связи хорошо защищены, вы можете эффективно изолировать дочерние процессы, не допуская их порчи с главным приложением.А для получения бонусных баллов вы могли бы даже запускать дочерние процессы под ограниченными учетными записями пользователей, что дополнительно ограничивало бы, какой ущерб они могли бы нанести.
Вы можете посмотреть на этих сайтах несколько примеров обмена данными: http://www.catch22.net/tuts/tips#ShareData
http://msdn.microsoft.com/en-us/magazine/bb985041.aspx