Programavimas

Kaip dirbti su HTTPHandleriais sistemoje ASP.Net

„HTTPhandler“ gali būti apibrėžiamas kaip galutinis taškas, vykdomas atsakant į užklausą ir naudojamas tvarkyti konkrečias užklausas, pagrįstas plėtiniais. „ASP.Net“ vykdymo variklis pasirenka tinkamą tvarkytuvą, kad ji teiktų gaunamą užklausą, remdamasi užklausos URL failo plėtiniu. Priešingai, „HttpModule“ yra komponentas, kuris yra ASP.Net užklausų apdorojimo vamzdyno dalis ir yra iškviečiamas kiekvienoje jūsų paraiškoje pateiktoje užklausoje. Atkreipkite dėmesį, kad pagrindinis „HTTPhandlers“ ir „HttpModules“ tikslas yra įvesti išankstinio apdorojimo logiką į dujotiekį.

Tarkime, kad jūsų programa turi pateikti įvairaus dydžio vaizdus - galite pasinaudoti pasirinktiniu HTTP tvarkytuvu, kad pakeistumėte tų vaizdų dydį ir išsiųstumėte atsakymą atgal. Kitas scenarijus, kuriame galbūt norėsite naudoti pasirinktinį „HTTPhandler“, yra tai, kai norėtumėte savo programoje atlikti išankstinio apdorojimo logiką, remdamiesi plėtiniais. Nors jūs galite padaryti beveik viską, ką galite padaryti naudodami „HTTPhandler“, taip pat naudodami savo „ASP.Net“ puslapį, HTTP tvarkytuvai yra daug nešiojami ir daugkartinio naudojimo nei jūsų tinklalapiai.

Kai ištekliaus užklausa ateina į ASP.Net variklį, ASP.Net darbuotojo procesas savo ruožtu inicijuoja atitinkamą HTTPhandlerį, kad serveris gautų užklausą pagal plėtinį. ASP.Net „HTTPhandler“ yra klasė, įgyvendinanti IHTTPhandler sąsają. Beje, „IHTTPhandler“ sąsaja yra „System.Web“ vardų srityje. Atkreipkite dėmesį, kad „PageHandlerFactory“ įgyvendina IHTTPhandlerFactory sąsają ir jame yra metodas, vadinamas „GetHandler“, kuris savo ruožtu yra atsakingas už atitinkamo tvarkytojo grąžinimą į konkretaus prašymo serverį.

MSDN teigia: "ASP.Net HTTPhandler yra procesas (dažnai vadinamas" galiniu tašku "), vykdomas atsakant į užklausą, pateiktą ASP.Net žiniatinklio programai. Dažniausiai apdorojamas yra ASP.Net puslapio tvarkytuvas. kad apdoroja .aspx failus. Kai vartotojai prašo .aspx failo, puslapis apdoroja užklausą per puslapio tvarkyklę. "

Tinkinto HTTP tvarkytuvo sukūrimas

Šiame skyriuje mes ištirsime, kaip mes galime sukurti pasirinktinį HTTPhandlerį ASP.Net. Norėdami sukurti pasirinktinį „HTTPhandler“, sukurkite klasę, kuri įgyvendina IHTTPhandlerį, kaip parodyta žemiau esančiame kodo fragmente.

vardų sritis „CustomHTTPhandler“

{

viešosios klasės „CustomHTTPhandler“: „IHTTPhandler“

   {

viešoji „Bool“ yra daugkartinio naudojimo

       {

gauti {return false; }

       }

public void „ProcessRequest“ („HttpContext“ kontekstas)

       {

mesti naują NotImplementedException ();

       }

   }

}

Atminkite, kad jūsų pasirinktinis HTTP tvarkytuvas turėtų turėti ypatybę, vadinamą „IsReusable“, ir metodą, vadinamą „ProcessRequest“. Pirmoji naudojama norint nurodyti, ar tvarkytuvą galima naudoti pakartotinai, antrasis yra metodas, kuris atlieka faktinį apdorojimą už jus. Iš esmės bet kuris pasirinktinis „HTTPHandler“ turėtų įdiegti „IHttphandler“ sąsają ir apibrėžti šiuos du narius.

Užregistruokite savo prižiūrėtoją

HTTP tvarkytuvų atvaizdavimo informaciją galima rasti konfigūracijos failuose. Štai kaip gali atrodyti failo machine.config dalis.

Dabar taip pat turėtumėte pranešti vykdymo laikui, kada turėtų būti naudojamas jūsų pasirinktas „HTTPhandler“. Kur turėtumėte tai nurodyti? Na, galite nurodyti tokią informaciją faile web.config. Galite pridėti ir pašalinti HTTP tvarkytuvus naudodamiesi programų konfigūracijos failo konfigūracijos skiltimi. Štai kaip galite užregistruoti savo tvarkytuvą programos faile web.config.

  

Taigi, ką mes čia padarėme? Mes ką tik užregistravome savo tvarkytuvą ir nurodėme, kad jei bus pateikta užklausa dėl .idgaspx plėtinio, tokia užklausa turėtų būti nukreipta į pasirinktinį „Http“ tvarkytuvą, pavadintą „CustomHTTPhandler“.

Atminkite, kad skirtingai nuo .aspx tinklalapių, HTTP tvarkytojai neturi vaizdinių elementų. Galite sukurti savo HTTP tvarkytuvus pasirinktinėje bibliotekoje ir tada juos naudoti, kai tik reikia.

Asinchroniniai HTTP tvarkytojai

Naujesnės ASP.Net versijos teikia paramą asinchroniniams „Http“ tvarkytuvams. Galite naudoti async / await ir TPL pranašumus, kad sukurtumėte asinchroninius HTTP tvarkytuvus ASP.Net. Norėdami sukurti pasirinktinį asinchroninį HTTPhandlerį, turėtumėte paveldėti klasę HttpTaskAsyncHandler. „HttpTaskAsyncHandler“ abstrakčioji klasė savo ruožtu įgyvendina „IHttpAsyncHandler“ ir „IHTTPhandler“ sąsajas. Šis kodo fragmentas parodo, kaip iš pirmo žvilgsnio atrodo mūsų pritaikytas asinchroninis HTTP tvarkytuvas.

viešoji klasė „CustomHTTPhandler“: „HttpTaskAsyncHandler“

   {

public override Task ProcessRequestAsync („HttpContext“ kontekstas)

       {

mesti naują NotImplementedException ();

       }

   }