Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created March 21, 2026 11:45
Show Gist options
  • Select an option

  • Save sunmeat/e86f91f64cf864e43d28d566f36180c4 to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/e86f91f64cf864e43d28d566f36180c4 to your computer and use it in GitHub Desktop.
ДЗ: трирівнева архітектура у курсовому командному проєкті

Спробувати застосувати трирівневу (three-layer) архітектуру для фінального курсового проєкту. Мають бути такі рівні:

  • Presentation Layer — контролери та представлення
  • Business Logic Layer — сервіси
  • Data Access Layer (DAL) — рівень доступу до даних

Необхідно реалізувати Data Access Layer, зокрема:

Створити класи-репозиторії для роботи з сутностями бази даних. Забезпечити взаємодію з репозиторіями через абстракцію IRepository для досягнення слабкої зв’язаності (low coupling). Застосувати патерн Unit of Work, який:

  • Спрощує роботу з кількома репозиторіями.
  • Гарантує, що всі репозиторії використовують один і той же контекст даних (DbContext).

Реалізувати Business Logic Layer (рівень бізнес-логіки).

  • Розробити класи-сервіси (service classes).
  • Розробити трансферні моделі (DTO — Data Transfer Objects).
  • Забезпечити взаємодію з класами-сервісами виключно через абстракції (інтерфейси), щоб досягти слабкої зв'язаності (low coupling) між компонентами.

Реалізувати Presentation Layer (рівень представлення), з яким безпосередньо взаємодіє користувач.

  • Розробити класи-контролери (Controllers).
  • Розробити подання (Views) — Razor-шаблони (.cshtml).
  • За потреби розробити моделі представлення (View Models або Binding Models) — спеціальні класи для передачі даних між контролером і представленням.
  • Забезпечити валідацію трансферних моделей (DTO) як на стороні сервера, так і на стороні клієнта.
  • Для управління процесом валідації застосовувати атрибути валідації (Data Annotations, наприклад [Required], [StringLength], [RegularExpression] тощо).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment