使用MarshalByRefObject的任何副作用?

Ski*_*ris 5 .net c# remoting

我有一个案例,我必须在AppDomains上使用一些类.为了使它们工作,我让它们继承自MarshalByRefObject.这些类的所有内容都按预期工作.但是这些类在我们的系统中使用,并且99%的时间这些类将仅在一个AppDomain中使用.在单个AppDomain中使用这些类时,继承MarshalByRefObject会产生任何负面影响吗?

谢谢,
跳过

Han*_*ant 9

当然,MRBO对抖动产生的代码有很大的影响.对类的字段的任何访问都会导致调用CLR中实现的辅助方法,而不是访问该字段的单个CPU指令.

这是不可避免的,只有CLR知道对象实际上是代理还是实际交易.并且代理需要使用远程调用来模拟字段.如果它不是代理,那么你仍然需要支付助手调用开销,这比一个简单的数量级更慢.

这是否真的对你的代码有影响是不可能预测的,我们在这里讨论的是纳秒.如果减速变得明显,你只会做一些事情.