Счетчики транзакций MVC3 - PullRequest
       3

Счетчики транзакций MVC3

1 голос
/ 29 марта 2012

Я хочу посчитать количество транзакций, которые извлекают некоторые отчеты из базы данных (SQL Server).Я использую EF4.1 для взаимодействия с базой данных и MVC3 для клиента.

Может кто-нибудь предложить лучший способ сделать и разместить (в контроллере или в службе репозитория и т. Д.).

Я хочу ограничить пользователя максимум 100 транзакциями в час.После этого ограничения я бы заблокировал пользователя и вышел из системы.Заранее спасибо !!

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Это явно бизнес-логика, поэтому «действие» (решение) должно находиться на уровне вашей бизнес-логики.

В БД сохраняйте таблицу с использованной квотой в день и обновляйте эту таблицу каждый разпользователь выполняет подсчитанное действие (например, получение определенного отчета или запись в базу данных).То есть ваша бизнес-логика содержит инструкции по обновлению счетчика потребляемой квоты для такой операции.

Добавьте логику проверки на бизнес-уровне, которая считывает потребляемую квоту для пользователя, и проверяет (то есть разрешает), только еслидневная квота для этого пользователя не была достигнута.

При необходимости очищайте квоту каждый день, но вы можете сохранить ее для учета.

1 голос
/ 29 марта 2012

Я бы, вероятно, заглянул в ActionFilterAttribute, который можно применить глобально (для всех контроллеров) в классе MvcApplication, метод RegisterGlobalFilters. Что-то вроде:

public class FilterTrafficAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Log and track visitor count for the hour here, and decide if they
        // should proceed on or not.
        // You can also change the ActionResult of the request by altering the
        // filterContext.Result.
    }
}

Тогда в MvcApplication:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandlerErrorAttribute());

    // add this line:
    filters.Add(new FilterTrafficAttribute());
}

Тогда вы гарантируете, что он применяется ко всем вызовам и обладает большой способностью обработки. Есть и другие настройки, которые могут вас заинтересовать ActionFilterAttribute

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...