Бих искал да създам добро приложение в ASP.NET MVC 5, използвайки EF 6 Code first concept. Искам да е добре проектиран, т.е. най-общо казано: отделни слоеве за представяне, логика и данни. Искам да може да се тества :)
Ето моята идея и някои проблеми, свързани със създаването на приложение
Презентационен слой: Това е целият ми MVC - изглед на модели (не модели), изгледи, контролери. Вярвам, че това валидиране трябва да се направи някъде другаде (по мое мнение - това е част от бизнес логиката), но е доста удобно за използване на атрибути от пространството на имената DataAnnotations във ViewModelds и проверка на валидността в контролера.
Логически слой: Услуги - класове с техните интерфейси за управление на бизнес логиката. Поставих там функции като: AddNewPerson(PersonViewModel Person), SendMessageToPerson(...). Те ще използват контекста на DB, за да извършват своите действия (има шанс не всички от тях да разчитат на контекста). Има пряка връзка между услугата и db - имам предвид, че класът на услугата има препратка към контекст. Къде трябва да направя съпоставяне между ViewModel и Model? Чувал съм, че услугата е лошо място за това - така че може би в контролерите. Чувал съм, че услугата трябва да върши работата, свързана изключително с db. правилно ли е Моята картина на слоя услуга добра ли е?
Слой данни: Чел съм много за Repository и UoW шаблони. Има някои статии, които предполагат, че EF6 прилага тези две неща. Не искам да създавам допълнителен код, ако няма нужда от такова поведение. Въпросът е: прав ли съм да приема, че не ми трябват?
Ето моя поток:
Изглед‹->Контролери (използване на ViewModels)‹->Услуги (използване на модели)‹->DB.
**Ще използвам DI в моя проект.
Какво мислите за моята структура на проекта?