Apa itu Middleware?
Middleware adalah perangkat lunak yang dirakit menjadi alur aplikasi untuk menangani permintaan dan respons. Setiap komponen:
- Pilih apakah akan meneruskan permintaan ke komponen berikutnya dalam alur.
- Pekerjaan dapat dilakukan sebelum dan sesudah komponen berikutnya dalam alur dipanggil.
Delegasi permintaan digunakan untuk membangun alur permintaan yang menangani setiap permintaan HTTP.
Delegasi permintaan dikonfigurasi menggunakan metode ekstensi Jalankan, Petakan, dan Gunakan. Delegasi permintaan terpisah dapat ditentukan dalam metode anonim sebaris (disebut middleware sebaris), atau dapat didefinisikan dalam kelas yang dapat digunakan kembali. Kelas yang dapat digunakan kembali dan metode anonimitisasi inline ini adalah komponen middleware atau middleware. Setiap komponen middleware dalam alur permintaan bertanggung jawab untuk memanggil komponen berikutnya dalam alur dan, jika sesuai, korsleting tautan.
Memigrasikan modul HTTP ke middleware menjelaskan perbedaan antara ASP.NET Core dan alur permintaan di versi sebelumnya (ASP.NET) dan memberikan lebih banyak contoh middleware.
Menggunakan IApplicationBuilder untuk membuat alur middleware
Proses permintaan ASP.NET Core terdiri dari serangkaian delegasi permintaan, seperti yang ditunjukkan pada gambar berikut (proses eksekusi mengikuti panah hitam):
Setiap delegasi dapat melakukan tindakan sebelum dan sesudah delegasi berikutnya. Delegasi juga dapat memutuskan untuk tidak meneruskan permintaan ke delegasi berikutnya, yang disebut korsleting dalam alur permintaan. Korsleting biasanya diinginkan karena menghindari pekerjaan yang tidak perlu. Misalnya, middleware file statis dapat mengembalikan permintaan untuk file statis dan melakukan hubungan arus pendek pada sisa alur. Delegasi penanganan pengecualian perlu dipanggil di awal alur, sehingga mereka dapat menangkap pengecualian di alur selanjutnya.
Hal yang paling sederhana mungkin adalah menyiapkan delegasi ASP.NET aplikasi Core untuk menangani semua permintaan. Skenario ini tidak menyertakan alur permintaan aktual. Sebagai gantinya, metode anonim dipanggil untuk setiap permintaan HTTP.
Aplikasi pertama. Jalankan delegasi mengakhiri alur.
Ada kode seperti ini:
Diakses melalui browser, ditemukan bahwa itu memang ada di aplikasi pertama. Run mengakhiri alur.
Anda dapat mendelegasikan beberapa permintaan dengan aplikasi. Penggunaan terhubung bersama. Parameter berikutnya mewakili delegasi berikutnya dalam alur. (Perlu diingat bahwa Anda dapat mengakhiri alur dengan tidak memanggil parameter berikutnya.) Anda biasanya dapat melakukan tindakan sebelum dan sesudah delegasi berikutnya, seperti yang ditunjukkan dalam contoh berikut:
Menggunakan browser untuk mengakses hasil seperti:
Dapat dilihat bahwa urutan eksekusi delegasi permintaan mengikuti diagram alir di atas.
Nota:
Setelah respons dikirim ke klien, jangan menelepon berikutnya. Memanggil。 Setelah respons dimulai, perubahan pada HttpResponse akan melemparkan pengecualian. Misalnya, mengatur header respons, kode status, dll. akan memunculkan pengecualian. Tulis isi respons setelah memanggil berikutnya.
dapat mengakibatkan pelanggaran perjanjian. Misalnya, menulis lebih dari panjang konten yang dijelaskan dalam panjang konten.
Pemformatan konten responsif mungkin rusak. Misalnya, tulis footer HTML ke dalam file CSS.
HttpResponse.HasStarted adalah petunjuk yang berguna untuk menunjukkan apakah header respons telah dikirim dan/atau isinya telah ditulis.
Middleware bawaan
ASP.NET Core hadir dengan komponen middleware berikut:
| Middleware | deskripsi | | Otentikasi | Dukungan autentikasi tersedia | | CORS | Mengonfigurasi berbagi sumber daya lintas domain | | Caching Respons | Dukungan respons cache tersedia | | Kompresi Respons | Memberikan dukungan untuk kompresi respons | | Perutean | Menentukan dan membatasi perutean permintaan | | Sesi | Menyediakan manajemen sesi pengguna | | File Statis | Menyediakan dukungan untuk penjelajahan file dan direktori statis | | Middleware Penulisan Ulang URL | Digunakan untuk menulis ulang URL dan meminta dukungan untuk pengalihan |
|