2008-10-30 11 views
203

Kann jemand definieren, was genau 'POCO' bedeutet? Ich stoße immer öfter auf den Begriff, und ich frage mich, ob es nur um einfache Klassen geht oder ob es etwas mehr bedeutet?'POCO' Definition

+18

Es ist auch lustig, dass "Poco" ist ein spanisches Wort bedeutet "wenig, nicht viel". Es passt also gut in diesen Kontext! http://en.wiktionary.org/wiki/poco –

+3

Es bedeutet genau dasselbe auch auf Italienisch :) – BlackBear

+2

Und auf Portugiesisch bedeutet ein Fehler, weil es geschrieben wird: "pouco". – Ismael

Antwort

172

„Plain Old C# Objekt“

Nur eine normale Klasse, keine Attribute beschreiben Infrastruktur Bedenken oder andere Aufgaben, die Ihre Domain-Objekte haben, sollten nicht.

EDIT - wie andere Antworten gesagt haben, ist es technisch "Plain Old CLR Objekt", aber ich, wie David Arno kommentiert, bevorzugen "Plain Old Class Object", um Verbindungen zu bestimmten Sprachen oder Technologien zu vermeiden.

ZU CLARIFY: Mit anderen Worten, sie stammen nicht von einige spezielle Basisklasse, noch geben sie spezielle Typen für ihre Eigenschaften zurück.

+14

Ich würde eine POCO als eine einfache alte Klasse, die nicht versucht, ein Teil des trendigen Muster-Set zu sein. Aber ich mag deine Antwort auch. –

+0

Einverstanden - kein Fan des C# -Namens, aber das war was ich zuerst hörte, als ich mich über die Frage wunderte :) Klasse passt dann POJO, POVBO POC# O, POC++ O, PORO usw. –

+12

Dies tut nicht Ich gebe wirklich eine gute Antwort in meiner persönlichen Meinung als jemand auch neugierig. Ok, also keine Attribute, die Infrastruktur beschreiben (was meinst du mit Attributen und Infrastruktur ... eine DB-Verbindung zum Beispiel? Was? Beispiel bitte). Welche Verantwortlichkeiten sollten Ihre Domain-Objekte nicht haben? Also ist POCO grundsätzlich ein Domain-Objekt (BL-Objekt)? Also wirklich POCO ist nur ein weiteres Akronym für ein Business-Layer-Objekt/Domain-Objekt, die alle das gleiche verdammte Ding bedeuten. POCO/Business-Layer-Objekt/Domain-Objekt == das gleiche verdammte Ding, nur 3 verschiedene Akronyme für das gleiche Konzept, oder? – PositiveGuy

5

In Java Land typisch "PO" bedeutet "einfach alt". Der Rest kann knifflig sein, also nehme ich an, dass Ihr Beispiel (im Kontext von Java) "einfaches altes Klassenobjekt" ist.

einige andere Beispiele

  • POJO (Plain Old Java-Objekt)
  • POJI (plain old Java-Schnittstelle)
12

POCO für "Plain Old CLR-Objekt" steht.

+20

ooooook? Was bedeutet das im Kontext oder in der realen Welt? – PositiveGuy

+20

Und wie meine High-School-Strom Lehrer würde sagen, "... und Orangen schmecken orange" –

+5

Richtig, aber dieser Beitrag sieht eher aus wie ein Kommentar, anstatt eine Antwort, da es die Frage nicht vollständig beantwortet. –

6

Um die anderen Antworten hinzuzufügen, scheinen die POxx-Begriffe alle von POTS zu stammen (Plain old telephone services).

Die POX, die verwendet wird, um einfaches (einfaches altes) XML zu definieren, anstatt das komplexe vielschichtige Zeug, das mit REST, SOAP usw. verbunden ist, war ein nützlicher und vage amüsanter Ausdruck. PO (Sprache der Wahl einfügen) O Begriffe haben den Witz eher dünn getragen.

42

Die meisten Leute haben gesagt, es - Plain Old CLR-Objekt (im Gegensatz zu dem früheren POJO Gegensatz - Plain Old Java Object)

Die POJO einer von EJB kamen, die man benötigte, um von einer bestimmten übergeordneten Klasse erbt für Dinge wie Wertobjekte (was man von einer Abfrage in einem ORM oder ähnlichem erhält), also wenn Sie jemals von EJB (zB zu Spring) wechseln wollten, waren Sie vollgestopft.

POJOs sind nur Klassen, die keine Vererbung oder Attributzuweisung erzwingen, damit sie in dem von Ihnen verwendeten Framework "funktionieren".

POCOs sind die gleichen, außer in .NET.

Im Allgemeinen wird es um ORM verwendet - ältere (und einige aktuelle) erfordern, dass Sie von einer bestimmten Basisklasse erben, die Sie mit diesem Produkt verbindet. Neuere nicht (nhibernate ist die Variante, die ich kenne) - Sie machen nur einen Kurs, registrieren Sie es mit dem ORM, und Sie sind aus. Viel einfacher.

+1

nur der Vollständigkeit halber, CLR-Standard für Common Language Runtime - die virtuelle Maschine .net. – philant

+0

+1 für die Erwähnung seiner (üblichen) Beziehung zu ORMs – Lucas

+3

. NET 3.5 SP1 ORM Beispiel: das Entity-Framework erfordert, dass Klassen von einer bestimmten Framework-Klasse erben. LINQ to SQL hat diese Anforderung nicht. Daher arbeitet LINQ to SQL mit POCOs und das Entity-Framework nicht. – Lucas

3

Interessant. Das einzige, was ich wusste, dass das mit Programmierung zu tun hatte und hatte POCO darin ist die POCO C++ framework.

4

In WPF MVVM Hinsicht ist eine POCO-Klasse ein, die nicht Property Ereignisse

6

In .NET ist Feuer ein POCO ist ein 'Plain altes CLR Objekt'. Es ist kein "Plain old C# object" ...

7

ich das falsch sein .. kann aber sowieso, ich denke, POCO Plain Old Klasse CLR-Objekt ist und es kommt von POJO Plain Old Java Object. Ein POCO ist eine Klasse, die Daten enthält und kein Verhalten aufweist. Hier

ist ein Beispiel in C# geschrieben:

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; 
    } 

} 
0

Während ich bin mir sicher, POCO bedeutet Plain Old Klassenobjekt oder Plain Old C Objekt zu 99,9% der Menschen hier, POCO ist auch Animator Pro (Autodesk) in Skriptsprache gebaut.