2014-11-28 4 views
5

Stworzyłem prostą, samoobsługową stronę Nancy z pojedynczym modułem w projekcie konsoli. Podczas testowania zauważyłem, że konstruktor modułu jest wywoływany przy każdym żądaniu. To mnie zastanawia, ponieważ ctor jest również miejscem, w którym zarejestrowane są trasy. To nie ma dla mnie sensu i muszę czegoś przegapić. Czy konstruktorzy modułów są wywoływani na każde żądanie i czy wszystkie trasy są ponownie rejestrowane na każde żądanie?Czy moduły w nancyfx zostały rzeczywiście utworzone na każde żądanie?

+2

Byłem również zaniepokojony tym. Mniej informacji o trasach, a więcej o zależnościach, które mogą być kosztowne w tworzeniu. Tak więc ustawiam właściwości statyczne, aby buforować zależności między konstrukcjami. Potem kilka moich testów nie powiodło się, ponieważ bootstrap pierwszego testu był używany do wszystkich kolejnych testów. –

Odpowiedz

5

Sortowanie - Nancy zbuduje wszystkie moduły podczas uruchamiania, zarejestruje wszystkie trasy i zbuduje drzewo routingu. Dla każdego żądania będzie on wówczas ustalać, który moduł potrzebuje i skonstruować go za pomocą kontenera żądania, dlatego żądanie zależności o określonym zakresie ma poprawny czas życia, a następnie wykonuje odpowiednie działanie. Trasy nie są "rejestrowane" dla każdego żądania, są po prostu przechowywane w zbiorze w module, a silnik wykonuje poprawny.

+2

Ale wszystkie trasy są następnie przywracane w DynamicDictionary na każdym zdarzeniu żądania, mimo że nie są potrzebne (ponieważ wiemy, jaka trasa jest zgodna z żądaniem)? jest tak, to wydaje się dziwne, aby wykonać pracę na żądanie, które nie jest potrzebne. Czy istnieje lepszy sposób rejestrowania tras niż w ctorcie, tak aby w jak najmniejszym stopniu odbywało się to na każde żądanie? –

+1

również, wydaje się być mądre, aby nie mieć wielu tras w module, ale zamiast tego mieć więcej trybów z mniejszą liczbą tras? –

+0

To ma niewielką różnicę .. wykonaliśmy testy z milionami modułów i tysiącami tras w każdym module. Ogólnie rzecz biorąc, "normalnie" widzimy ludzi, którzy dzielą swoje moduły na obszary funkcjonalne/zasoby, zamiast imprezować razem. –

Powiązane problemy