Счётчик посещений для сайта на ASP.NET MVC

В одной из предыдущих статей уже рассматривалось создание счётчика посещений для Web Forms. Подобный счётчик можно легко сделать и для сайта на основе ASP.NET MVC.

Принцип построения счётчика для ASP.NET MVC имеет много общего со способом рассмотренным ранее для Web Forms.

Для получения информации о посетителе используется также свойство Request. Но, в отличие от Web Forms, в ASP.NET MVC Request является свойством объекта контекста запроса (HttpContext). Поэтому для того чтобы получить те же сведения о посетителе в ASP.NET MVC необходимо обратиться к свойству HttpContext контроллера.

 Таким образом, сама процедура получения информации о посетителе мало чем отличается от Web Forms. Отличие только в том, что сбор информации происходит в методах контроллера и сам код становится более объёмным.

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

Создадим модель для счётчика. Класс модели будет реализовывать паттерн «Репозиторий» в связке с LINQ to SQL. В рамках данной статьи для класса модели будет вполне достаточно только конструктора и одного единственного метода, который добавляет данные в БД.

 Если в соответствующих методах контроллера обратиться к созданной модели, то данные о посещаемости будут сохранены в БД.

 Обращение к модели счётчика лучше всего производить в самом начале метода, чтобы сразу же сохранить в БД информацию о посетителе.

Счётчик посещений, который был разработан в этой статье, с функциональной точки зрения является полным аналогом счётчика разработанного ранее для Web Forms. Возможности данного счётчика при необходимости также можно расширить. Однако, вследствие использования паттерна MVC, реализация этого счётчика гораздо более сложна и громоздка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *