I want to enforce that the domain is the core, the centerpiece, the kernel as you may of my application. I don’t want it to have any dependencies to other assemblies in my application, especially not the infrastructure assembly. This means that my domain assembly can only have a reference to the .NET framework assemblies and nothing else.
if domain objects are only made of primitive types, we could call PONO : Plain Old .NET Object in reference to Java POJO orPOCO, Plain Old CLR Object. Such convention garantees that domain object are re-usable across layers and potentially increase performance since all these primitive types are CLR-optimized
so in other meaning we can Just say it is a normal class, no attributes describing infrastructure concerns or other responsibilities that your domain objects shouldn't have. POJO's (for java) are just classes which dont force inheritance or any attribute markup to make them "work" in whatever framework you are using.
POCO's are the same, except in .NET.
for example, .Net 3.5 sp1 ORM example: the Entity framework requires that classes inherit from a certain framework class. LINQ to SQL does not have this requirement. Therefore LINQ to SQL works with POCOs and the Entity framework does not
PONO (plain old .net object) is equivalent to POCO (plain old CLR object)
References
http://codebetter.com/blogs/patricksmacchia/archive/2008/06/30/simple-core-domain-types-and-plain-old-net-objects.aspx
