2010-10-07 2 views
2

EDIT кажется, мой оригинальный пост ниже, возможно, был немного длинным.AppDomain изоляция

Проще говоря, могу ли я порождать некоторые AppDomains и гарантировать, что они не могут общаться друг с другом каким-либо образом?


Существует конкурентоспособный роботизированная футбол моделирования лиги называется RoboCup 3D. Одним из основных правил является то, что вся связь между агентами должна проводиться через центральный сервер. Этот сервер применяет правила моделирования, такие как ограничение расстояний и скорости передачи сообщений по полю.

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

Я создал .NET library for RoboCup called TinMan. Есть несколько разговоров о соответствующих списках рассылки входящих команд, которые написаны в .NET в первый раз в следующем году. В стороне, они будут работать на Моно.

В управляемой среде, такой как CLR, я считаю, что для запуска всех агентов в одном экземпляре CLR будут преимущества производительности, в первую очередь из-за запуска единого GC. Я задал вопрос, может ли быть приемлемым использовать отдельные AppDomains того же процесса, если это так.

Что я хотел бы знать, можно ли обнаружить (и даже предотвратить) связь между AppDomains. Если это так, то есть больше шансов, что команды RoboCup, написанные на .NET, могут запускать свои команды в одном процессе.

ответ

1

AFAIK, no. Управление приложениями осуществляется CLR; вы не можете перехватывать inter-AppDomain связь, чтобы предотвратить его (например, какой AppDomain выполнил этот код?)

Смежные вопросы