POCO的解释

时间:2010-08-02 23:37:04

标签: poco

我想知道是否有人可以给出POCO(普通旧CLR对象)的可靠解释(例子)。我发现了一个brief explanation on Wikipedia,但它确实没有给出可靠的解释。

3 个答案:

答案 0 :(得分:45)

我更愿意将它们称为持久性无知对象,而不是将它们称为 POCO

因为他们的工作很简单,所以他们不需要关心他们的用途或使用方式。

就我个人而言,我认为POCO只是另一个流行语(如Web 2.0 - 不要让我开始),因为它具有简单属性的公共类。

我一直在使用这些类型的对象来保持业务状态。

当你开始使用存储库模式,ORM和依赖注入等事情时,真正看到POCO的主要好处。

换句话说 - 您可以创建一个ORM(比如说EF)从某处(db,web服务等)中提取数据,然后 project 这些数据进入物体(POCO)。

这些对象可以在应用程序堆栈中向下传递到服务层,然后传递到Web层。

然后,如果有一天你决定切换到nHibernate,你根本不需要触摸你的POCO,唯一需要改变的是ORM。

因此,术语“持久性无知” - 他们并不关心它们的用途或使用方式。

总而言之,专业人士:

  • 允许数据的简单存储机制,简化序列化/遍历层
  • 与依赖注入,存储库模式和ORM齐头并进。灵活性。
  • 最大限度地降低了其他图层的复杂性和依赖性。 (更高层只关心POCO,POCO不关心任何事情)。松耦合
  • 简单的可测试性(域测试不需要存根)。

希望有所帮助。

答案 1 :(得分:3)

您需要提供更多详细信息,例如您计划使用POCO的上下文。但基本思想是,您将创建仅包含必要数据/代码的简单对象。这些对象不包含任何“行李”,例如注释,额外方法,基类等,否则可能需要(例如)框架。

答案 2 :(得分:-2)

POCO的例子:

class Person {

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

}