2009-11-06 13 views
18

Stiamo creando un'applicazione ASP.NET e vorremmo seguire le migliori pratiche. Alcune delle migliori pratiche sono:Creazione dell'applicazione ASP.NET - Best practice


codice lato server:

  • blocchi Utilizzo di cattura per gli errori di basso livello trappola & registro troppo.
  • Utilizzare gli oggetti Cache per popolare i menu a discesa ecc. Dove non ci si aspetteranno le modifiche nel database/dati sottostante.
  • In caso di struttura di registrazione degli errori, fornire avvisi via e-mail e registrare gli errori.

codice HTML: - Non scrivere CSS in linea. - Inserire il codice JavaScript (se necessario dalla pagina) alla fine della pagina a meno che la pagina non ne abbia bisogno per le azioni del tempo di caricamento.


Ora venendo al punto, La prego quindi di condividere questi punti migliori di pratica se si dispone di un elenco completo di loro già?

+8

Questa è una domanda * davvero * ampia. –

+1

Ampio ma utile e buono. –

+4

Questo dovrebbe essere contrassegnato come wiki della comunità. – mattruma

risposta

4

Non penso che i blocchi try/catch siano sempre appropriati per i metodi di basso livello. Vuoi cogliere (e registrare/avvisare, ancora meglio!) Eventuali errori prima che arrivino all'utente, ovviamente. Ma spesso è meglio per un metodo di basso livello semplicemente lasciare che i suoi errori vengano innalzati a un livello più alto. Il problema che ho riscontrato con il trapping di errori di basso livello è che spesso consente di continuare un'operazione più ampia, ma un risultato non corretto viene presentato all'utente o salvato nel database e, a lungo termine, è molto più difficile aggiustare. È anche solo un sacco di clutter extra nel codice per mettere un try/catch ad ogni livello se non hai intenzione di "fare nulla" con l'errore finché non viene innalzato ad un livello più alto.

19
  1. creare una pagina di base per tutte le vostre pagine ASP.NET. Questa pagina deriva da System.Web.UI.Page e puoi inserirla in YourApp.Web.UI. Lascia che tutte le tue pagine asp.net dervice dalla classe YourApp.Web.UI.Page. Questo può ridurre molto dolore.

  2. Utilizzare il gestore Application_OnError per gestire con garbo qualsiasi errore o eccezione. È necessario registrare l'eccezione critica e inviare i dettagli dell'eccezione insieme a data-ora e IP del client all'ID e-mail dell'amministratore. Sì ELMAH è sicuramente il modo di andare.

  3. Utilizzare temi ASP.NET. Molti sviluppatori non lo usano. Usali - sono un grande affare.

  4. Utilizzare MembershipProvider e RoleProvider.E Non utilizzare mai ProfileProvider incorporato - Memorizzano tutto in stringhe semplici. Sarà drasticamente rallentamento delle prestazioni durante l'esecuzione di R/W

  5. Uso Firebug per il debugging lato client. Cerca di seguire gli standard YSlow per le applicazioni web. Utilizza l'estensione YSlow per FireBug.

  6. Utilizzare jQuery per client-scripting.

  7. Non memorizzare mai le informazioni di autenticazione utente nella sessione o non utilizzare le sessioni per giudicare se l'utente è connesso. Archivia solo le informazioni minime necessarie nelle sessioni.

  8. Dai un'occhiata a PostSharp. Può migliorare la manutenibilità del tuo codice e renderti più produttivo.

  9. Mai e poi mai Distribuire l'applicazione asp.net con la configurazione di debug in produzione. Scopri here che cosa scottgu ha da dire su questo.

  10. Utente Web Deployment projects. Può trasformare le sezioni web.config e sostituirle con le impostazioni del server di produzione. Unirà tutte le classi code-behind compilate in un unico assembly che è un grande affare.

  11. Usa cookie-less domini per servire risorse statiche come immagini, script, stili ecc Ogni richiesta del cliente viene inviata insieme a tutta una serie di cookie, non è necessario cookie mentre serve immagini o script. Quindi ospita queste risorse su un dominio senza cookie.

  12. Minimizza script, fogli di stile e risposta HTML dal server. La rimozione di interruzioni di riga e spazi bianchi non necessari può migliorare l'ottimizzazione del tempo di caricamento e dell'ampiezza di banda.

+0

Modificare l'elemento 2 in ELMAH. – Zote

+0

@curious_geek +1 per Firebug. Impossibile programmare senza di esso (né di Resharper) –

25

Alcuni dei migliori pratiche che ho imparato nel corso del tempo e scritto per l'utilizzo presso la mia azienda ... molti sono principalmente applicabile per WebForms e non MVC.

  • Non scrivere codice .NET direttamente in vostro codice ASPX (a meno che non lo è per l'associazione dati, vale a dire Evals). Se hai un codice, questo mette il codice per una pagina in più di un posto e rende il codice meno gestibile. Metti il ​​codice nel tuo codice code.
  • SessionPageStatePersister può essere utilizzato insieme a ViewState per rendere ViewState utile senza dimensioni di pagina crescenti. Ignorando PageStatePersister della pagina con un nuovo SessionPageStatePersister si memorizzerà tutti i dati ViewState in memoria, e memorizzerà solo una chiave codificata sul lato client.
  • Creare una BasePage che le pagine possano ereditare per poter utilizzare riutilizzare il codice comune tra le pagine. Creare una pagina master per le pagine per l'ereditarietà visiva. Le pagine con stili visivi molto diversi dovrebbero utilizzare una diversa MasterPage.
  • Creare un enum dei nomi dei parametri dei parametri di pagina su ciascun WebForm passati tramite l'URL, ai parametri di pagina fortemente tipizzati per l'installazione di . Ciò evita la necessità di stringhe chiave dei parametri di pagina codificate e la loro errata digitazione , nonché consentendo l'accesso con parametro fortemente codificato da altre pagine.
  • Utilizzare la cache ASP.NET per archiviare le informazioni utilizzate frequentemente da dal database. Creazione (o riutilizzo da un altro progetto) un livello di memorizzazione nella cache generico che sostituirà nella cache di ASP.NET.
  • Riavvolgere gli oggetti ViewState con Proprietà nelle pagine per evitare errori di sviluppo di ortografia, ortografia, ecc. Quando si fa riferimento a elementi della raccolta ViewState .
  • Evitare di inserire oggetti grandi e grafici di oggetti in ViewState, usarlo principalmente per la memorizzazione di ID o oggetti DTO molto semplici.
  • Avvolgere la sessione ASP.NET con un SessionManager per evitare errori di sviluppo nell'ortografia, ecc. Quando fa riferimento a elementi dalla Sessione.
  • fare ampio uso delle ApplicationSettings chiave/valore valori di configurazione nel web.config - avvolgono i Configuration.ApplicationSettings con una classe che può essere utilizzata per facilmente recuperare la configurazione impostazioni senza dover ricordare le chiavi da web.config.
  • Evita la facilità di impostazione delle proprietà di visualizzazione sui controlli dell'interfaccia utente , invece utilizza gli stili CSS e le classi - questo renderà i tuoi stili più gestibili.
  • Creare UserControls nell'applicazione per riutilizzare la funzionalità dell'interfaccia utente comune nelle pagine . Ad esempio, se un elenco a discesa contenente una raccolta di categorie verrà utilizzato in molti posti nel sito, creare un controllo CategoriaPicker che eseguirà il binding dei dati quando la pagina viene caricata.
  • Usano Proprietà sulle tue controlli utente a cose di impostazione come valori di default, diversi display tra le pagine, ecc Tipo di valore proprietà possono essere definite sui vostri UserControls e poi essere impostato nel markup ASP.NET utilizzando livello di classe proprietà su UserControls.
  • Utilizzare i controlli di convalida ASP.NET per eseguire semplici convalide oppure utilizzare il valore CustomValidator per eseguire convalide complesse .
  • Creare una pagina di gestione degli errori che può essere reindirizzata a quando si verifica un'eccezione non gestita all'interno del proprio sito Web all'interno di .Il reindirizzamento può si verifica tramite l'evento Page_Error in la tua pagina, l'evento Application_Error nel tuo Global.asax, o all'interno di la sezione all'interno di web.config.
  • Quando si lavora con le pagine che utilizzano un dato altamente dinamici guidati visualizzazione, utilizzare il 3rd party (gratuito) di controllo DynamicControlsPlaceholder al semplificare il codice necessario per salvare il stato dei controlli aggiunti dinamicamente tra postback.
1

Vorrei raccomandare un paio di libri se sei interessato a intraprendere un viaggio per diventare uno sviluppatore migliore e più produttivo. Questi libri sono indipendenti dal linguaggio e, come puoi vedere dalle recensioni degli utenti, sono molto utili.

Code Complete 2

Pragmatic Programmer

Se siete alla ricerca di un libro specifico .NET, si può apprezzare il libro seguente:

Microsoft Application Architecture Guide [disponibile online gratuitamente al di fuori del formato di stampa]

7

Moduli:

  1. Set Page.Form.DefaultFocus e Page.Form.DefaultButton per migliorare l'esperienza degli utenti

  2. check Page.IsValid nel gestore pulsante Salva prima di procedere.

Generale:

  1. Capire e implementare le tecniche presenti nell'articolo "TRULY Understanding ViewState"

  2. Usa Page.IsPostBack nei vostri eventi di pagina per fermare l'esecuzione di codice inutilmente.

  3. Utilizzare collegamenti ipertestuali anziché postare e utilizzare Response.Redirect quando possibile.

    a. Comprendere e utilizzare il secondo parametro di Response.Redirect ("Indica se l'esecuzione della pagina corrente deve terminare")

  4. Utilizzare correttamente Page Lifecycle.

  5. Utilizzare Per-Request cache (HttpContext.Items) anziché Cache dove ha senso.

Web.Config:

  1. Distribuisci con <compilation debug="false">

  2. Registrati i controlli al web.config level invece del page level (vale a dire @Register).

Temi:

  1. Quando si utilizza temi, mettere le immagini statiche in tema pure.

    a. Non collegare le immagini direttamente dal tuo markup, ma collegarle a un file skin o css nel tuo tema.

    es: <asp:Image SkinID="MyImage" runat="server" ImageUrl="Images/myImage.gif" />

+0

+1 per raramente (ma estremamente utile) utilizzato 'Context.Items' – Earlz

1

ASP.NET

  • Se non si utilizza lo stato di sessione, non dimenticare di spegnere esso.
  • Utilizzare Server.Transfer anziché Response.Redirect se possibile.
  • Impostare il parametro di scadenza in IIS.
  • Utilizzare GZip per comprimere i file di testo.
  • Utilizzare la convalida lato server e lato client insieme.
  • Utilizzare Url Rewriter o Routing per rendere l'URL amichevole per SEO.

design

  • Scrivi ogni classe e le sue proprietà del file CSS nella stessa linea. (Per ridurre le dimensioni del file)
  • Utilizzare CSS Sprites. (Per diminuire la richiesta)
+0

Upvoted per menzionare Server.Transfer. È davvero trascurato. Il reindirizzamento è un brutto scherzo per aggirare il modello di richiesta nativo del web. – James