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