Объяснение POCO - PullRequest
       1

Объяснение POCO

22 голосов
/ 03 августа 2010

Мне интересно, может ли кто-нибудь дать убедительное объяснение (с примером) POCO (Plain Old CLR Object).Я нашел краткое объяснение в Википедии , но оно действительно не дает убедительного объяснения.

Ответы [ 3 ]

46 голосов
/ 03 августа 2010

Вместо того, чтобы называть их POCOs , я предпочитаю называть их постоянными невежественными объектами .

Поскольку их работа проста, им не нужно заботиться о том, для чего они используются или как они используются.

Лично я думаю, что POCO - это просто еще одно модное слово (например, Web 2.0 - не начинайте с этого) для открытого класса с простыми свойствами.

Я всегда использовал эти типы объектов для поддержания бизнес-состояния.

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

Другими словами - вы можете создать ORM (скажем, EF), который извлекает данные из где-то (дБ, веб-сервис и т. Д.), А затем проецирует эти данные в объекты (POCO которые).

Эти объекты можно передавать дальше вниз по стеку приложений на уровень обслуживания, а затем на веб-уровень.

Тогда, если однажды вы решите переключиться на nHibernate, вам вообще не нужно будет прикасаться к своим POCO, единственное, что нужно изменить, - это ORM.

Отсюда и термин «упорство невежественного» - им все равно, для чего они используются или как они используются.

Итак, подведем итоги, плюсы:

  • Позволяет простой механизм хранения данных, упрощает сериализацию / прохождение через слои
  • Идет рука об руку с внедрением зависимости, шаблоном репозитория и ORM. Гибкость.
  • Минимизированная сложность и зависимости от других слоев. (высшие слои заботятся только о POCO, POCO ни о чем не заботятся). Слабое сцепление
  • Простая тестируемость (для проверки домена не требуется заглушки).

Надеюсь, это поможет.

3 голосов
/ 03 августа 2010

Вам необходимо предоставить более подробную информацию, например, контекст, в котором вы планируете использовать POCO. Но основная идея заключается в том, что вы будете создавать простые объекты, содержащие только те данные / код, которые необходимы. Эти объекты не содержат никакого «багажа», такого как аннотации, дополнительные методы, базовые классы и т. Д., Которые в противном случае могли бы потребоваться (например) каркасом.

0 голосов
/ 03 августа 2010

Пример POCO:

class Person {

    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }

}
...