2014-11-28 14 views
5

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?

+2

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. –

risposta

5

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.

+2

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? –

+1

inoltre, sembra saggio non avere molti percorsi in un modulo, ma invece avere più modi con meno percorsi ciascuno? –

+0

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. –

Problemi correlati