Cara bekerja dengan HTTPHandlers di ASP.Net

HTTPhandler dapat didefinisikan sebagai titik akhir yang dilaksanakan sebagai respons terhadap permintaan dan digunakan untuk menangani permintaan khusus berdasarkan ekstensi. Mesin runtime ASP.Net memilih pengendali yang sesuai untuk melayani permintaan masuk berdasarkan sambungan fail URL permintaan. Sebaliknya, HttpModule adalah komponen yang merupakan sebahagian daripada saluran pemprosesan permintaan ASP.Net dan dipanggil pada setiap permintaan yang dibuat untuk aplikasi anda. Perhatikan bahawa objektif asas kedua HTTPhandler dan HttpModules adalah menyuntikkan logik pra-pemprosesan ke saluran paip.

Anggaplah bahawa aplikasi anda perlu menyajikan gambar dengan pelbagai ukuran - anda boleh memanfaatkan HTTPhandler khusus untuk mengubah ukuran gambar tersebut dan mengirim balasannya kembali. Senario lain di mana anda mungkin ingin menggunakan HTTPhandler tersuai adalah ketika anda ingin melaksanakan beberapa logik pra-pemprosesan dalam aplikasi anda berdasarkan peluasan. Walaupun anda boleh melakukan apa sahaja yang boleh anda lakukan dengan HTTPhandler juga dengan halaman ASP.Net anda, HTTPhandler jauh lebih mudah alih dan boleh digunakan semula daripada halaman web anda.

Apabila permintaan untuk sumber datang ke ASP.Net Engine, Proses Pekerja ASP.Net pada gilirannya memberikan HTTPhandler yang sesuai untuk melayan permintaan berdasarkan pelanjutan. HTTPhandler di ASP.Net adalah kelas yang menerapkan antara muka IHTTPhandler. Secara kebetulan, antara muka IHTTPhandler tersedia di ruang nama System.Web. Perhatikan bahawa PageHandlerFactory mengimplementasikan antara muka IHTTPhandlerFactory dan mengandungi kaedah yang disebut GetHandler yang seterusnya bertanggungjawab untuk mengembalikan pengendali yang sesuai ke pelayan permintaan tertentu.

MSDN menyatakan: "ASP.Net HTTPhandler adalah proses (sering disebut sebagai" endpoint ") yang berjalan sebagai tindak balas kepada permintaan yang dibuat untuk aplikasi Web ASP.Net. Penangan yang paling biasa adalah pengendali halaman ASP.Net yang memproses fail .aspx. Apabila pengguna meminta fail .aspx, permintaan tersebut diproses oleh halaman melalui pengendali halaman. "

Membuat HTTPhandler tersuai

Di bahagian ini kita akan menerangkan bagaimana kita dapat membina HTTPhandler tersuai di ASP.Net. Untuk membina HTTPhandler tersuai, buat kelas yang menerapkan IHTTPhandler seperti yang ditunjukkan dalam coretan kod di bawah.

namespace CustomHTTPhandler

{

   public class CustomHTTPhandler : IHTTPhandler

   {

       public bool IsReusable

       {

           get { return false; }

       }

       public void ProcessRequest(HttpContext context)

       {

           throw new NotImplementedException();

       }

   }

}

Perhatikan bahawa pengendali HTTP tersuai anda harus mempunyai harta yang disebut IsReusable dan kaedah yang disebut ProcessRequest. Walaupun yang pertama digunakan untuk menentukan sama ada pengendali dapat digunakan kembali, yang kedua adalah kaedah yang melakukan pemprosesan sebenar untuk anda. Pada dasarnya, mana-mana HTTPHandler tersuai harus melaksanakan antara muka IHttphandler dan menentukan kedua-dua anggota ini.

Mendaftar pengendali anda

Maklumat pemetaan untuk HTTPhandler tersedia dalam fail konfigurasi. Begini rupa bahagian fail mesin.config anda.

Sekarang, anda juga perlu memberitahu waktu proses kapan HTTPhandler tersuai anda harus dipanggil. Di mana anda harus menentukan ini? Baiklah boleh menentukan butiran sedemikian dalam fail web.config. Anda boleh menambah dan membuang HTTPhandler menggunakan bahagian konfigurasi dalam fail konfigurasi aplikasi anda. Inilah cara anda boleh mendaftarkan pengendali anda dalam fail web.config aplikasi.

  

Jadi, apa yang kita buat di sini? Kami baru sahaja mendaftarkan pengendali kami dan menyatakan bahawa jika ada permintaan untuk perpanjangan .idgaspx tiba, permintaan seperti itu harus diarahkan ke Pengendali Http khusus bernama CustomHTTPhandler.

Perhatikan bahawa tidak seperti laman web .aspx, pengendali HTTP tidak mempunyai elemen visual. Anda boleh membuat HTTPhandler anda di perpustakaan tersuai dan kemudian menggunakannya semula bila diperlukan.

Pengendali HTTP Asinkron

Versi ASP.Net yang lebih baru memberikan sokongan untuk pengendali Http asinkron. Anda boleh memanfaatkan async / waiting dan TPL untuk membina HTTPhandler asinkron di ASP.Net. Untuk membuat HTTPhandler asinkron tersuai, anda harus mewarisi kelas HttpTaskAsyncHandler. Kelas abstrak HttpTaskAsyncHandler seterusnya menerapkan antara muka IHttpAsyncHandler dan IHTTPhandler. Coretan kod berikut menggambarkan bagaimana HTTPhandler asinkron tersuai kami pada pandangan pertama.

   public class CustomHTTPhandler : HttpTaskAsyncHandler

   {

       public override Task ProcessRequestAsync(HttpContext context)

       {

           throw new NotImplementedException();

       }

   }