Skip to content

Статистика відвідувань для веб додатка Asp.net Core 7

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Завантаження...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


У цій статті розробимо простий лічильник статистики, для відстеження кількості унікальних відвідувачів і переглядів сайту.

Для прикладу, створимо простий проект ASP.NET Core Web Application (Веб-додаток ASP.NET Core), який міститиме кілька сторінок, власний компонент middleware і мінімальну логіку роботи з базою даних на основі EF Core.

Я очікую від вас мінімальні знання концепцій Entity Framework Core і фреймворку MVC, тому в деяких місцях, вдаватися в подробиці не стану.

Статистика відвідувань для веб додатка Asp.net Core 7

Створення проекту

Конфігурування підключення

Модель і Репозиторій

Конфігурування постачальника бази даних і класу контексту

Створення бази даних

Створення класу middleware

Створення контролера та подань

Створення проекту

Щоб створити проєкт VisitsCounter, запустіть Visual Studio і виберіть у меню File (Файл) – New Project (Створити Проєкт). Вкажіть шаблон проекту ASP.NET Core Web Application (Веб-додаток ASP.NET Core).

Введіть VisitsCounter, у полі Name, на наступній сторінці вкажіть Framework .Net 7.0 і натисніть кнопку Create:

Конфігурування підключення

Для початку завантажимо бібліотеку Entity Framework Core Sql Server:

Entity Framework Core Sql Server

Або через Package Manager Console:

Перейдемо у файл appsettings.json і пропишемо конфігурацію підключення та логування:

Рядки підключення визначаються у файлі appsettings.json, у коді вище наведено визначення рядка підключення для БД додатка GameStore. У проєкті застосовується версія LocalDB продукту SQL Server, яка спроєктована спеціально для розробників і не вимагає конфігурації або облікових даних.

Ви зобов’язані забезпечити, щоб рядок підключення був єдиним нерозривним рядком. Формат рядка підключення специфічний для кожного сервера баз даних.

Навіть у проєкті, що зберігає лише невеликий обсяг даних, важливо розуміти запити і команди SQL, які інфраструктура Entity Framework Core посилає серверу баз даних.

Модель і Репозиторій

Модель для додатка VisitsCounter ґрунтуватиметься на відвідувачах, а саме: даті візиту, кількості візитів і кількості переглядів за добу. Створіть папку Models і додайте в неї файл класу на ім’я Visitor.cs з таким вмістом:

У забезпеченні доступу до даних у БД інфраструктура Entity Framework Core покладається на клас контексту БД. Щоб забезпечити приклад додатка контекстом, додайте в папку Models файл класу на ім’я ApplicationContext.cs із таким кодом:

Мені подобається забезпечувати узгоджений доступ до даних у застосунку з використанням патерну “Сховище” (Repository), у якому інтерфейс визначає властивості та методи, призначені для доступу до даних, а для роботи з механізмом зберігання даних застосовується клас реалізації.

Перевага використання патерну “Сховище” пов’язана з полегшенням модульного тестування частини MVC застосунку, а також із тим, що деталі, які стосуються зберігання даних, приховані від інших частин застосунку.

Щоб створити інтерфейс сховища, створіть папку Interfaces і додайте в неї файл інтерфейсу на ім’я IVisitor.cs з таким вмістом:

Метод GetStatisticsByDate(), дасть змогу отримувати статистику за зазначеними часовими відрізками, методи IncrementVisitors() і IncrementViews(), необхідні для збільшення кількості переглядів і відвідувачів ресурсу.

Тепер визначимо клас реалізації сховища, щоб звертатися до даних через клас контексту, створимо папку Repository і додамо туди клас на ім’я VisitorRepository, з таким вмістом:

Конфігурування постачальника бази даних і класу контексту

Додайте в клас Program.cs оператори конфігурації, щоб повідомити інфраструктуру Entity Framework Core про те, яким чином використовувати рядок підключення, який має застосовувати постачальник БД, і як керувати класом контексту:

Метод AddDbContext<T>(), що розширює, застосовується для налаштування класу контексту, вказує інфраструктурі Entity Framework Core, який постачальник БД використовувати (у цьому разі за допомогою методу UseSqlServer(), але для кожного постачальника БД передбачено свій метод), і надає рядок під’єднання.

Створення бази даних

У попередньому розділі для інфраструктури Entity Framework Core було вказано вид даних, що підлягають зберіганню, і спосіб підключення до сервера баз даних. Далі необхідно створити БД.

Інфраструктура Entity Framework Core управляє базами даних через засіб, званий міграціями, які являють собою набори змін, що створюють або модифікують БД з метою її синхронізації з моделлю даних.

Для роботи з міграцією, необхідно завантажити таку бібліотеку:

Для створення міграції у вікні Package Manager Console введіть таку команду:

Просто створити міграцію, яка являє собою всього лише набір інструкцій, недостатньо. Інструкції міграції повинні бути виконані, щоб створити БД, яка зможе зберігати дані програми. Для виконання інструкцій міграції, у вікні Package Manager Console виконайте команду:

Інфраструктура Entity Fгamework Core підключиться до сервера баз даних, зазначеного в рядку підключення, і виконає оператори в міграції. Результатом буде БД, яку можна використовувати для зберігання об’єктів Visitor.

Створення класу middleware

У проєкт додамо папку Middleware, а в ній створимо клас VisitorCounterMiddleware, з таким вмістом:

Клас middleware зобов’язаний містити конструктор, який приймає параметр типу RequestDelegate. Через цей параметр він отримує посилання на делегат запиту, який стоїть наступним у конвеєрі обробки запиту.

Також у класі має бути визначено метод, який має називатися або Invoke, або InvokeAsync. Причому цей метод має повертати об’єкт Task і приймати як параметр контекст запиту – об’єкт HttpContext. Цей метод власне і буде обробляти запит.

Суть дії класу полягає в тому, що ми перевіряємо, чи створено для поточного відвідувача куку з ім’ям “VisitorId“, якщо створено, то такий відвідувач уже був сьогодні на сайті, тому потрібно збільшити тільки кількість переглядів. Якщо ж кука відсутня, значить це новий відвідувач, і крім переглядів, збільшуємо кількість відвідувачів. Наприкінці методу передаємо запит наступному компоненту, викликавши метод _next.Invoke().

Для додавання компонента middleware, який представляє клас, у конвеєр обробки запиту застосовується метод UseMiddleware(). Додамо в клас Program.cs, наступний рядок:

За допомогою методу UseMiddleware<T>, у конструктор об’єкта VisitorCounterMiddleware буде впроваджуватися об’єкт для параметра RequestDelegate next. Тому явним чином передавати значення для цього параметра нам не потрібно.

Створення контролера та подань

Для тестування застосунку визначимо в контролері HomeController дію для перегляду статистики відвідувань і залишимо дії за замовчуванням, для можливості навігації сайтом:

У дії GetStatistics, отримуємо інформацію за переглядами і відвідувачами за минулий місяць (можете передавати будь-які діапазони) і передаємо в подання. У папці Views / Home, визначимо подання GetStatistics.cshtml, з таким вмістом:

Запустимо застосунок, повідкриваємо різні сторінки, потім перейдемо за адресою і подивимося статистику. Можете видалити куку, щоб створити нового відвідувача або зайти на сайт у режимі інкогніто.

Тепер перейдемо за адресою: https://localhost:XXXX/Home/GetStatistics

статистика посещений веб-сайта

На цьому все. Додаток містить мінімальний функціонал, для успішного використання в проєктах.

Ви можете завантажити вихідний код у моєму репозиторії — Github.

Поділіться вашою думкою в коментарях, ви використовуєте готові сервіси аналітики для ваших сайтів чи пишете власні?

Так само вам може бути цікава попередня стаття:

Checkbox List в Asp.net Core Mvc


Ви хочете навчитися писати код мовою програмування C#?

Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.

Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:

  • Доступ до пройденого матеріалу
  • Тематичні статті
  • Бібліотека книг
  • Онлайн тестування
  • Спілкування в закритих групах

https://dijix.com.ua

Живи у своєму світі, програмуй у нашому.


 

Published inAsp.Net Core
Subscribe
Notify of
guest
0 комментариев
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x