У меня есть случай, когда я должен использовать некоторые классы в AppDomains. Чтобы заставить их работать, у меня есть унаследованные от MarshalByRefObject. Все с этими классами работает должным образом. Но эти классы используются во всей нашей системе, и в 99% случаев эти классы будут использоваться только в одном AppDomain. Есть ли какие-либо отрицательные побочные эффекты от наследования от MarshalByRefObject при использовании этих классов внутри одного AppDomain?
Спасибо,
ПропуститьЛюбые побочные эффекты при использовании MarshalByRefObject?
3
A
ответ
7
Конечно, MRBO оказывает существенное влияние на код, генерируемый джиттера. Любой доступ к полю класса приводит к вызову вспомогательного метода, реализованного в среде CLR, вместо одной команды CPU, которая обращается к полю.
Это неизбежно, только CLR знает, действительно ли объект является прокси-сервером или реальной сделкой. И прокси-сервер должен эмулировать поле с удаленным вызовом. Если это не прокси-сервер, вы все равно платите за накладные расходы помощника, на порядок ниже.
Невозможно предсказать, действительно ли это повлияет на ваш код, мы говорим о наносекундах здесь. Вы только что-то делаете, если замедление становится заметным.