Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

Architecturing asp.net

Vorrei elencare un paio di cose che ho implementato nel progetto asp.net corrente e magari poter confrontare questa architettura con altre...per la serie non si finisce mai di imparare :)

1) generazione custom entities con CodeSmith
      - genero le classi per ogni tabella, a parte le tabelle di relazione m-n

2) generazione stored procedure e viste logiche con CodeSmith
      - genero le stored procedure di insert/update/delete per ogni custom entities
      - genero la vista select base (con associate join alle tabelle in relazione) per ogni custom entities

3) utilizzo degli Attributes di .net per mappature delle custom entities
      - ogni proprietà pubblica delle custom entities corrisponde ad un campo della tabella corrispondente
      - per ogni custom entitiy mappo stored procedure e vista di select base

4) Data Access Layer
      - abstract factory pattern per consentire provider dati diversi
      - utilizzo Reflection per gestire in automatico i metodi insert/update/delete
      - utilizzo Reflection per caricare in automatico l'entità singola e l'entità collection
      - non utilizzo Enterprise Library per accesso a sql server, ma una classe helper leggermente modificata rispetto 
        a quella del data access application block 2.0
      - gestisce in automatico ordinamento e paginazione
      - attraverso un attributo specifico per ogni metodo la query che deve essere eseguita.

5) Domain Layer
      - classi specializzate per ciascuna entità o gruppi di entità dello stesso dominio che si interfacciano direttamente
         con il DAL.
      - comunicazione con il DAL e con l'UI sempre tramite le custom entities.
      - i metodi eseguono le validazioni "di business"

6) UI
      - sistema tipo master page per le pagine aspx.
      - sistema a template(web part) per gli ascx
      - implementazione GridView e gestione theme sulla gridview(il tema è un file xml che viene tradotto in codice 
        compilato a runtime ed utilizzato sovrascriverne gli attributi.Preso spunto da articolo di Dino Esposito su msdn)
      - sicurezza gestita forms authentication e tramite asp.net roles e da codice
      - crypting querystring
      

I benefici di questa architettura dovrebbero essere almeno questi:

- ho già pronte stored e viste perfette per una buona percentuale dei casi
- non devo quasi mai scrivere codice diretto per la lettura o scrittura dei dati su sql server
- non devo preoccuparmi di gestire paginazione e ordinamento, è sufficiente passare i parametri di paginazione e ordinamento ai metodi del Domain Layer che a sua volta li gira al DAL che in automatico li gestisce.
- se cambia la struttura, rigenero le custom entities, le viste e le stored procedure base

Per quanto riguarda le performance, l'unico collo di bottiglia è reflection quando deve valorizzare le custom entities dalle query sql.

Vedremo con il proseguio del progetto se avremo i benefici prospettati, di più o di meno di quanto previsto.

Speriamo di più :)

 

 

 


Feedback

# re: Architecturing asp.net

Gravatar l'articolo di Dino lo trovi qui:

http://msdn.microsoft.com/msdnmag/issues/04/05/CuttingEdge/default.aspx

saluti 15/05/2005 16:25 | Roberto messora

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri