2013-09-20 2 views
3

У меня есть случай, когда я должен использовать некоторые классы в AppDomains. Чтобы заставить их работать, у меня есть унаследованные от MarshalByRefObject. Все с этими классами работает должным образом. Но эти классы используются во всей нашей системе, и в 99% случаев эти классы будут использоваться только в одном AppDomain. Есть ли какие-либо отрицательные побочные эффекты от наследования от MarshalByRefObject при использовании этих классов внутри одного AppDomain?

Спасибо,
ПропуститьЛюбые побочные эффекты при использовании MarshalByRefObject?

ответ

7

Конечно, MRBO оказывает существенное влияние на код, генерируемый джиттера. Любой доступ к полю класса приводит к вызову вспомогательного метода, реализованного в среде CLR, вместо одной команды CPU, которая обращается к полю.

Это неизбежно, только CLR знает, действительно ли объект является прокси-сервером или реальной сделкой. И прокси-сервер должен эмулировать поле с удаленным вызовом. Если это не прокси-сервер, вы все равно платите за накладные расходы помощника, на порядок ниже.

Невозможно предсказать, действительно ли это повлияет на ваш код, мы говорим о наносекундах здесь. Вы только что-то делаете, если замедление становится заметным.