Мне интересно, сможет ли кто-нибудь дать подробное объяснение (пример) POCO (Plain Old CLR Object). Я нашел краткое объяснение в Википедии, но это действительно не дает убедительного объяснения.
Я ищу плюсы/минусы, реализацию, пособие и т.д.
Мне интересно, сможет ли кто-нибудь дать подробное объяснение (пример) POCO (Plain Old CLR Object). Я нашел краткое объяснение в Википедии, но это действительно не дает убедительного объяснения.
Я ищу плюсы/минусы, реализацию, пособие и т.д.
Вместо того, чтобы называть их POCO, я предпочитаю называть их персистенцией неосведомленных объектов.
Поскольку их работа проста, им не нужно заботиться о том, для чего они используются или как они используются.
Лично я думаю, что POCO - это еще одно модное слово (например, Web 2.0 - не заставляйте меня начинать с этого) для открытого класса с простыми свойствами.
Я всегда использовал этот тип объектов для хранения в бизнес-состоянии.
Основное преимущество POCO действительно наблюдается, когда вы начинаете использовать такие вещи, как шаблон репозитория, ORM и инъекции зависимостей.
Другими словами, вы можете создать ORM (пусть говорят EF), который отвлекает данные откуда-то (db, веб-сервис и т.д.), а затем проектировать эти данные в объекты (POCO).
Эти объекты могут быть переданы далее в стек приложения на сервисный уровень, а затем на веб-уровень.
Затем, если в один прекрасный день вы решите переключиться на nHibernate, вам не придется касаться вашего POCO вообще, единственное, что нужно изменить, это ORM.
Следовательно, термин "упорство невежественное" - им все равно, для чего они используются или как они используются.
Итак, чтобы подвести итог, pro's:
Надеюсь, что это поможет.
Вам нужно предоставить более подробную информацию, например контекст, в котором вы планируете использовать POCO. Но основная идея заключается в том, что вы создадите простые объекты, содержащие только необходимые данные/код. Эти объекты не будут содержать "багаж", такой как аннотации, дополнительные методы, базовые классы и т.д., Которые в противном случае могли бы потребоваться (например) для фреймворка.
Пример POCO:
class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
}