Я довольно новичок в архитектурных проектах в ООП (я исхожу из программирования робототехники, так что это битва). Команда, в которой я участвую, создает довольно большое приложение, и ведущий руководитель проекта представил нам требования и в этих требованиях мы должны использовать Layers при создании модулей. Технологии, которые мы используем, - это C# WinForms и Oracle для хранилища данных.N-Tier Application Design
Мой модуль состоит из Администрации пользователя и я попытался отделить логику от реализации, поэтому у меня есть следующая АРХИТЕКТУРА:
- Business Layer
- Уровень данные
- Presentation Layer
Я использую шаблон репозитория и IoC с EF, и все выглядит и работает отлично, но теперь мой босс сказал мне, что мне нужно разделить уровень презентации с уровня данных полностью. Проблема заключается в том, что из презентации слоя я использую IoC и если я хочу, чтобы создать объект пользователя, например я следующее:
_userRepo.InsertNewUser(new User { props here }); .
Так что это неверно, потому что доступ к DAL непосредственно. Мой босс сказал мне, что мне нужен еще один слой, который изолирует эти вызовы и реализует бизнес-правила (?!)
Я искал и исследовал Интернет, и я не нашел ничего полезного (в основном потому, что все отфильтровано здесь на работе).
Я думаю, что мой босс хочет что-то из уровня домена/уровня обслуживания, но у меня нет идей, как его реализовать в текущем проекте. Я могу опубликовать проект без каких-либо проблем, любые конфиденциальные данные будут удалены из кода.
Любая помощь будет оценена по достоинству.
Причины, почему вы бы попытка сделать это состоит в том, что у вас есть два или более разных PL, или ваши бэкэнд-API используются другими приложениями. Например, у вас есть веб-приложение, настольное и мобильное приложение, которое будет использовать те же интерфейсные API. Это так? Если нет, ваш босс слишком усложняет ситуацию, помните YAGNI. – oleksii
@oleksii, хотя я согласен с YAGNI, также важна сфера беспокойства. Например, если вы хотите перейти от EF к какой-либо другой структуре ORM, вам придется прикоснуться к BL, что вам не нужно ... – derape
@derape, если я хочу перейти от EF к чему-то еще, я бы сделал это перед тем, как выбрать ORM. Создание абстракции над абстрактным ОРМ - это отходы и чрезмерное усложнение. Такая абстракция также удаляет конкретные подробности об ORM, которые, на мой взгляд, весьма полезны. – oleksii