Bagaimana bekerja dengan HTTPHandlers di ASP.Net

HTTPhandler dapat didefinisikan sebagai titik akhir yang dijalankan sebagai tanggapan atas permintaan dan digunakan untuk menangani permintaan tertentu berdasarkan ekstensi. Mesin runtime ASP.Net memilih penangan yang sesuai untuk melayani permintaan masuk berdasarkan ekstensi file dari URL permintaan. Sebaliknya, HttpModule adalah komponen yang merupakan bagian dari pipeline pemrosesan permintaan ASP.Net dan dipanggil pada setiap permintaan yang dibuat ke aplikasi Anda. Perhatikan bahwa tujuan dasar dari HTTPhandlers dan HttpModules adalah untuk memasukkan logika pra-pemrosesan ke pipeline.

Asumsikan bahwa aplikasi Anda perlu menyajikan gambar dengan berbagai ukuran - Anda dapat memanfaatkan HTTPhandler khusus untuk mengubah ukuran gambar tersebut dan mengirimkan tanggapan kembali. Skenario lain di mana Anda mungkin ingin menggunakan HTTPhandler khusus adalah ketika Anda ingin menjalankan beberapa logika pra-pemrosesan dalam aplikasi Anda berdasarkan ekstensi. Meskipun Anda dapat melakukan hampir semua hal yang dapat Anda lakukan dengan HTTPhandler juga dengan halaman ASP.Net Anda, HTTPhandler jauh lebih portabel dan dapat digunakan kembali daripada halaman web Anda.

Ketika permintaan untuk sumber daya datang ke ASP.Net Engine, Proses Pekerja ASP.Net pada gilirannya membuat contoh HTTPhandler yang sesuai ke server permintaan berdasarkan ekstensi. HTTPhandler di ASP.Net adalah kelas yang mengimplementasikan antarmuka IHTTPhandler. Secara kebetulan, antarmuka IHTTPhandler tersedia di namespace System.Web. Perhatikan bahwa PageHandlerFactory mengimplementasikan antarmuka IHTTPhandlerFactory dan berisi metode yang disebut GetHandler yang pada gilirannya bertanggung jawab untuk mengembalikan handler yang sesuai ke server permintaan tertentu.

MSDN menyatakan: "Sebuah ASP.Net HTTPhandler adalah proses (sering disebut sebagai" titik akhir ") yang berjalan sebagai tanggapan atas permintaan yang dibuat untuk aplikasi Web ASP.Net. Penangan yang paling umum adalah penangan halaman ASP.Net yang memproses file .aspx. Saat pengguna meminta file .aspx, permintaan diproses oleh halaman melalui penangan halaman. "

Membuat HTTPhandler khusus

Pada bagian ini kita akan membahas bagaimana kita bisa membangun HTTPhandler kustom di ASP.Net. Untuk membuat HTTPhandler khusus, buat kelas yang mengimplementasikan IHTTPhandler seperti yang ditunjukkan pada cuplikan kode di bawah ini.

namespace CustomHTTPhandler

{

   public class CustomHTTPhandler : IHTTPhandler

   {

       public bool IsReusable

       {

           get { return false; }

       }

       public void ProcessRequest(HttpContext context)

       {

           throw new NotImplementedException();

       }

   }

}

Perhatikan bahwa penangan HTTP khusus Anda harus memiliki properti yang disebut IsReusable dan metode yang disebut ProcessRequest. Sementara yang pertama digunakan untuk menentukan apakah penangan dapat digunakan kembali, yang terakhir adalah metode yang melakukan pemrosesan sebenarnya untuk Anda. Intinya, setiap HTTPHandler khusus harus mengimplementasikan antarmuka IHttphandler dan menentukan kedua anggota ini.

Mendaftarkan penangan Anda

Informasi pemetaan untuk HTTPhandler tersedia di file konfigurasi. Berikut tampilan bagian dari file machine.config Anda.

Sekarang, Anda juga perlu memberi tahu runtime kapan HTTPhandler khusus Anda harus dipanggil. Di mana Anda harus menentukan ini? Kita bisa menentukan detail seperti itu di file web.config. Anda dapat menambah dan menghapus HTTPhandler menggunakan bagian konfigurasi di file konfigurasi aplikasi Anda. Berikut cara mendaftarkan penangan Anda di file web.config aplikasi.

  

Jadi, apa yang kita lakukan disini? Kami baru saja mendaftarkan penangan kami dan menetapkan bahwa jika ada permintaan untuk ekstensi .idgaspx, permintaan tersebut harus dialihkan ke Penangan Http khusus bernama CustomHTTPhandler.

Perhatikan bahwa tidak seperti halaman web .aspx, HTTPhandlers tidak memiliki elemen visual. Anda dapat membuat HTTPhandler Anda di pustaka khusus dan kemudian menggunakannya kembali jika diperlukan.

HTTPHandler Asinkron

Versi terbaru dari ASP.Net menyediakan dukungan untuk penangan Http asinkron. Anda dapat memanfaatkan async / await dan TPL untuk membuat HTTPhandler asinkron di ASP.Net. Untuk membuat HTTPhandler asinkron khusus, Anda harus mewarisi kelas HttpTaskAsyncHandler. Kelas abstrak HttpTaskAsyncHandler pada gilirannya mengimplementasikan antarmuka IHttpAsyncHandler dan IHTTPhandler. Cuplikan kode berikut mengilustrasikan tampilan HTTPhandler asinkron khusus kami pada pandangan pertama.

   public class CustomHTTPhandler : HttpTaskAsyncHandler

   {

       public override Task ProcessRequestAsync(HttpContext context)

       {

           throw new NotImplementedException();

       }

   }