WCF REST、PerCall、Castle.核心拦截器性能问题

WCF REST、PerCall、Castle.核心拦截器性能问题,wcf,rest,service,intercept,Wcf,Rest,Service,Intercept,我有n层应用程序,其中WCF REST服务应用程序位于顶部。出于性能考虑,上下文模式为PerCall,如下所示 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 我还有一个Intercept Castle.Core,用于记录日志,方法如下: 实施: public static readonly ProxyGenerator generator = new ProxyGenerator(); public

我有n层应用程序,其中WCF REST服务应用程序位于顶部。出于性能考虑,上下文模式为PerCall,如下所示

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
我还有一个Intercept Castle.Core,用于记录日志,方法如下:

实施:

public static readonly ProxyGenerator generator = new ProxyGenerator();

public static T Create<T>(object target, ILog log)
{
    return (T)generator.CreateInterfaceProxyWithTarget(typeof(T), target, new LoggingInterceptor(log));
}

private class LoggingInterceptor : IInterceptor
{
        ...
}
拦截器:

IUserHandler handler = ObjectFactory.Create<IUserHandler>(new UserHandler(), log);

handler.GetUsers();

通过使用拦截器,每个方法调用有大约0,3秒的额外时间,这是相当多的。为什么?!有没有其他方法可以让拦截器在没有如此巨大性能开销的情况下工作

是代理添加时间还是日志代码?您是否使用空的日志记录建议对其计时?我还关闭了日志记录并检查了性能,但在我的案例中,变化非常小:。当我将代码从普通对象创建更改为[ObjectFactory.Create]时,我得到了性能下降。是代理添加了时间还是日志代码?您是否使用空的日志记录建议对其计时?我还关闭了日志记录并检查了性能,但在我的案例中,变化非常小:。当我将代码从普通对象创建更改为[ObjectFactory.Create]时,我得到了这样的性能下降。