Στην ανάπτυξη εφαρμογών, ιδιαίτερα με C# και ASP.NET, συχνά βλέπουμε δύο βασικούς τύπους αντικειμένων: Entities και DTOs. Είναι σημαντικό να καταλάβουμε τη διαφορά τους, τον σκοπό τους και πότε χρησιμοποιούνται.
1️⃣ Τι είναι τα Entities
Entities είναι οι αντικειμενοστραφείς αναπαραστάσεις των δεδομένων σας, συνήθως αντιστοιχούν σε πίνακες της βάσης δεδομένων.
Χαρακτηριστικά:
Περιέχουν όλη τη δομή της βάσης και τις σχέσεις μεταξύ πινάκων.
Χρησιμοποιούνται από ORMs όπως το Entity Framework.
Συνήθως δεν περιορίζουν ποια πεδία εκτίθενται στους clients.
Παράδειγμα C#:
public class Employee
{
public int Id { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public decimal Salary { get; set; }
}
Αυτό το αντικείμενο αντιπροσωπεύει μια γραμμή στον πίνακα Employees.
2️⃣ Τι είναι τα DTOs (Data Transfer Objects)
DTOs είναι απλά αντικείμενα που μεταφέρουν δεδομένα μεταξύ layers (π.χ. από server σε client).
Χαρακτηριστικά:
Δεν περιέχουν λογική – μόνο δεδομένα.
Περιέχουν μόνο τα πεδία που χρειάζονται για την επικοινωνία.
Αποφεύγουν να εκθέτουν ευαίσθητα δεδομένα.
Παράδειγμα C#:
public class EmployeeDto
{
public string FullName { get; set; }
public string Email { get; set; }
}
Προσοχή: δεν περιέχει το Salary ή το Id αν δεν χρειάζεται να σταλούν στον client.
3️⃣ Διαφορές Entities vs DTOs Χαρακτηριστικό Entity DTO
Σκοπός Αντιπροσωπεύει πίνακα βάσης Μεταφορά δεδομένων μεταξύ layers
Περιεχόμενο Όλα τα πεδία + σχέσεις Μόνο τα απαραίτητα πεδία
Λογική Μπορεί να έχει business logic Δεν έχει λογική
Χρήση ORM / database API / View / Service Layer
Ασφάλεια Μπορεί να περιέχει ευαίσθητα Φιλτράρει ευαίσθητα δεδομένα
4️⃣ Παράδειγμα χρήσης Entity:
public class Employee
{
public int Id { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public decimal Salary { get; set; }
}
**DTO για API:**
public class EmployeeDto
{
public string FullName { get; set; }
public string Email { get; set; }
}
Mapping (C#):
Employee employee = new Employee
{
Id = 1,
FullName = "John Doe",
Email = "john@example.com",
Salary = 5000
};
// Μετατροπή σε DTO
EmployeeDto dto = new EmployeeDto
{
FullName = employee.FullName,
Email = employee.Email
};
5️⃣ Πλεονεκτήματα της χρήσης DTOs
Ασφάλεια: δεν εκθέτουμε ευαίσθητα πεδία όπως μισθούς ή κωδικούς.
Αποδοτικότητα: στέλνουμε μόνο τα δεδομένα που χρειάζονται, μειώνοντας bandwidth.
Αποσύνδεση layers: η δομή της βάσης μπορεί να αλλάξει χωρίς να επηρεάζονται οι clients.
6️⃣ Συμπέρασμα
Entities: για διαχείριση δεδομένων και ORM, περιέχουν όλη τη δομή της βάσης.
DTOs: για μεταφορά δεδομένων ανάμεσα σε layers ή προς τον client, περιορίζοντας τα δεδομένα στα απολύτως απαραίτητα.
💡 Καλή πρακτική: πάντα να χρησιμοποιείτε DTOs για API responses, ακόμα κι αν η Entity περιέχει όλα τα δεδομένα, ώστε να διατηρείτε ασφάλεια και ευελιξία.
Top comments (0)