LINQ-to-SQL και αρχιτεκτονική ASP.NET εφαρμογών

Εκτός και αν πρόκειται για sample, prototype ή throw-away project τότε η αρχιτεκτονική μιας ASP.NET εφαρμογής είναι αυτή που φαίνεται στο παρακάτω σχήμα.

aspnet design architecture

Τα επίπεδα (layers) μπορούν να διαμορφωθούν ανάλογα με το μέγεθος της εφαρμογής. Για παράδειγμα, πιθανόν να υπάρχει χωριστό presentation layer (ανάμεσα στα Services και το UI) αρκεί η σχεδίαση να μην αποτελεί overkill για την κλίματα του έργου.

Τα παραπάνω ακούγονται πολύ ωραία και ταιριάζουν με τις επιταγές της DDD μεθοδολογίας αλλά τι γίνεται όταν για το persistence επιλέγεται η LINQ-to-SQL; Στην συγκεκριμένη περίπτωση όχι μόνο έχουμε ένα ORM που λειτουργεί ως Repository αλλά γεννάται το ερώτημα αν πρέπει να εκμεταλλευτούμε το Object Model που παράγεται αυτόματα. Φαίνεται πως οι partial classes μπορούν να λειτουργήσουν και ως Domain Model.

Για παράδειγμα, αν στο DataContext έχουμε το Customer entity, η εφαρμογή business logic κανόνων μπορεί να γίνει γράφοντας:

   1:  public partial class Customer
   2:  {
   3:      partial void OnValidate(ChangeAction action)
   4:      {
   5:          if (action == ChangeAction.Insert)
   6:          {
   7:              if (string.IsNullOrEmpty(LastName))
   8:                  throw new CustomerInvalidException("Το επώνυμο του πελάτη είναι υποχρεωτικό.");
   9:          }
  10:      }
  11:  }
Share


Έχουν δημοσιευτεί Σάββατο, 26 Ιανουαρίου 2013 5:01 μμ από το μέλος dpant
Καταχώρηση στις κατηγορίες: , , ,

Σχόλια:

 

Khayro έγραψε:

Alright arlgiht alright that's exactly what I needed!

Μαρτίου 2, 2013 8:37 πμ