Plain old CLR object
Van Wikipedia, de gratis encyclopedie
Ein Plain Old CLR Object (wörtlich: einfaches altes CLR Objekt) oder ein Plain Old Class Object (zu wörtlich: einfaches altes Klassen-Objekt) – kurz: POCO – ist in der Programmierung ein einfaches Objekt, das in der .NET-Common Language Runtime (CLR) erstellt wurde und nicht durch Vererbung oder Attribute belastet ist. Dies wird häufig im Gegensatz zu den komplexen oder spezialisierten Objekten verwendet, die objektrelationale Abbildungs-Frameworks häufig benötigen[1]. Im Wesentlichen ist ein POCO nicht von einem externen Framework abhängig.
Etymologie
[Bearbeiten | Quelltext bearbeiten]Plain Old CLR Object[1] ist ein Kunstbegriff, welcher von plain old Java object aus der Jakarta-EE-Programmierwelt abgeleitet und durch Martin Fowler im Jahr 2000 geprägt wurde. POCO wird häufig in Verbindung mit C#-Objekten verwendet, obwohl POCO-Klassen/-Objekte auch mit anderen Programmiersprachen erstellt werden können. Ein anderes alternatives Akronym dafür ist Plain Old .NET Object.
Vorteile
[Bearbeiten | Quelltext bearbeiten]Einige Vorteile von POCOs sind:
- ermöglicht einen einfachen Speichermechanismus für Daten und vereinfacht die Serialisierung und das Weiterleiten von Daten durch Schichten
- geht Hand in Hand mit Dependency Injection und die Repository Entwurfsmuster (OOP)
- Minimierte Komplexität und Abhängigkeiten von anderen Schichten (höhere Schichten kümmern sich nur um die POCOs, POCOs kümmern sich um Nichts), was eine lose Kopplung erleichtert
- erhöht die Testbarkeit durch Vereinfachung
Beispiel
[Bearbeiten | Quelltext bearbeiten]// Diese Klasse ist keine POCO Klasse! public class Person : IDisposable { private static readonly ILogger Logger = LoggerFactory.Create(typeof(Person)); public Person() {} public Person(int id, string firstName, string lastName, DateTime birthDate) { Id = id; FirstName = firstName; LastName = lastName; BirthDate = birthDate; } [Category("Data")] public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime BirthDate { get; set; } public string GetName() { return $"{FirstName} {LastName}"; } public override string ToString() => $"Id:{Id}, FirstName:{FirstName}, LastName:{LastName}, BirthDate:{BirthDate}"; public void Dispose() {/* Code...*/} } // Diese Klasse ist eine POCO Klasse. public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime BirthDate { get; set; } }
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ a b HongGit: POCO-Unterstützung - WCF. Abgerufen am 16. März 2021 (deutsch).