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?
Odpowiedz
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.
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? –
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? –
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. –
- 1. Ładowarka Angular 2 na każde żądanie http:
- 2. automatycznie ładuj nowych odbiorców na każde żądanie.
- 3. Czy NInject może ładować moduły/zespoły na żądanie?
- 4. Czy istnieje sposób zmuszenia Yii do przeładowania zasobów modułu na każde żądanie?
- 5. Czy każde żądanie uzyskuje dostęp do tego samego obiektu serwletu?
- 6. Jak mogę odzyskać obiekty w kolejności, w jakiej zostały utworzone?
- 7. angularjs globalnie zmodyfikować URL każde żądanie w $ http
- 8. NancyFX: Jak sprawdzić, czy wartości ciągu znaków/formularza zostały poprawnie przekazane do mojego programu obsługi?
- 9. Czy pliki rozwiązania Visual Studio (.sln) mają jakąkolwiek wskazówkę dotyczącą komputera, na którym zostały utworzone?
- 10. Jak określić, które moduły zostały połączone w jedną klasę?
- 11. Rekord aktywny - znajdź rekordy, które zostały utworzone przed dzisiejszym
- 12. Czy interfejsy API REST wymagają hasła i logowania na każde żądanie?
- 13. jquery sprawdza poprawność elementów, które nie zostały jeszcze utworzone
- 14. JUnit - czy należy przypisać wartość null do zasobów w tearDown, które zostały utworzone w setUp?
- 15. Czy można zaktualizować już utworzone zadanie w węźle kue js
- 16. Czy Java Kernel rzeczywiście istnieje?
- 17. Youtube API v3 każde żądanie jest liczone jako 300 próśb
- 18. Python: Jak przeładować moduły, które zostały przywiezione z *
- 19. Uwierzytelnianie NancyFx i Windows
- 20. Czy procesy potomne zostały utworzone przy użyciu fork() automatycznie zabijanego, gdy rodzic został zabity?
- 21. NancyFX: Deserialize JSON
- 22. Czy pamięć podręczna dostawcy roli na żądanie?
- 23. Skonfiguruj NancyFx z Fluent Validation
- 24. Czy glm :: ortho() jest rzeczywiście błędne?
- 25. Ruby: moduły rozszerzające/zawierające moduły
- 26. Elixir - Prosty przykład Wtyczka uderza metodę połączenia dwa razy na każde żądanie
- 27. Czy tablice JavaScript są rzeczywiście połączonymi listami?
- 28. Czy Mongoose rzeczywiście potwierdza istnienie identyfikatora obiektu?
- 29. Każde skrzyżowanie w dwóch kolekcjach
- 30. Czy mogę dołączyć moduły "na boki" w Rust?
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. –