Wczoraj wdrażałem aplikację ASP.NET MVC i dowiedziałem się, że wdrażanie z IIS7 ustawionym na tryb zintegrowany jest mniej pracochłonne. Moje pytanie brzmi, jaka jest różnica? Jakie są konsekwencje korzystania z jednego lub drugiego?
asp.net
asp.net-mvc
iis
iis-7
integrated-pipeline-mode
Jon Erickson
źródło
źródło
Odpowiedzi:
Tryb klasyczny (jedyny tryb w IIS6 i niższych) to tryb, w którym IIS działa tylko z rozszerzeniami ISAPI i filtrami ISAPI. W rzeczywistości w tym trybie ASP.NET jest tylko rozszerzeniem ISAPI (aspnet_isapi.dll) i filtrem ISAPI (aspnet_filter.dll). IIS po prostu traktuje ASP.NET jako zewnętrzną wtyczkę zaimplementowaną w ISAPI i działa z nią jak z czarną skrzynką (i tylko wtedy, gdy musi wysłać żądanie do ASP.NET). W tym trybie ASP.NET niewiele różni się od PHP lub innych technologii IIS.
Z kolei tryb zintegrowany to nowy tryb w IIS7, w którym potok IIS jest ściśle zintegrowany (tzn. Jest taki sam) jak potok żądań ASP.NET. ASP.NET może zobaczyć każde żądanie i manipulować po drodze. ASP.NET nie jest już traktowany jako zewnętrzna wtyczka. Jest całkowicie mieszany i zintegrowany z IIS. W tym trybie ASP.NET
HttpModule
ma w zasadzie prawie tyle samo mocy, co filtr ISAPI, a ASP.NETHttpHandler
może mieć prawie taką samą moc, jak mogłoby to mieć rozszerzenie ISAPI. W tym trybie ASP.NET jest zasadniczo częścią IIS.źródło
HttpModules
metodami / zdarzeniami wiis7
ma większą funkcjonalność niż wiis6
? możesz to rozwinąć?Zaczerpnięte z: Jaka jest różnica między DefaultAppPool a Classic .NET AppPool w IIS7?
Oryginalne źródło: Wprowadzenie do architektury IIS
źródło
ASP.NET zintegrowany z IIS poprzez rozszerzenie ISAPI, C API (API oparte na języku programowania C) i ujawnił swój własny model przetwarzania aplikacji i żądań.
To skutecznie odsłoniło dwa oddzielne potoki serwera (żądanie / odpowiedź), jeden dla natywnych filtrów ISAPI i komponentów rozszerzenia, a drugi dla komponentów aplikacji zarządzanych. Komponenty ASP.NET działałyby całkowicie wewnątrz bąbelka rozszerzenia ISAPI ASP.NET I TYLKO dla żądań mapowanych na ASP.NET w konfiguracji mapowania skryptów IIS.
Żądania dotyczące typów treści innych niż ASP.NET: - obrazy, pliki tekstowe, strony HTML i strony ASP bez skryptów zostały przetworzone przez IIS lub inne rozszerzenia ISAPI i NIE były widoczne dla ASP.NET.
Głównym ograniczeniem tego modelu było to, że usługi dostarczane przez moduły ASP.NET i niestandardowy kod aplikacji ASP.NET NIE były dostępne dla żądań innych niż ASP.NET
Co to jest MAPA SKRYPTU?
Mapy skryptów służą do kojarzenia rozszerzeń plików z procedurą obsługi ISAPI, która jest wykonywana, gdy żądany jest ten typ pliku. Mapa skryptów ma również opcjonalne ustawienie, które weryfikuje, czy plik fizyczny powiązany z żądaniem istnieje przed umożliwieniem przetworzenia żądania
Dobrym przykładem może być
seen here
Usługi IIS 7.0 i nowsze zostały przeprojektowane od podstaw, aby zapewnić zupełnie nowy interfejs ISAPI oparty na interfejsie C ++ API.
IIS 7.0 i nowsze wersje integrują środowisko wykonawcze ASP.NET z podstawową funkcjonalnością serwera WWW, zapewniając ujednolicony (pojedynczy) potok przetwarzania przetwarzania, który jest eksponowany zarówno dla komponentów rodzimych, jak i zarządzanych, zwanych modułami (IHttpModules)
Oznacza to, że IIS 7 przetwarza żądania przychodzące dla dowolnego typu treści, zarówno z, jak
NON ASP.NET Modules / native IIS modules
iASP.NET modules
zapewniając przetwarzanie żądań na wszystkich etapach. Z tego powodu moduły .NET mogą obsługiwać typy treści NON ASP.NET (.html, pliki statyczne). .IHttpModule
), które mają możliwość wykonywania dla całej zawartości aplikacji, oraz zapewniają rozszerzony zestaw usług przetwarzania żądań dla aplikacji.IHttpHandler
)źródło
W trybie klasycznym IIS działa bezpośrednio z rozszerzeniami ISAPI i filtrami ISAPI. I używa dwóch linii potoku, jednej dla kodu natywnego, a drugiej dla kodu zarządzanego. Można po prostu powiedzieć, że w trybie klasycznym IIS 7.x działa tak samo jak IIS 6 i nie ma dodatkowych korzyści z funkcji IIS 7.x.
W trybie zintegrowanym usługi IIS i ASP.Net są ściśle powiązane, a nie tylko w oparciu o dwie biblioteki DLL w Asp.net, jak w przypadku trybu klasycznego.
źródło