Raccogliamo alcuni suggerimenti per valutare l'uso appropriato di global.asax.Quali sono i pro e i contro dell'uso di Global.asax?
risposta
È semplice da utilizzare se il codice di inizializzazione della sessione e dell'applicazione è molto piccolo e specifico dell'applicazione. L'utilizzo di un HttpModule è più utile se si desidera riutilizzare il codice, ad esempio l'impostazione di regole per la riscrittura degli URL, i reindirizzamenti o l'autenticazione. Un HttpModule può coprire tutto ciò che può fare un file Global.asax. Possono anche essere rimossi e aggiunti facilmente usando il tuo .config.
L'ho usato prima per rilevare errori a livello di applicazione e per fare qualcosa quando scade la sessione di un utente.
Tendo anche a usarlo molto per fornire proprietà statiche che leggono valori da web.config.
Penso che vada bene per cose del genere, anche se non metterei molto più di quello lì dentro.
Global.asax può ereditare dalla propria classe che eredita l'httpapplication. Ti dà più opzioni e mette la maggior parte del codice che potresti avere in una biblioteca di classi.
MODIFICA: la classe HttpApplication (genitore globale.asax) in una libreria di classi separata può anche promuovere la riusabilità. Anche se sono d'accordo sul fatto che l'uso di HttpModules è più adatto per molte attività, ma questo ha ancora molti usi, per uno, un codice più pulito.
Non ho mai utilizzato Global.asax. L'ho usato sempre nel classico ASP, ma questo era dovuto principalmente a determinate configurazioni come le stringhe di connessione al database e così via. La configurazione in .net rende molte di queste cose molto più semplici.
Ma se si desidera implementare eventi a livello di applicazione e di sessione, è qui che è necessario andare.
È un bel posto per prendere l'avvio della sessione e persino richiedere l'avvio. Altri hanno menzionato l'aspetto della gestione degli errori, sebbene si faccia attenzione alle eccezioni generate da thread non-asp.net (ad esempio threadpool o thread personalizzati) poiché ignoreranno il gestore global.asax. Personalmente ne ho sempre uno, lo considero semplicemente parte dell'impianto idraulico.
- Inizializzazione di ASP.NET MVC. :)
- Autenticazione utente personalizzata.
- Iniezione delle dipendenze, come l'estensione dell'HttpApplication Ninject.
Usavo Global.asax per cose come la gestione degli errori, ecc. Tuttavia, da allora ho utilizzato HttpModules per rimpiazzarlo poiché posso copiarlo da un progetto a un altro senza modificare global.asax.
È un drink rigido, fai solo attenzione a non bere troppo e starai bene.
Lo utilizzo per la gestione globale degli errori e la configurazione di percorsi in mvc. Tuttavia, non si vuole scrivere codice globale page_init.
Se vi attenete agli eventi a livello di applicazione e fate in modo che la maggior parte della logica viva effettivamente nelle classi appena richiamate durante questi eventi, non avrete alcun problema a utilizzare i costrutti globali.
Con l'utilizzo di Global.asax rispetto a un HttpModule: sarete tentati di scrivere codice che è difficile da riutilizzare perché sarà troppo legato a quella particolare applicazione.
L'evento Session_Start
in Global.asax è un buon posto per inizializzare le variabili di sessione.
- 1. Quali sono i pro e i contro di Anchor Modeling?
- 2. Quali sono i pro e i contro di un TreeSet
- 3. Quali sono i tipi di modelli utilizzati, pro e contro?
- 4. Quali sono i pro e i contro dell'uso di configChanges = "orientation" per i dispositivi Android?
- 5. Quali sono i pro e i contro di asset_packager e Jammit?
- 6. Quali sono i pro e i contro di entrambi Jade e EJS per il modello Node.js?
- 7. Quali sono i pro e i contro dell'uso di un motore di template come Jade?
- 8. WPF - MVVM - Quali sono i pro e i contro delle varie tecniche di creazione di viste?
- 9. Quali sono i pro e i contro dell'input delimitato generale di Ruby? (percentuale di sintassi)
- 10. Quali sono i pro e i contro dell'uso di variabili di trasmissione in un singleton?
- 11. Quali sono i pro e i contro di lasciare a Google l'hosting di jQuery per me?
- 12. Quali sono i pro e i contro di LinkedHashMaps rispetto a LinkedHashSet?
- 13. Quali sono i pro e i contro dell'uso di GenericForeignKey rispetto all'ereditarietà multipla rispetto a OneToOneField?
- 14. Quali sono i pro e i contro delle procedure di chiamata in VB.NET?
- 15. Quali sono i pro e i contro di HTML5 Canvas vs. SVG + Raphael.js?
- 16. Quali sono i pro e i contro dell'uso di una flag enum?
- 17. Quali sono i pro e i contro di git-flow vs github-flow?
- 18. Quali sono i pro e i contro di DynamoDB rispetto ad altri database NoSQL?
- 19. Quali sono i pro e i contro di rspec mocking rispetto ad altri framework beffardi?
- 20. Quali sono i pro e i contro dell'utilizzo di un'e-mail come nome utente?
- 21. Quali sono i pro e i contro di RemObjects PascalScript rispetto allo script DWS?
- 22. Quali sono i pro e i contro del linguaggio di programmazione Icon?
- 23. Quali sono le situazioni o i pro e i contro dell'uso di C++/CLI su C#
- 24. Quali sono i pro e i contro dell'utilizzo di uno o più DbContext con EF?
- 25. Quali sono i pro e i contro del parametro --svn-branches per svn2git
- 26. Quali sono i pro e i contro dell'utilizzo dell'elenco manuale iterazione vs ricorsione tramite fail
- 27. Quali sono i pro e i contro dei database degli oggetti?
- 28. Per ARC o non per ARC? Quali sono i pro e i contro?
- 29. Quali sono i pro e i contro degli Enumerator vs. Conduit vs. Pipes?
- 30. Quali sono i pro e i contro dell'utilizzo dei componenti di progettazione di Visual Studio per i dati
Personalmente, non penso che sia necessario un tag global.asax ... –
Abbastanza corretto, rimuoverò anche quel commento – Larsenal