Я разрабатываю проект ASP.NET среднего размера с использованием ASP.NET MVC и Entity Framework. Я разработал систему 3-го уровня, установив 3 Визуальные проекты Студии и ссылки на них соответственно:Является ли мой 3-уровневый (n-ярус) архитектуры хорошим дизайном?
- Презентации - Это мой проект MVC и содержит все виды и контроллеры. Я полностью удалил папку с моделью из этого проекта, так как я перемещаю его в проект BO (см. Ниже)
- Business Objects (BO) - Этот проект содержит «мясо» приложения, и это где реальный сердце приложения находится. Здесь определяются объекты, которые представляют вещи, которые я пытаюсь моделировать в коде (User, Facility, Appointment и т. Д.).
- Доступ к данным (DA) - Этот проект до сих пор является платформой Entity Framework.
«Проблема», с которой я сталкиваюсь, заключается в том, что я делаю много ручного сопоставления «один-к-одному» в BO. Например, когда вызывается User.load(), я загружаю пользователя из EF, затем сопоставляю ряд параметров (имя, фамилия, имя пользователя, активный и т. Д.) Из результата EF в параметры объекта.
Я считаю это хорошим и плохим. Хорошо: он отключает EF от проекта, поэтому, если мне когда-либо понадобится использовать другое хранилище данных, я не привязан только к EF. Плохо: требуется немного больше времени, потому что я должен настроить каждый параметр и тщательно обрабатывать их на Add(), Update() и т. Д., Реализуя мое собственное отслеживание изменений.
Что вы думаете об этом подходе?