Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 20191|Atbildi: 0

[ASP.NET] Asp.Net ieviests IHttpHandler

[Kopēt saiti]
Publicēts 13.03.2018 21:40:17 | | | |
Asp.Net ieviests IHttpHandler
ASP.NET divi bieži izmantotie apstrādes interfeisi, atbildot uz Http pieprasījumiem, ir IHttpHandler un IHttpModule.

Parasti IHttpHandler tiek izmantots, lai apstrādātu noteikta veida pieprasījumu, piemēram, atsevišķu katra *.asp, *.aspx faila apstrādi. IHttpModule parasti tiek izmantots, lai apstrādātu darbības, kas parasti ir nepieciešamas pieprasījumam, piemēram, veiktu dažas no tām pašām pārbaudēm pieprasījuma lapā.

Apskatīsim IIS servera apstrādes soļus, veicot atbilstošo HTTP pieprasījumu. ASP.NET ir cauruļvada jēdziens, kas nozīmē, ka katram ASP.NET pieprasījumam IIS būs virkne atbilstošu operāciju, lai izveidotu līnijai līdzīgu secību.

ASP.NET cauruļvada ieviešana

Apskatīsim cauruļvada apstrādes laika diagrammu:




Kā redzams no attēla, pēc pieprasījuma saņemšanas ieviešanu apstrādā HttpModule, un pēc tam tiek izsaukta HttpHandler metode ProcessRequest(), lai sniegtu konkrētu atbildi. Tāpēc nav grūti saprast, kāpēc klases specifisku pieprasījumu apstrāde tiek ievietota HttpHandler klasē, veicot dažas pārbaudes, kas ir kopīgas visiem HttpModule pieprasījumiem.

Kodeksa prakse
IHttpHandler

Autors nesen saskārās ar IHttpHandler izmantošanu, lai apstrādātu klienta interfeisa zvanus projektā, tāpēc īsumā apspriedīsim vienkāršo interfeisa dizainu, kas balstīts uz IHttpHandler.

IHttpHandler interfeisam ir tikai divi dalībnieki:


Atribūts IsReusable identificē, vai HttpHandler objektu var izmantot citas instances, un mēs parasti to iestatām uz True. Metode ProcessRequest() ir īpaša atbilde uz pieprasījumu, un mums šeit ir jāievieto tikai konkrētā biznesa loģikas operācija.

Vispirms izveidojiet jaunu tīmekļa projektu un pievienojiet Handler klasi:

RayHandler klase ievieš IHttpHandler interfeisa funkciju ProcessRequest(), kas ir tikai tieša teksta izvade.

Tad failā Web.config mums jāpievieno šāda konfigurācija:


ceļš norāda URL atbilstību, piemēram, *.ray, kas nozīmē, ka apdarinātājs atbildēs uz URL pieprasījumiem, kas beidzas ar ".ray", darbības vārds norāda pieprasījuma metodi, piemēram, Get/Post, un * nozīmē, ka tas atbilst visiem. tips norāda Handler klases tipu, WebApplication2.RayHandler ir klases nosaukums, WebApplication2 attiecas uz montāžas nosaukumu Bin direktorijā, piemēram, piemērā ir WebApplication2.dll, un šeit nav nepieciešams definēt sufiksa nosaukumu.

Sāciet vietni, ievadiet URL, kas beidzas ar ".ray", un jūs varat redzēt šādu rezultātu:



IHttpHandlerFactory pārskats

Dažreiz mums var būt jārisina vairāki dažādi sufiksi, viens sufikss, kas atbilst Handler klasei, un šādi izskatās mūsu Web.config fails:


Ja mums ir daudz HttpHandler ieviešanas klases, tad mūsu Web.config faila konfigurācija noteikti izskatīsies izsmeļoša. Vai dažos gadījumos, kad mēs varam tikai noteikt, kurš apstrādātājs reaģē, kad programma darbojas, mums jāizmanto IHttpHandlerFactory.

IHttpHandlerFactory ir definēts šādi:


Starp tiem ir:

GetHandler(): atgriež instanci, kas ievieš IHttpHandler interfeisu;
ReleaseHandler(): ļauj rūpnīcai atkārtoti izmantot esošu apdarinātāja instanci.
Kā piemēru ņemiet iepriekš minētos staru un rss pieprasījumus, ieviesiet rūpnīcas klasi:

Šajā gadījumā Web.config konfigurācija ir šāda:


Šajā laikā tiek īstenota rūpnīcas klases izmantošanas funkcija, lai atbilstu dažādiem konkrētiem apstrādātājiem, vienkāršojot konfigurāciju.

Mērogojama IHttpHandlerFactory

Iepriekš minētajā ieviešanā, ja programmai nākotnē ir jāpievieno jauna sufiksu apstrādes metode, tai ir jāmaina Switch priekšraksts GetHandler(), kas var arī izraisīt kļūdas vai radīt citus drošības riskus. Tātad, vai ir iespējams saglabāt HandlerFactory klasi nemainīgu nākamajiem paplašinājumiem?

Atbilde noteikti ir jā. Lasītājiem, kuri ir iepazinušies ar dizaina modeli, jāsaprot, ka tas ir vienkāršs rūpnīcas modelis, un, lai sasniegtu iepriekšējās funkcijas, mēs varam izmantot dizaina režīmu, ko sauc par uzlabotiem punktiem.

Un šeit mēs varam izmantot arī C# valodas valodas funkciju - atspoguļojumu. Izmantojot C# atstarošanas mehānismu, mēs atspoguļojam atbilstošo Hanlder tipu atbilstoši URL sufiksam, ja vien mēs vienojamies par atbilstību starp URL sufiksa nosaukumu un apstrādātāja klases nosaukumu.

Piemēram, mēs pārrakstām GetHandler() šādi:

Šajā gadījumā jums ir nepieciešams ievietot Handler klasi metodē ar to pašu nosaukumtelpu kā HandlerFactory klasi un pareizi konfigurēt to Web.config. Piemēram, ja ir RayHandler klase, tad automātiski jāatbilst šādai konfigurācijai:



Kopsavilkuma
Šis raksts īsumā iepazīstina ar IHttpHandler izmantošanu ASP.NET, nodrošina IHttpHandlerFactory ieviešanu vairāku apstrādātāja pieprasījumu apstrādē un, visbeidzot, uzlabo mērogojamu vairāku pieprasījumu apstrādātāja ieviešanu, izmantojot C# atspoguļošanas mehānismu.





Iepriekšējo:asp.net HttpContext skaidrojošā nozīme
Nākamo:asp.net IHttpModule interfeiss ir detalizēti izskaidrots
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com