2

「WCFRESTサービスアプリケーション」が一番上にあるn層アプリケーションがあります。パフォーマンスを考慮すると、コンテキストモードは次のようなPerCallです。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]

次のように、ログ記録用のインターセプト(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秒の追加時間があります。これは非常に長い時間です。それはなぜです?!このような大きなパフォーマンスオーバーヘッドなしでインターセプターを機能させる別の方法はありますか?!

4

0 に答える 0