Вместо того, чтобы называть их POCOs , я предпочитаю называть их постоянными невежественными объектами .
Поскольку их работа проста, им не нужно заботиться о том, для чего они используются или как они используются.
Лично я думаю, что POCO - это просто еще одно модное слово (например, Web 2.0 - не начинайте с этого) для открытого класса с простыми свойствами.
Я всегда использовал эти типы объектов для поддержания бизнес-состояния.
Основные преимущества POCO действительно проявляются, когда вы начинаете использовать такие вещи, как шаблон репозитория, ORM и внедрение зависимостей.
Другими словами - вы можете создать ORM (скажем, EF), который извлекает данные из где-то (дБ, веб-сервис и т. Д.), А затем проецирует эти данные в объекты (POCO которые).
Эти объекты можно передавать дальше вниз по стеку приложений на уровень обслуживания, а затем на веб-уровень.
Тогда, если однажды вы решите переключиться на nHibernate, вам вообще не нужно будет прикасаться к своим POCO, единственное, что нужно изменить, - это ORM.
Отсюда и термин «упорство невежественного» - им все равно, для чего они используются или как они используются.
Итак, подведем итоги, плюсы:
- Позволяет простой механизм хранения данных, упрощает сериализацию / прохождение через слои
- Идет рука об руку с внедрением зависимости, шаблоном репозитория и ORM. Гибкость.
- Минимизированная сложность и зависимости от других слоев. (высшие слои заботятся только о POCO, POCO ни о чем не заботятся). Слабое сцепление
- Простая тестируемость (для проверки домена не требуется заглушки).
Надеюсь, это поможет.