Usługi IIS już to robią, na tym polega recykling. IT ładuje biblioteki DLL, podczas gdy stara wersja aplikacji wciąż działa. dopiero po zakończeniu recyklingu jest gotowy.
Jednak ładuje DLL jest tylko częścią coraz aplikacji internetowych gotowe, nie może być również początkowe ładunki, takie jak załadunek/buforowanie użytkownikowi db itp
Działania te nie są częścią procesu obiegowego, oni się zdarzyć po przeładowaniu wszystkich bibliotek DLL i zakończeniu recyklingu.
Jakiś czas temu natknąłem się na ten problem z aplikacją, która miała ogromny czas uruchamiania z powodu dużej aktywności db/buforowania podczas uruchamiania. Byłem więc zainteresowany, czy jest jakaś funkcjonalność, która pozwala nam na wykonanie kodu, zanim recykling zostanie oznaczony jako zakończony, tak więc aplikacja jest najpierw uważana za poddaną recyklingowi, kiedy wszystko jest gotowe do uruchomienia. Zasadniczo to, czego chciałem, to pewien rodzaj funkcjonalności etapowej.
Byłem w kontakcie z zespołem IIS w związku z tym problemem, niestety powiedzieli mi, że taka funkcjonalność nie istnieje, ani nie jest planowana.
Aby to zrobić, możesz spróbować rozwiązać następujący:
- Zastosowanie zmiennego wdraża:
możliwość konfiguracji 2 stron z odrębnych pul aplikacji. Jednym z nich jest strona internetowa LIVE, druga to strona STAGED. Jeśli chcesz wdrożyć zmiany, po prostu wdrożyć na stronie internetowej STAGED. Po załadowaniu/buforowaniu itp. Zmieniasz ustawienia adresów URL aplikacji internetowych, aby przekierowywać przychodzące żądania z LIVE na STAGED. Tak więc LIVE jeden staje się nowy STAGED i na odwrót. Następna instalacja zostanie ponownie przeniesiona do nowego STAGED i tak dalej.
UPDATE
Widocznie oni stworzyli moduł IIS, który zapewnia tę funkcjonalność już:
IIS Application Warm-Up modułu dla IIS 7.5
Zespół IIS wydała pierwsza beta-testowa wersja modułu rozgrzewania aplikacji dla IIS 7.5. Dzięki temu rozgrzewanie aplikacji jest jeszcze łatwiejsze niż opisano wcześniej. Zamiast wpisywać niestandardowy kod , należy określić adresy URL zasobów do wykonania, zanim aplikacja internetowa zaakceptuje żądania z sieci.Ta rozgrzewka występuje podczas uruchamiania usługi IIS (jeśli skonfigurowano pulę aplikacji IIS jako funkcję AlwaysRunning) i gdy przetwarza proces roboczy IIS . Podczas recyklingu stary proces roboczy IIS kontynuuje wykonywanie żądań do momentu, aż nowo utworzony proces roboczy zostanie w pełni rozgrzany, tak aby aplikacje nie doświadczyły przerw ani innych problemów związanych z niepoprawionymi pamięciami podręcznymi. Zauważ, że ten moduł działa z każdą wersją ASP.NET , począwszy od wersji 2.0.
Aby uzyskać więcej informacji, zobacz Rozgrzewka aplikacji na stronie internetowej IIS.net. Aby zapoznać się z instrukcją, która ilustruje, jak korzystać z funkcji rozgrzewki, zobacz Pierwsze kroki z modułem rozgrzewającym aplikacje IIS 7.5 na stronie internetowej IIS.net.
Patrz:
http://www.asp.net/whitepapers/aspnet4
Jeśli używasz ASP.NET 4 Auto Start cecha:
Nadal można wybrać auto-recykling procesy robocze z czas do czas. Gdy to zrobisz, aplikacja natychmiast się zrestartuje i Twój kod rozgrzewki zostanie wykonany (inaczej niż dzisiaj - gdzie musisz czekać dla następnego żądania to zrobić).
Główna różnica między funkcją rozgrzewania i automatycznego uruchamiania polega na tym, że moduł rozgrzewania jest częścią procesu recyklingu. Zamiast blokować aplikację dla żądań, podczas uruchamiania kodu inicjującego.
Jedyną rzeczą, którą można uzyskać za pomocą funkcji automatycznego uruchamiania, jest to, że nie trzeba czekać na użytkownika, aby uderzył w stronę, co nie pomaga w przypadku.
zobaczyć Gu blogu:
http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx
UPDATE 2:
Niestety moduł Warmup zostało przerwane na IIS 7/7.5:
http://forums.iis.net/t/1176740.aspx
To będzie częścią IIS8 choć (jest to teraz nazywa Application inicjalizacji modułu):
http://weblogs.asp.net/owscott/archive/2012/03/01/what-s-new-in-iis-8.aspx
UPDATE 3:
Jak zauważył w komentarzach Moduł Warmup został ponownie udostępniony dla IIS 7.5 jako Moduł Inicjalizacji Aplikacji dla IIS 7.5 po IIS 8 został wydany:
http://www.iis.net/downloads/microsoft/application-initialization
Bardzo dziękuję za komentarze, wnoszę, że muszę przenieść pamięć podręczną i napięcie wstępne działania w trybie pozaprocesowym, w którym mogę wyładować część pracy inicjującej aplikacji i zaimplementować "auto-start" d wreszcie poczekaj na IIS8 :) – sam360
Moduł rozgrzewki nadal istnieje dla IIS 7.5, ponieważ _ Moduł Inicjalizacji aplikacji dla IIS 7.5_: http://www.iis.net/downloads/microsoft/application-initialization – NicolasF