2010-10-07 70 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會運行此代碼?)