Модифікувати архітектуру раніше розробленого Web-додатка «Гостьова книга» таким чином, щоб вийшов односторінковий додаток (SPA). Необхідно застосовувати AJAX-запити до контролера та оновлювати єдину Web-сторінку додатка без перезавантаження.
Завдання: ASP.NET Core MVC. Багаторівнева архітектура. Рівень представлення. Веб-додаток «Музичний портал»
Модифікувати раніше розроблений веб-додаток «Музичний портал» з монолітною архітектурою таким чином, щоб у результаті вийшла трирівнева архітектура.
У цьому завданні необхідно реалізувати Presentation Layer (рівень представлення), з яким безпосередньо взаємодіє користувач.
Зокрема, потрібно:
- Розробити класи-контролери (Controllers).
- Розробити подання (Views) — Razor-шаблони (.cshtml).
Завдання: ASP.NET Core MVC. Багаторівнева архітектура. Рівень бізнес-логіки. Веб-додаток «Музичний портал»
Модифікувати раніше розроблений веб-додаток «Музичний портал» з монолітною архітектурою таким чином, щоб у результаті вийшла трирівнева архітектура.
У цьому завданні необхідно реалізувати Business Logic Layer (рівень бізнес-логіки).
Зокрема, потрібно:
- Розробити класи-сервіси (service classes).
- Розробити трансферні моделі (DTO — Data Transfer Objects).
| ────────────────────────────────────────────────────────────────────────────────────── | |
| Presentation Layer (Рівень подання — те, що бачить і з чим взаємодіє користувач) | |
| ├── Контролери (Controllers) | |
| ├── Подання (Views / .cshtml файли) | |
| ├── ViewModels (моделі, які використовуються тільки у поданнях і контролерах) | |
| ├── DTO, які приходять від користувача (наприклад, з форм або JSON-запитів) | |
| ├── wwwroot (CSS, JavaScript, зображення) | |
| ├── Tag Helpers | |
| ├── Клієнтська валідація (JavaScript) | |
| ├── HttpContext (доступ до User, Session, Request, Response) |
| ────────────────────────────────────────────────────────────────────────────────────── | |
| Presentation Layer (PL / UI / Web) | |
| ├── Контролери (Controllers) / Razor Pages / Minimal API | |
| ├── Подання (Views / .cshtml) | |
| ├── ViewModels (моделі для представлення) | |
| ├── DTO (які приходять від користувача, наприклад, з форм) | |
| ├── Tag Helpers, View Components (перевикористовувані динамічні віджети) | |
| ├── wwwroot (CSS, JS, images) | |
| ├── Client-side validation (JS-валідація) | |
| ├── HttpContext (контекст запиту) |
Модифікувати раніше розроблений веб-додаток «Музичний портал» з монолітною архітектурою таким чином, щоб отримати трирівневу (three-layer) архітектуру:
- Presentation Layer — контролери та представлення (Views).
- Business Logic Layer — сервіси (буде в наступних завданнях).
Модифікувати архітектуру веб-додатка «Музичний портал» таким чином, щоб контролер взаємодіяв з базою даних через сервіс Repository, а не безпосередньо через контекст даних (DbContext).
При цьому взаємодія контролера з сервісом Repository має відбуватися через абстракцію IRepository, щоб забезпечити слабку зв’язаність (low coupling) між класами.
Реалізувати веб-сайт «Музичний портал», на якому користувачі можуть розміщувати та завантажувати пісні.
- Пісні на сайті поділяються за жанрами.
- Додавати пісні можуть тільки зареєстровані користувачі.
- Нові користувачі можуть залишати заявки на реєстрацію, які потім активує адміністратор порталу.
- Адміністратор має повний доступ до управління:
Модифікувати архітектуру раніше розробленого веб-додатка «Гостьова книга» таким чином, щоб:
- Контролер взаємодіяв з базою даних виключно через об’єкт класу Repository, а не безпосередньо через об’єкт класу контексту даних (
DbContext). - Робота з об’єктом класу Repository здійснювалася через інтерфейсне посилання
IRepository.
Мета — забезпечити слабку зв’язність (low coupling) між класами, дотримуючись принципів інверсії залежностей (DIP) та полегшуючи тестування й підтримку коду.
-
На головній сторінці
index.cshtmlвиводяться повідомлення користувачів. При цьому кожне повідомлення виводиться в окремій таблиці, де вказується логін користувача, який залишив повідомлення, текст повідомлення, а також дата і час надсилання повідомлення. -
У заголовковій частині головної сторінки виводяться дві посилання:
- «Вхід у систему» — перенаправлення на сторінку авторизації
login.cshtmlу разі, якщо користувач не вводив логін і пароль, а увійшов у систему як гість. - «Реєстрація» — перенаправлення на сторінку
registration.cshtml.
- «Вхід у систему» — перенаправлення на сторінку авторизації
-
Користувачі, які пройшли авторизацію, бачать багаторядкове текстове поле для вводу повідомлення, кнопку «Додати повідомлення» та кнопку «Вихід», за якою завершується сеанс.