.net новая изолированная среда процессов для ненадежного кода

#c# #.net #process #sandbox

#c# #.net #процесс #изолированная среда

Вопрос:

Итак, мне нужно запустить динамически скомпилированный ненадежный код в новом процессе. Я нашел, как это сделать в новом AppDomain (http://msdn.microsoft.com/en-us/library/bb763046.aspx ) но не новый процесс. Возможно ли это сделать?

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

Конечная цель — написать онлайновый компилятор C #.

Ответ №1:

Домены приложений — это способ изоляции.ЧИСТЫЙ код в системе. Процессы — это механизм изоляции операционной системы. В какой-то степени вы откажетесь от тонкостей .NET-кода и вам придется вручную управлять передачей данных между процессами.

Ознакомьтесь с классом Process. Похоже, вам нужно либо скомпилировать свой код в .exe, либо создать host .exe в .NET, который загружает ваш код. Последнее кажется лучше, поскольку вы можете просто написать хост один раз, а затем написать стандартный код связи с этим хостом.

Вы не предоставляете много информации о ваших конечных целях, но последние версии .NET предоставляют различные подключаемые API, на которые, возможно, стоит взглянуть.