Glimpse
Tworząc aplikację, w pierwszej kolejności skupiamy się na aspektach funkcjonalnych. Inne rzeczy, takie jak wydajność, odkładamy na późniejszy okres. Niestety bardzo często później nie starcza nam na to czasu, więc musimy reagować już po wdrożeniu aplikacji i na szybko ją poprawiać. Myślę, że taki stan rzeczy jest spowodowany przede wszystkim tym, że nie używamy prostych narzędzi, które na bieżąco będą nas informować o tym, jak działa nasza aplikacja. Dla aplikacji ASP.NET takim właśnie narzędziem jest tytułowe Glimpse (github biblioteki), które udostępnia bardzo dużo przydatnych informacji.
W projektach, w których biorę udział, testerzy również korzystają z tej biblioteki i mają za zadanie sprawdzenie, czy podstawowa wydajność aplikacji jest OK (np. żądanie zostało obsłużone w określonym czasie lub czy nie ma zbyt dużej liczby zapytań do bazy – np. brakujący Include w Entity Framework oraz problem n + 1 zapytań).
Instalacja
Bibliotekę instalujemy za pomocą nugeta. Do samej biblioteki możemy zainstalować sporo różnych rozszerzeń, które dostarczą dodatkowych informacji. Ja na ogół na początku zawsze instaluję następujące pakiety (z czasem ewentualnie dodaje kolejne, w zależności od tego, czego używam aktualnie w projekcie):
- Glimpse
- Glimpse.Ado
- Glimpse.EF6
- Glimpse.AspNet
- Glimpse.Mvc5
Uruchamianie
Po zainstalowaniu biblioteki w aplikacji dostępna jest nowa strona pod adresem [adres aplikacji]/glimpse.axd. Na tej stronie możemy włączyć w danej przeglądarce bibliotekę (tak naprawdę jest ustawiany plik cookie, który mówi, że ma ona działać). Dodatkowo można też skonfigurować to, jakie elementy mają być analizowane. Poniżej widać zrzut ekranu tej strony:
Po włączeniu biblioteki na każdej stronie aplikacji pojawi się pasek na dole ekranu, który dostarcza wielu przydatnych informacji:
Jak widać powyżej, biblioteka wyświetla informacje o czasie żądania (w tym czasie po stronie serwera oraz klienta), czasie wykonywania akcji po stronie serwera (czas akcji, generowanie widoku, liczba zapytań do bazy i ich czas) czy też informacje o operacjach ajaxowych. Dodatkowo poszczególne obszary możemy powiększyć, aby zobaczyć jeszcze więcej informacji:
Klikając w ikonę biblioteki w prawym rogu, możemy rozwinąć cały panel, w którym znajdują się różnego rodzaju zakładki dostarczające jeszcze więcej informacji. Dla przykładu poniżej znajduje się zakładka z informacją o wykonywanych zapytaniach do bazy danych:
Konfiguracja
Korzystając z biblioteki, warto pamiętać jeszcze o jednej rzeczy. Z racji tego, że biblioteka udostępnia dużo istotnych informacji o aplikacji (np. wykonywane zapytania na bazie), warto odpowiednio zabezpieczyć dostęp do niej. Domyślnie biblioteka działa tylko lokalnie, ale to na dłuższą metę jest problematyczne, szczególnie przy środowiskach innych niż developerskie, w których aplikacja jest wrzucona na jakiś serwer.
Nuget podczas instalacji pakietu głównego Glimpse dodaje również do katalogu głównego aplikacji klasę GlimpseSecurityPolicy, która domyślnie jest zakomentowana. Klasa ta umożliwia dodanie logiki, która będzie określać, kto ma może uruchomić Glimpse i z niego korzystać. Można na przykład w środowisku testowym udostępnić bibliotekę dla wszystkich, natomiast w środowisku produkcyjnym tylko dla użytkowników w roli administratora.
Dodatkowo warto pomyśleć również o zmianie domyślnego adresu glimpse.axd. Dzięki temu, gdy zrobimy błąd na przykład w klasie GlimpseSecurityPolicy, to mamy dodatkowe zabezpieczenie przed udostępnieniem informacji z biblioteki.