Чем отличаются DTO и POCO классы?

Недавно узнал про DTO, как про классы, в которых не должно быть никакой логики, которые используются как правило для передачи данных между разными шарами приложения. А чем тогда DTO отличается от POCO? Это ж тоже вроде как класс с такой же функцией, или нет?

DTO класс не может иметь никакой логики, абсолютно, как ни крути. Если в классе явно определён какой-то пользовательский конструктор (не говоря уже о каких-то методах) - это уже не DTO класс.

POCO класс разрешает иметь в себе определённую логику, помимо сущностей в виде полей и свойств.

Если DTO классы рассматриваются как хранилища информации и не больше того, и единственной целью этих классов является передача необходимой информации получателю, то POCO классы могут использоваться повсеместно, в частности разными ORM такими как Entity Framework (При чём как правило Entity Framework использует именно POCO классы).