У меня вопрос по n-слойной архитектуре.Я долго и усердно размышлял, прежде чем задавать этот вопрос, так как здесь уже есть много похожих вопросов ... однако, буквально через полтора дня, глядя на него и прочитав эти ответы, я все еще не уверен.Разнообразие, казалось бы, схожей терминологии и разных подходов сбило меня с толку.
Если бы у меня были BLL и DAL в разных библиотеках классов, одним из способов взаимодействия между BLL и DAL было бы использование интерфейса, своего родакак DTO, определенный в другой отдельной DLL, на которую ссылаются как BLL, так и DAL.Объекты модели моего домена в BLL будут реализовывать этот интерфейс, как и любые объекты, созданные ORM в DAL.Чтобы сохранить свои бизнес-объекты, я мог бы затем передать их в DAL, который бы хорошо их принял, поскольку они реализуют общий интерфейс.Я также мог бы передавать объекты обратно в BLL, которые реализуют этот интерфейс.Это кажется разумным, поскольку и BLL, и DAL должны знать только базовый интерфейс, а не конкретную реализацию друг друга.
Мой вопрос: каков наилучший способ создания объекта на другой стороне?Например, если у меня есть объект Person в BLL, который реализует IPerson, и PersonDataObject или что-то еще в DLL, которая также реализует IPerson, я передаю Person в метод в DAL, который принимает параметр IPerson, затем в DAL I 'Я должен восстановить PersonDataObject, чтобы сохранить.Это даже самый лучший метод?
Извините, я, наверное, не слишком хорошо объяснил это, потому что я в замешательстве.Лучшая практика для чайников ответ будет принята с благодарностью.