Meine (nicht standardmäßigen) Laiendefinitionen
POCO
- Einfaches altes% Insert_Your_Language% -Objekt. Ein Typ ohne Logik. Es werden nur Daten im Speicher gespeichert. Normalerweise werden darin nur automatische Eigenschaften angezeigt, manchmal Felder und Konstruktoren.
Domain object
Eine Instanz einer Klasse, die sich auf Ihre Domain bezieht. Ich würde wahrscheinlich Satelliten- oder Dienstprogrammobjekte vom Domänenobjekt ausschließen, z. B. enthalten Domänenobjekte in den meisten Fällen keine Elemente wie Protokollierung, Formatierung, Serialisierung, Verschlüsselung usw. - es sei denn, Sie erstellen speziell ein Produkt zum Protokollieren, Serialisieren, Formatieren oder Verschlüsseln .
Model object
Ich denke ist das gleiche wie Domain object
. Leute neigen dazu, dies austauschbar zu verwenden (ich kann mich irren)
Entity
eine Klasse, die hat id
Repository
Eine Klasse, die von einer Seite mit einem Datenspeicher (z. B. einer Datenbank, einem Datendienst oder ORM) und mit dem Dienst, der Benutzeroberfläche, der Geschäftsschicht oder einem anderen anfragenden Körper spricht. Es verbirgt normalerweise alle datenbezogenen Dinge (wie Replikation, Verbindungspooling, Schlüsselbeschränkungen, Transaktionen usw.) und macht es einfach, nur mit Daten zu arbeiten
Service
Software, die einige Funktionen normalerweise über die öffentliche API bereitstellt. Abhängig von der Ebene kann es sich beispielsweise um einen in sich geschlossenen RESTful-Container oder eine Klasse handeln, mit der Sie eine bestimmte Instanz des erforderlichen Typs finden können.
Ursprüngliche Antwort
Dies sind Begriffe , die hauptsächlich im (verteilten) domänengesteuerten Design verwendet werden. Sie sind nicht gleich. Der Begriff Modellobjekt kann als Synonym für das Domänenobjekt verwendet werden .
Domänenobjekte. Objekte aus dem geschäftsspezifischen Bereich, die für den Domain-Experten von Bedeutung sind. Domänenobjekte werden meist durch Entitäten und Wertobjekte dargestellt. Im Allgemeinen tragen die meisten Objekte, die in der Domänenschicht leben, zum Modell bei und sind Domänenobjekte.
Entität. Ein Objekt, das grundsätzlich nicht durch seine Attribute definiert ist, sondern durch einen Faden der Kontinuität und Identität. (Das heißt, es muss einen Ausweis haben )
POCO. Ein einfaches Objekt ohne komplizierte Logik, normalerweise hat es nur wenige Eigenschaften und wird mit ORM oder als Datenübertragungsobjekt verwendet
class Person
- Entität und POCO, Instanz dieser Klasse ist Domain Object
class PersonService
- Service
class PersonRepository
- Repository
Es ist eher eine Konnotation der Funktion; Ein Domänenobjekt ist spezifisch für Ihre Logikimplementierung und möglicherweise komplexer als ein einfaches POCO. Eine Entität hat eine Konnotation, um etwas darzustellen (normalerweise in Bezug auf ein Persistenzmedium), und ein POCO ist nur eine schnelle Kennung für eine Klasse. Ein Modell ist nur ein Begriff, der zur Darstellung eines Objekts verwendet wird (normalerweise mit Status und normalerweise mit der Benutzeroberfläche oder der Datenbank).
Es ist nicht so, dass es einen funktionalen Unterschied gibt, es sind nur verschiedene Begriffe, um etwas genauer zu beschreiben. Wie der Unterschied zwischen Rennwagen, LKW und Familienlimousine. Alle sind Automobile, aber jeder Begriff ist aussagekräftiger.
quelle
Im Grunde kommt es auf die interne Logik an
Sie werden alle im Grunde genommen für dasselbe verwendet, es ist nur so schlau, wie Sie sie haben wollen
gemäß Ihrem Codebeispiel Die Person-Klasse wäre ein Domänenobjekt oder ein Modell, die anderen 2 sind ein Dienst und ein Repository. Domänenobjekte, Pocos, Modelle, Dtos usw. werden wie Nachrichten verwendet, die von einer Schicht zur nächsten übergeben werden. Eine Serviceklasse wie PersonService ist eine Schicht in der Anwendung und dieselbe wie die Repository-Klasse wie PersonRepository. Eine gute Übersicht finden Sie unter http://bob-the-janitor.blogspot.com/2009/07/n-tier-design-revisit-part-1-over-view.html. In diesem Fall geht es um die Verwendung eine Datenentität, die im Grunde ein dto ist
quelle
In den obigen Antworten gibt es bereits gute Erklärungen zu Domäne und Modell.
In einem Datenbankkontext bedeutet Entität Element in einem Entitätsbeziehungsmodell ERD . (dh eine Zeile in einer Tabelle)
In der Microsoft-Dotnet-EntityFramework-World- Entität bedeutet ein Objekt, das mithilfe eines Datenkontexts ( Basiskontexts) aus einer Datenbank geladen und in einer Datenbank gespeichert werden kann. Normalerweise kann eine Entität ohne ihren Datenkontext (Basiskontext) nicht existieren. (Unit-) Das Testen der Geschäftsfunktionalität dieser Klassen ist schwierig.
Pocos (einfache alte CommonRuntime-Objekte) können ohne PersistenceFramework (EntityFramework oder NHibernate) existieren und sind daher viel einfacher zu testen.
Das Wort poco ist die Adaption von pojo (einfaches altes Java-Objekt) , die aus demselben Grund in der Java-Welt geschaffen wurden.
quelle
Ein Domänenobjekt ist eine Entität in der Domänenschicht Ihrer Anwendung, z. eine Adressklasse. "Modell" bedeutet dasselbe - eine Entität im "Domänenmodell".
Ein POCO (einfaches altes CLR-Objekt) ist ein Objekt, für das kein Verhalten (Methoden) definiert ist und das nur Daten (Eigenschaften) enthält. POCOs werden im Allgemeinen als DTOs (Datentransportobjekte) verwendet, um Daten zwischen Schichten zu übertragen, und die Daten werden dann üblicherweise verwendet, um ein Domänenobjekt / eine Domänenentität zu füllen.
quelle