2010-10-07 27 views
2

EDIT semble que mon article original ci-dessous aurait pu être un peu long. En d'autres termes, est-ce que je peux générer certains AppDomains et m'assurer qu'ils ne peuvent pas communiquer entre eux d'une manière ou d'une autre?AppDomain isolation


Il y a une ligue de simulation de football robotique compétitif appelé RoboCup 3D. L'une des règles fondamentales est que toutes les communications entre les agents doivent être effectuées via le serveur central. Ce serveur applique les règles de la simulation, telles que la limitation des distances et des vitesses de transmission des messages sur le terrain.

Les équipes comprennent plusieurs agents. Les règles indiquent que chaque agent doit s'exécuter dans son propre processus. La logique étant que la communication inter-processus peut être détectée. J'ai créé un .NET library for RoboCup called TinMan. Il y a des discussions sur les listes de diffusion pertinentes des équipes qui sont écrites et écrites en .NET pour la première fois l'année prochaine. En aparté, ils vont courir sur Mono.

Dans un environnement géré comme le CLR, je pense que l'exécution de tous les agents dans une seule instance du CLR présenterait des avantages en termes de performances, principalement en raison de l'exécution d'un seul GC. J'ai posé la question s'il serait acceptable d'utiliser des AppDomains distincts du même processus si c'est le cas.

Ce que j'aimerais savoir s'il est possible de détecter (et même d'empêcher) la communication entre AppDomains. Si c'est le cas, il y a plus de chance que les équipes de RoboCup écrites en .NET puissent exécuter leurs équipes en un seul processus.

Répondre

1

AFAIK, no. Les AppDomains sont gérés par le CLR; vous ne pouvez pas intercepter la communication inter-AppDomain pour l'empêcher (quel AppDomain ce code fonctionnerait-il, par exemple?)