Ho creato un semplice sito di Nancy con un singolo modulo in un progetto di console. Durante il test ho notato che il costruttore del modulo viene chiamato su ogni richiesta. Questo mi imbarazza perché il ctor è anche il luogo in cui sono registrati i percorsi. Questo non ha senso per me e mi deve mancare qualcosa. Quindi i costruttori di moduli sono chiamati su ogni richiesta e tutte le rotte sono quindi registrate di nuovo su ogni richiesta?I moduli in nancyfx sono veramente creati su ogni richiesta?
risposta
Sort of - Nancy costruirà tutti i moduli all'avvio, registrerà tutti i loro percorsi e costruirà l'albero di instradamento. Per ciascuna richiesta, verrà quindi individuato il modulo di cui ha bisogno e lo costruirà utilizzando il contenitore della richiesta, quindi richiedere che le dipendenze dell'ambito abbiano la durata corretta, quindi esegue l'azione pertinente. I percorsi non sono "registrati" su ogni richiesta, vengono semplicemente memorizzati in una raccolta nel modulo e il motore esegue quello corretto.
Ma tutte le rotte vengono quindi ripristinate in un DynamicDictionary su ogni evento di richiesta anche se non sono necessarie (perché sappiamo quale percorso corrisponde alla richiesta)? è sì, allora sembra strano lavorare su una richiesta che non è necessaria. C'è un modo migliore per registrare i percorsi rispetto al Ctor in modo che il meno possibile venga fatto su ogni richiesta? –
inoltre, sembra saggio non avere molti percorsi in un modulo, ma invece avere più modi con meno percorsi ciascuno? –
Fa davvero poca differenza .. abbiamo caricato i test con milioni di moduli e migliaia di percorsi in ogni modulo. Ma in generale noi "normalmente" vediamo le persone abbattere i loro moduli in aree/risorse funzionali, piuttosto che mettere insieme le cose. –
- 1. I servizi Web sono veramente senza stato?
- 2. Dove sono i collegamenti dati veramente universali?
- 3. Le variabili pubbliche non sono VERAMENTE pubbliche in VBA in Moduli
- 4. I moduli sono == mixin in ruby?
- 5. ApplicationUserManager.Create chiamato su ogni richiesta
- 6. Cosa sono i moduli CSS3?
- 7. NInject può caricare moduli/assiemi su richiesta?
- 8. I driver JavaiteJDBC Java puri sono veramente puri?
- 9. Poiché tutti gli oggetti sono creati con "nuovo" in Java, significa che sono tutti creati sull'heap?
- 10. I componenti sono veramente più veloci rispetto ai modelli?
- 11. Caricatore angolare 2 su ogni richiesta http
- 12. Ottieni parametri URL in NancyFx
- 13. NancyFX: Deserialize JSON
- 14. I file 0 byte sono veramente 0 byte?
- 15. I codici di uscita di javaws sono veramente guasti?
- 16. Come verificare se i binari sono creati da particolari fonti
- 17. WebView - Definire User-Agent su ogni richiesta
- 18. NancyFx e autenticazione di Windows
- 19. Pacchetti Nuget che sono veramente comandi exe?
- 20. Cosa sono i file .rej creati durante l'unione
- 21. Cython typed memoryviews: cosa sono veramente?
- 22. Come eliminare veramente i vettori
- 23. Ricarica Sinatra applicazione su ogni richiesta su Windows
- 24. Sono veramente necessari scala.util.automata, scala.util.regexp e scala.util.grammar?
- 25. Quali sono gli indici di slice predefiniti in Python * veramente *?
- 26. Come CQ autentica ogni richiesta?
- 27. Che cosa significa "i moduli anonimi non hanno un nome a cui fare riferimento" significa veramente?
- 28. perché solo 60 fps sono veramente fluidi in cocos2d?
- 29. Convalida del modello con NancyFX
- 30. elementi Pair Android immediatamente creati sono nulli
Anch'io ero preoccupato per questo. Meno sulle rotte e più sulle dipendenze che potrebbero essere costose da creare. Così ho impostato le proprietà statiche per memorizzare le dipendenze tra le costruzioni. Poi un gruppo di miei test fallì, perché il bootstrapper del primo test veniva usato per tutti i test successivi. –