Ohjelmointi

Kuinka työskennellä HTTPHandlersin kanssa ASP.Netissä

HTTP-käsittelijä voidaan määritellä loppupisteeksi, joka suoritetaan vastauksena pyyntöön ja jota käytetään tiettyjen laajennuksiin perustuvien pyyntöjen käsittelemiseen. ASP.Net-ajonaikainen moottori valitsee sopivan käsittelijän saapuvan pyynnön palvelemiseksi pyynnön URL-osoitteen tiedostotunnisteen perusteella. Päinvastoin, HttpModule on komponentti, joka on osa ASP.Net-pyyntöjen käsittelyputkea ja jota kutsutaan jokaiseen sovellukseesi tehtyyn pyyntöön. Huomaa, että sekä HTTP-käsittelijöiden että HttpModulesin perustavoite on injektoida esikäsittelylogiikkaa putkistoon.

Oletetaan, että sovelluksesi täytyy näyttää erikokoisia kuvia - voit käyttää mukautettua HTTP-käsittelijää hyödyntämällä näiden kuvien kokoa ja lähettämällä vastauksen takaisin. Toinen skenaario, jossa haluat ehkä käyttää mukautettua HTTP-käsittelijää, on, kun haluat suorittaa sovelluksessasi jonkin esikäsittelylogiikan laajennusten perusteella. Vaikka voit tehdä melkein mitä tahansa, mitä voit tehdä HTTPhandlerin kanssa, myös ASP.Net-sivusi kanssa, HTTP-käsittelijät ovat paljon kannettavampia ja uudelleenkäytettävämpiä kuin verkkosivusi.

Kun resurssipyyntö tulee ASP.Net-moottoriin, ASP.Net Worker -prosessi puolestaan ​​välittää sopivan HTTP-käsittelijän palvelimelle pyynnön laajennuksen perusteella. ASP.Netissä oleva HTTPhandler on luokka, joka toteuttaa IHTTPhandler-käyttöliittymän. Muuten, IHTTPhandler-käyttöliittymä on käytettävissä System.Web-nimitilassa. Huomaa, että PageHandlerFactory toteuttaa IHTTPhandlerFactory-käyttöliittymän ja sisältää GetHandler-nimisen menetelmän, joka puolestaan ​​on vastuussa asianmukaisen käsittelijän palauttamisesta tietyn pyynnön palvelimelle.

MSDN ilmoittaa: "ASP.Net HTTPhandler on prosessi (jota kutsutaan usein" päätepisteeksi "), joka suoritetaan vastauksena ASP.Net-verkkosovellukseen tehtyyn pyyntöön. Yleisin käsittelijä on ASP.Net-sivun käsittelijä. joka käsittelee .aspx-tiedostoja. Kun käyttäjät pyytävät .aspx-tiedostoa, sivu käsittelee pyynnön sivunkäsittelijän kautta. "

Mukautetun HTTP-käsittelijän luominen

Tässä osiossa tutkitaan, kuinka voimme rakentaa mukautetun HTTP-käsittelijän ASP.Net-palvelimeen. Voit rakentaa mukautetun HTTP-käsittelijän luomalla luokan, joka toteuttaa IHTTP-käsittelijän alla olevan koodinpätkän mukaisesti.

nimitila CustomHTTPhandler

{

julkisen luokan CustomHTTPhandler: IHTTPhandler

   {

public bool on uudelleenkäytettävä

       {

get {return väärä; }

       }

public void ProcessRequest (HttpContext-konteksti)

       {

heittää uusi NotImplementedException ();

       }

   }

}

Huomaa, että mukautetulla HTTP-käsittelijällä tulisi olla ominaisuus nimeltä IsReusable ja menetelmä nimeltä ProcessRequest. Ensimmäistä käytetään määrittämään, voidaanko käsittelijää käyttää uudelleen, jälkimmäinen on menetelmä, joka tekee varsinaisen käsittelyn puolestasi. Pohjimmiltaan minkä tahansa mukautetun HTTPHandlerin tulisi toteuttaa IHttphandler-käyttöliittymä ja määritellä nämä kaksi jäsentä.

Rekisteröi ohjaajasi

HTTP-käsittelijöiden kartoitustiedot ovat käytettävissä määritystiedostoissa. Näin osa kone.config-tiedostostasi voi näyttää.

Nyt sinun on myös annettava ajonaikainen tieto siitä, milloin mukautettu HTTP-käsittelijä tulisi käynnistää. Missä tämä pitäisi määritellä? No voi määrittää tällaiset tiedot web.config-tiedostoon. Voit lisätä ja poistaa HTTP-käsittelijöitä sovellusten määritystiedoston määritysosion avulla. Näin voit rekisteröidä käsittelijän sovelluksen web.config-tiedostoon.

  

Joten mitä teimme täällä? Rekisteröimme juuri käsittelijämme ja tarkensimme, että jos .idgaspx-tiedostotunnisteen laajentamista koskeva pyyntö saapuu, tällainen pyyntö tulee reitittää mukautetulle Http-käsittelijälle nimeltä CustomHTTPhandler.

Huomaa, että toisin kuin .aspx-verkkosivut, HTTP-käsittelijöillä ei ole visuaalisia elementtejä. Voit luoda HTTP-käsittelijät mukautettuun kirjastoon ja käyttää niitä sitten tarpeen mukaan.

Asynkroniset HTTP-käsittelijät

ASP.Net: n uudemmat versiot tarjoavat tukea asynkronisille Http-käsittelijöille. Voit hyödyntää asynkronointia / odottaa ja TPL: ää asynkronisten HTTP-käsittelijöiden rakentamiseen ASP.Net-verkkoon. Voit luoda mukautetun asynkronisen HTTPhandlerin perimällä HttpTaskAsyncHandler-luokan. Abstrakti HttpTaskAsyncHandler-luokka puolestaan ​​toteuttaa IHttpAsyncHandler- ja IHTTPhandler-rajapinnat. Seuraava koodinpätkä kuvaa, kuinka mukautettu asynkroninen HTTP-käsittelijä näyttää ensi silmäyksellä.

julkisen luokan CustomHTTPhandler: HttpTaskAsyncHandler

   {

public override Task ProcessRequestAsync (HttpContext context)

       {

heittää uusi NotImplementedException ();

       }

   }