Using DTOs and BOs

Posted by ryanzec on Stack Overflow See other posts from Stack Overflow or by ryanzec
Published on 2011-01-08T23:29:07Z Indexed on 2011/01/08 23:53 UTC
Read the original article Hit count: 312

One area of question for me about DTOs/BOs is about when to pass/return the DTOs and when to pass/return the BOs.

My gut reaction tells me to always map NHibernate to the DTOs, not BOs, and always pass/return the DTOs. Then whenever I needed to perform business logic, I would convert my DTO into a BO.

The way I would do this is that my BO would have a have a constructor that takes a parameter that is the type of my interface (that defines the required fields/properties) that both my DTO and BO implement as the only argument.

Then I would be able to create my BO by passing it the DTO in the constructor (since both with implement the same interface, they both with have the same properties) and then be able to perform my business logic with that BO. I would then also have a way to convert a BO to a DTO.

However, I have also seen where people seem to only work with BOs and only work with DTOs in the background where to the user, it looks like there are no DTOs.

What benefits/downfalls are there with this architecture vs always using BO's?

Should I always being passing/returning either DTOs or BOs or mix and match (seems like mixing and matching could get confusing)?

© Stack Overflow or respective owner

Related posts about c#

Related posts about design-patterns