Использование C# .NET на Windows 7.Использование Perfit с Autofac.Extras.DynamicProxy (т.е. Castle.Core) не работает
Я хочу, чтобы инструмент некоторые методы в моих работников сферы обслуживания, чтобы записать несколько счетчиков производительности. Лучший способ, который я нашел для этого, ИМО, - это PerfIt.
Я также использую Autofac как мой контейнер DI. Это решение было принято до PerfIt в моей службе подачи заявок. Это предположение, а не обсуждение здесь на данный момент.
PerfIt использует Castle.Core IInterceptor в своем ядре, для которого я хочу использовать Autofac.Extras.DynamicProxy. Или, если есть лучший выбор инструментария и/или рулон мой, я открыт для него.
Я зарегистрировал свой перехватчик с Autofac:
ContainerBuilder builder = // ...
builder.RegisterType<WorkerInterceptor>()
.OnActivated(args =>
{
var instance = args.Instance;
instance.PublishCounters = true;
instance.PublishEvent = true;
instance.RaisePublishErrors = true;
instance.SamplingRate = 1d;
})
.SingleInstance();
Я также зарегистрировать работник, для которого инструментальных основных методов.
builder.RegisterType<PuzzleProblemSolverWorker>()
.As<IServiceWorker>()
.As<IPuzzleProblemSolverWorker>()
.InstancePerDependency()
.InterceptedBy(typeof(WorkerInterceptor));
И инструментальный метод:
[PerfIt("PuzzleService", InstanceName = "PuzzleProblemSolverWorker")]
public virtual bool ShouldSaveSolution(byte[] bytes)
{
// ... Calculated whether shouldSave ...
return shouldSave;
}
инструментальных методы фактически вызываются, проверяются контрольными точками. Однако я не вижу никаких доказательств того, что инструментарий работает.
Мое замешательство в том, что существует достаточно слияния между PerfIt и/или Autofac.Extras.DynamicProxy, не уверенным, что не видит другого и/или работника, но что-то явно проваливается сквозь трещины.
Индивидуально оба теста проходят в рамках соответствующих проектов. Но, похоже, вы не видите друг друга через мой контейнер Autofac. Я бы не удивился, если бы это была проблема Reflection BindingFlags или что-то в этом роде, но мне интересно, видел ли кто-нибудь подобное?
Благодарим за понимание. Поскольку я изучал PerfIt с некоторым интересом, были некоторые нюансы, в которых мне нужно было больше внимания, поэтому я позволил себе сделать собственное предложение. Не стесняйтесь смотреть [здесь] (http://github.com/mwpowellhtx/MeasureIt/), если вам интересно. – mwpowellhtx