Я - .net / c # noob (давний разработчик сервлетов / Java)
Мне нужно добавить запись в мое приложение MVC. я хочу, чтобы он был довольно дешев с точки зрения производительности и прост в настройке.
то, что я первоначально хотел бы сделать, это регистрировать каждое входящее действие контроллера. мне пришло в голову, что может быть одна точка входа, поэтому мне не нужно добавлять строку кода к методам действий каждого контроллера.
, как я вижу, я могу добавить атрибут [LogRequest] к контроллеру (в моем случае, базовый контроллер) и затем реализовать
public class LogsRequestsAttribute : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{ ... }
}
класс для обработки атрибута logrequest.
или
Я мог бы просто переопределить базовый контроллер согласно:
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// perform some action here
}
}
и наследовать все мои контроллеры от BaseController.
с точки зрения производительности, что было бы быстрее?
также, с точки зрения производительности, я рассматриваю возможность помещения фактического вызова метода протоколирования в неблокирующий поток, который запускается один раз и умирает. какие подводные камни с таким подходом? цель состоит в том, чтобы приложение продолжало работу, а не дожидалось, пока метод ведения журнала завершит свою задачу.