ASP.NET QuickStart Príručka
HTTP handlery a Factories
ASP.NET poskytuje nízko-úrovňové API na prácu s požiadavkou/odpoveďou, ktoré povoľuje vývojárom použiť triedy .NET Frameworku pre obslúženie prichádzajúcej HTTP požiadavky. Vývojári to vykonávajú
autorizovaním tried, ktoré podporujú rozhranie System.Web.IHTTPHandler
a implementujú metódu ProcessRequest().
Handlery sú zvyčajne užitočné, keď služby nie sú poskytované vyššou úrovňou absakcie stránok pre spracovanie HTTP požiadaviek. Bežné používanie handlerov zahrňuje filtre a aplikácie podobné CGI, najmä tých, ktoré vracajú binárne dáta.
Každá prichádzajúca HTTP požiadavka prijatá ASP.NET je napokon spracovaná špecifickou inštanciou triedy, ktorá implementuje IHTTPHandler. IHttpHandlerFactory poskytuje infraštruktúru, ktorá spracováva aktuálnu URL požiadavku do inštancii IHttpHandler.
Okrem štandardných tried IHttpHandlerFactory poskytovaných ASP.NET môžu vývojári vytvoriť a registrovať tzv. factories pre podporu spracovania veľkých požiadaviek a aktivačných scenárov.
Konfigurovanie HTTP handlerov a Factories
HTTP handlery a Factories sú deklarované v konfigurácii ASP.NET ako časť súboru web.config. ASP.NET definuje konfiguračnú sekciu <httphandlers>, kde môžu byť handlery a factories pridávané alebo odstraňované. Nastavenia pre HttpHandlerFactory a HttpHandler sú dedené podadresármi.
Napríklad ASP.NET mapuje všetky požiadavky pre súbory .aspx do triedy PageHandlerFactory v globálnom súbore machine.config:
<httphandlers>
...
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory,System.Web" />
...
</httphandlers>
Vytváranie vlastného HTTP Handlera
Nasledujúca ukážka vytvára vlastný HttpHandler, ktorý spracováva všetky požiadavky do "SimpleHandler.axd".
VB Jednoduchý HttpHandler
Vlastný HTTP handler môže byť vytvorený implementovaním rozhrania IHttpHandler, ktoré obsahuje iba dve metódy. Zavolaním IsReusable môže HTTP factory dotazovať handler, aby určil či môže byť rovnaká inštancia použitá pre obsluhu viacerých požiadaviek. Metóda ProcessRequest chápe inštanciu HttpContext ako parameter, ktorý jej dáva prístup k objektom Request a Response.
V nasledujúcej ukážke sú požadované dáta ignorované a konštantný reťazec je odoslaný ako odozva klientovi.
Public Class SimpleHandler : Inherits IHttpHandler
Public Sub ProcessRequest(context As HttpContext)
context.Response.Write("Hello World!")
End Sub
Public Function IsReusable() As Boolean
Return(True)
End Function
End Class
VB
Po umiestnení definície triedy handlera do aplikačného adresára \App_Code, môže byť trieda handlera špecifikovaná ako cieľ pre požiadavky. V tomto prípade budú všetky požiadavky pre "SimpleHandler.axd" presmerované na inštanciu triedy SimpleHandler, ktorá existuje v namespace-i Acme.
<httphandlers>
<add verb="*" path="SimpleHandler.axd" type="Acme.SimpleHandler" />
</httphandlers>
|