¿Alguien puede definir qué significa exactamente 'POCO'? Me encuentro con el término cada vez más a menudo, y me pregunto si se trata solo de clases simples o si significa algo más.
¿Alguien puede definir qué significa exactamente 'POCO'? Me encuentro con el término cada vez más a menudo, y me pregunto si se trata solo de clases simples o si significa algo más.
Respuestas:
"Objeto antiguo simple de C #"
Solo una clase normal, sin atributos que describan problemas de infraestructura u otras responsabilidades que los objetos de su dominio no deberían tener.
EDITAR: como han dicho otras respuestas, técnicamente es "Objeto CLR antiguo simple", pero, como comenta David Arno, prefiero "Objeto antiguo de clase simple" para evitar lazos con lenguajes o tecnologías específicos.
PARA ACLARAR: En otras palabras, no se derivan de alguna clase base especial, ni devuelven ningún tipo especial por sus propiedades.
Vea a continuación un ejemplo de cada uno.
Ejemplo de una POCO:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Ejemplo de algo que no es un POCO:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
El ejemplo anterior hereda de una clase especial para darle un comportamiento adicional, así como también usa un atributo personalizado para cambiar el comportamiento ... las mismas propiedades existen en ambas clases, pero uno ya no es un simple objeto antiguo.
System.Object
es un POCO. Si hereda ExternalFramework.OrmMapperBase
o algo así, ya no es un POCO.
La mayoría de la gente lo ha dicho: Objeto CLR antiguo simple (en oposición al POJO anterior: Objeto Java antiguo simple)
El POJO salió de EJB, que requería que heredara de una clase primaria específica para cosas como objetos de valor (lo que obtienes de una consulta en un ORM o similar), por lo que si alguna vez quisiste pasar de EJB (por ejemplo a Primavera), estabas lleno.
Los POJO son solo clases que no fuerzan la herencia o cualquier marca de atributo para hacerlos "trabajar" en cualquier marco que esté utilizando.
Los POCO son iguales, excepto en .NET.
En general, se usará alrededor de ORM: los más antiguos (y algunos actuales) requieren que herede de una clase base específica, lo que lo vincula a ese producto. Las más nuevas no lo hacen (nhibernate es la variante que conozco): solo haces una clase, la registras en el ORM y estás listo. Más fácil.
Puedo estar equivocado sobre esto ... pero de todos modos, creo que POCO es un objeto CLR de clase antigua simple y proviene de un objeto Java antiguo simple de POJO. Un POCO es una clase que contiene datos y no tiene comportamientos.
Aquí hay un ejemplo escrito en C #:
class Fruit
{
public Fruit() { }
public Fruit(string name, double weight, int quantity)
{
Name = name;
Weight = weight;
Quantity = quantity;
}
public string Name { get; set; }
public double Weight { get; set; }
public int Quantity { get; set; }
public override string ToString()
{
return $"{Name.ToUpper()} ({Weight}oz): {Quantity}";
}
}
POCO significa "Objeto CLR antiguo simple".
Para agregar las otras respuestas, todos los términos POxx parecen provenir de POTS ( servicios telefónicos antiguos ).
El POX, utilizado para definir XML simple (antiguo), en lugar de las complejas cosas de varias capas asociadas con REST, SOAP, etc., fue un término útil y vagamente divertido. PO (inserte el idioma de elección) Los términos O han desgastado bastante la broma.
En la tierra de Java, típicamente "PO" significa "simplemente viejo". El resto puede ser complicado, por lo que supongo que su ejemplo (en el contexto de Java) es "objeto de clase antigua simple".
algunos otros ejemplos
Interesante. Lo único que sabía que tenía que ver con la programación y tenía POCO es el marco POCO C ++ .
En términos MVPM de WPF, una clase POCO es aquella que no dispara eventos PropertyChanged
Si bien estoy seguro de que POCO significa Objeto de clase antigua simple u Objeto C antiguo simple para el 99.9% de las personas aquí, POCO también es Animator Pro (Autodesk) integrado en lenguaje de secuencias de comandos.
POCO es un antiguo objeto CLR simple, que representa el estado y el comportamiento de la aplicación en términos de su dominio del problema. Es una clase pura, sin herencia, sin ningún atributo. Ejemplo:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}