Можно ли, чтобы DAL возвращал тип DTO из модели домена, а не просто возвращал DataTable? Разве не более свободно, если ваши функции DAL возвращают DataTables / DataSets, а ваш BLL сопоставляет данные с бизнес-объектами?
Возврат DTO против DataTable из DAL
Ответы (2)
Я думаю, что все сводится к личным предпочтениям, но мне нравится избегать DataTables, когда это возможно.
Иногда они могут быть удобными, но тот факт, что они не строго типизированы, значительно затрудняет отладку, тестирование и просто понимание кода.
Для небольших приложений в .NET лучше всего строить архитектуру на DataSets и DataTables. У вас есть прямая поддержка привязки для пользовательского интерфейса, для отчетности, и она хорошо масштабируется, пока вы не дойдете до более серьезных проблем домена. Ознакомьтесь с книгой Фаулера «Шаблоны архитектуры корпоративных приложений», особенно с шаблонами табличных модулей и табличных шлюзов данных.
Для чего-то более сложного всегда окупается наличие хорошей модели предметной области и соответствующих слоев вокруг нее (ORM mapper, Remoting и Service Layers и т. Д.). Для этих шаблонов обратитесь к ранее упомянутой книге, желательно с Domain Driven Design Эрика Эванса.