Czy ktoś może wyjaśnić w mniej niż 2 zdaniach różnicę między nimi? Tak, wiem, że Google może udzielić setek odpowiedzi, ale ani jednego na dwa jasne zdania :)
Czy ktoś może wyjaśnić w mniej niż 2 zdaniach różnicę między nimi? Tak, wiem, że Google może udzielić setek odpowiedzi, ale ani jednego na dwa jasne zdania :)
Odpowiedzi:
HttpHandler to miejsce, do którego zmierza pociąg żądań. HttpModule to stacja po drodze.
Dwa zdania:
HttpModule będzie wykonywany dla każdego żądania skierowanego do Twojej aplikacji, niezależnie od rozszerzenia, i jest zwykle używany do takich celów, jak bezpieczeństwo, statystyki, logowanie itp.
HttpHandler jest zwykle powiązany z określonym rozszerzeniem i jest używany do takich rzeczy, jak kanały RSS, dynamiczne generowanie lub modyfikowanie obrazów i tym podobne.
Trochę więcej wyjaśnień, jeśli nie jest to do końca jasne:
Ja o nich myślę - moduły „podłączają się” do potoku żądań, podczas gdy handlery „obsługują” określone rozszerzenie pliku. Tak więc, jeśli masz witrynę z LoggingModule i PdfHandler, obie będą wykonywane dla żądania do http://example.com/sample.pdf , a sam moduł logowania wykona żądanie do http: // example.com/page.aspx .
Jest całkiem jasny artykuł na temat różnicy w MSDN: Przegląd modułów obsługi HTTP i modułów HTTP
ProcessRequest
. Z drugiej strony moduł będzie wykonywany w dowolnym momencie cyklu życia, do którego zostanie podłączony. W scenariuszu, w którym chcesz uruchomić coś przed stroną aspx, potrzebujesz modułu. Musisz jednak ręcznie odfiltrować żądania do stron, które nie są w formacie .aspx
Głównym i wspólnym celem HttpHandler i HttpModule jest wstrzyknięcie logiki wstępnego przetwarzania, zanim żądanie ASP.NET dotrze do serwera IIS.
ASP.NET zapewnia dwa sposoby wstrzykiwania logiki w potoku żądań;
przykład: kanały RSS: aby utworzyć kanał RSS dla witryny sieci Web, możesz utworzyć moduł obsługi, który emituje XML w formacie RSS. Dlatego gdy użytkownicy wysyłają żądanie do witryny, które kończy się na .rss, ASP.NET wywołuje program obsługi w celu przetworzenia żądania.
Istnieją trzy kroki związane z tworzeniem programu obsługi 1. Zaimplementuj interfejs IHttpHandler. 2. Zarejestruj program obsługi w pliku web.config lub machine.config. 3. Zamapuj rozszerzenie pliku (* .arshad) na aspnet_isapi.dll w usługach IIS.
Interfejs IHttpHandler ma metodę ProcessRequest i właściwość IsReusable, które należy zaimplementować. ProcessRequest: w tej metodzie piszesz kod, który generuje dane wyjściowe dla procedury obsługi. IsResuable: ta właściwość określa, czy ten program obsługi może być ponownie użyty, czy nie.
Możesz zarejestrować moduł obsługi w pliku web.config w ten sposób
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
Uwaga: tutaj obsługujemy dowolną nazwę pliku z rozszerzeniem arshad.
Aparat ASP.NET emituje wiele zdarzeń, gdy żądanie przechodzi przez potok żądania. Niektóre z tych zdarzeń to AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. Używając HttpModule, możesz napisać logikę w tych zdarzeniach. Te logiki są wykonywane, gdy zdarzenia są uruchamiane i zanim żądanie dotrze do usług IIS.
Tworzenie modułów obejmuje dwa etapy: 1. Zaimplementuj interfejs IHttpModule 2. Zarejestruj moduł w pliku web.config lub machine.config
przykład: Bezpieczeństwo: Za pomocą modułu HTTP można przeprowadzić niestandardowe uwierzytelnianie lub inne kontrole bezpieczeństwa, zanim żądanie dotrze do IIS.
Procedura obsługi HTTP to proces, który jest uruchamiany w odpowiedzi na żądanie wysłane do aplikacji sieci Web ASP.NET. Moduły HTTP umożliwiają badanie przychodzących i wychodzących żądań oraz podejmowanie działań na ich podstawie.
HttpHandler jest odpowiedzialny za obsługę żądań http przez rozszerzenie, podczas gdy HttpModule odpowiada na zdarzenia cyklu życia aplikacji.
Ładny artykuł o tym HttpModule-and-HttpHandlers
Odniesienie: INFO: Omówienie modułów HTTP ASP.NET i programów obsługi HTTP
„Moduły są wywoływane przed i po wykonaniu procedury obsługi. Moduły umożliwiają programistom przechwytywanie, uczestniczenie lub modyfikowanie każdego pojedynczego żądania. Programy obsługi służą do przetwarzania indywidualnych żądań punktów końcowych. Programy obsługi umożliwiają platformie ASP.NET Framework przetwarzanie pojedynczych adresów URL HTTP lub grup rozszerzeń adresów URL w aplikacji. W przeciwieństwie do modułów, tylko jeden program obsługi jest używany do przetwarzania żądania ”.
Obsługa HTTP to miejsce, w którym faktycznie kompilacja jest wykonywana na podstawie ustawień. na przykład jeśli rozszerzenie strony to .aspx, zostanie skompilowane za pośrednictwem system.web.Ui.Pagahandlefactory. po zakończeniu kompilacji żądanie uchwytu HTTP przejdzie przez moduł HTTP i IIS.
Obsługa HTTP
Procedura obsługi HTTP to proces uruchamiany w odpowiedzi na żądanie HTTP. Więc gdy użytkownik zażąda pliku, jest on przetwarzany przez program obsługi na podstawie rozszerzenia. Tak więc niestandardowe programy obsługi protokołu HTTP są tworzone, gdy potrzebujesz specjalnej obsługi w oparciu o rozszerzenie nazwy pliku. Rozważmy przykład tworzenia RSS dla witryny. Stwórz więc procedurę obsługi, która generuje XML w formacie RSS. Teraz powiąż rozszerzenie .rss z niestandardową obsługą.
Moduły HTTP
Moduły HTTP są dołączane do cyklu życia żądania. Więc kiedy żądanie jest przetwarzane, jest przekazywane przez wszystkie moduły w potoku żądania. Więc generalnie moduły http są używane do:
Bezpieczeństwo: do uwierzytelniania żądania przed jego obsługą.
Statystyki i rejestrowanie: Ponieważ moduły są wywoływane dla każdego żądania, mogą być używane do gromadzenia statystyk i rejestrowania informacji.
Niestandardowy nagłówek: ponieważ odpowiedź można modyfikować, można dodać do niej informacje z niestandardowego nagłówka.