Я смотрел на различия между POCO и DTO (Похоже, что POCO - это dto с поведением (методы?)) и наткнулся на эта статья от Мартина Фаулера по модели анемичного домена.
Из-за недостаточного понимания, я думаю, что создал одну из этих моделей анемичных доменов.
В одном из моих приложений у меня есть объекты бизнес-домена, определенные в dll dto. У них много свойств с геттером и сеттером, и не намного больше. Мой код бизнес-логики (заселение, вычисление) находится в другой DLL "bll", а мой код доступа к данным - в dal-dll. "Лучшая практика", - подумал я.
Как правило, я создаю dto так:
dto.BusinessObject bo = new dto.BusinessObject(...)
и передать его в слой bll следующим образом:
bll.BusinessObject.Populate(bo);
который, в свою очередь, выполняет некоторую логику и передает ее в dal-слой следующим образом:
dal.BusinessObject.Populate(bo);
Из моего понимания, чтобы сделать мой dto в POCO, мне нужно сделать бизнес-логику и поведение (методы) частью объекта. Поэтому вместо кода выше это больше похоже на:
poco.BusinessObject bo = new poco.BusinessObject(...)
bo.Populate();
т. Я вызываю метод на объекте, а не передаю объект методу.
Мой вопрос: как я могу это сделать и все еще сохраняю "передовое" изложение проблем (отдельная dll и т.д.). Не вызывает ли метод метод для объекта, что метод должен быть определен в объекте?
Пожалуйста, помогите мне смутить.