2010-10-07 62 views
2

编辑似乎我原来的帖子下面可能有点长。AppDomain隔离

简而言之,我是否可以产生一些AppDomain并确保它们不能以任何方式与另一个进行通信?


有一个竞争机器人足球模拟联赛称为RoboCup 3D。基本规则之一是通过中央服务器进行代理之间的所有通信。该服务器强制执行模拟规则,例如限制消息在现场传递的距离和速率。

团队由若干代理人组成。规则规定每个代理必须在自己的进程中运行。理由是可以检测到进程间通信。我已经创作了.NET library for RoboCup called TinMan。关于明年第一次使用.NET编写的团队的相关邮件列表,有一些讨论。顺便说一句,他们将在Mono上运行。

在像CLR这样的托管环境中,我相信在单个CLR实例中运行所有代理会带来性能上的好处,主要是由于运行单个GC。我问过这个问题,如果是这种情况,是否可以使用同一个进程的单独AppDomain。

我想知道是否有可能检测(甚至阻止)AppDomains之间的通信。如果是这样,那么使用.NET编写的RoboCup团队可以在一个过程中运行团队。

回答

1

AFAIK,no。 AppDomain由CLR管理;您不能拦截AppDomain之间的通信以阻止它(例如,哪个AppDomain会运行此代码?)