POCO的解释

Cha*_*ell 23 poco

我想知道是否有人能给出POCO(普通旧CLR对象)的可靠解释(例子).我在维基百科上找到了一个简短的解释,但它确实没有给出可靠的解释.

RPM*_*984 46

我没有把它们称为POCO,而是把它们称为持久性无知对象.

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

我个人认为波苏斯只是又一个流行词(如Web 2.0 - 不要让我开始对)与简单性的公共类.

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

当你开始使用诸如存储库模式,ORM和依赖注入之类的东西时,真正看到了POCO的主要好处.

换句话说 - 您可以创建一个ORM(假设为EF)从某个地方(db,Web服务等)提取数据,然后将这些数据投影到对象(PO​​CO)中.

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

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

因此,术语"持久性无知" - 他们并不关心它们被用于什么或如何被使用.

总结一下,专业人士:

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

希望有所帮助.

  • 这很有道理.我喜欢你使用短语"buzz word".好像我已经在我的项目中使用它了.我正在使用的是使用L2S(基本上是数据库中10个字段中的4个)拉出"一些"用户数据并将它们存储在一个非常基本的"POCO"对象中.然后我序列化该对象并将其存储为ASP.NET Auth Cookie中的`UserData`对象.这样我以后可以在不再次访问数据库的情况下检索它. (2认同)