ตัวจัดการข้อความคือคลาสที่ได้รับการร้องขอ HTTP และส่งคืน HTTPresponse ตัวจัดการข้อความมาจากคลาส HttpMessageHandler ที่เป็นนามธรรม ตัวจัดการข้อความเปิดโอกาสให้เราประมวลผล แก้ไข หรือปฏิเสธคำขอที่เข้ามาก่อนที่จะถึง HttpControllerDispatcher
ตัวจัดการข้อความถูกดำเนินการเร็วกว่ามากในไปป์ไลน์การประมวลผลคำขอ ดังนั้นจึงเป็นสถานที่ที่ดีเยี่ยมในการนำข้อกังวลแบบตัดขวางมาใช้ใน Web API MessageHandlers เป็นเพียงสายโซ่ของคลาส (อาจเป็นระบบที่กำหนดหรือกำหนดโดยเรา) ซึ่งอยู่ถัดจากกระบวนการคำขอ HTTP และการตอบสนองผ่านไปป์ไลน์
ตัวอย่างเช่น คำขอ HTTP หนึ่งรายการมาถึงเซิร์ฟเวอร์ HTTP ตอนนี้คำขอจะถูกส่งต่อไปยัง HandlerA และหลังจากประมวลผลใน HandlerA แล้ว คำขออาจไปที่ HandlerB และอื่นๆ ข้อดีคือเราสามารถทำงานเฉพาะภายในตัวจัดการแต่ละคนได้ตามความต้องการทางธุรกิจของเรา
ใน ASP.NET Web API Framework มีตัวจัดการข้อความอยู่สองประเภท มีดังนี้
- ตัวจัดการข้อความ HTTP ฝั่งเซิร์ฟเวอร์
- ตัวจัดการข้อความ HTTP ฝั่งไคลเอ็นต์
ตัวจัดการข้อความฝั่งเซิร์ฟเวอร์
ทางฝั่งเซิร์ฟเวอร์ ไปป์ไลน์ Web API ใช้ตัวจัดการข้อความในตัว -
- เซิร์ฟเวอร์ HTTP ได้รับการร้องขอจากโฮสต์
- HttpRoutingDispatcher ส่งคำขอตามเส้นทาง
- HttpControllerDispatcher ส่งคำขอไปยังตัวควบคุม Web API
เราสามารถเพิ่มตัวจัดการแบบกำหนดเองให้กับไปป์ไลน์ได้ ตัวจัดการข้อความเหมาะสำหรับ crosscutting ความกังวลที่ทำงานที่ระดับข้อความ HTTP (แทนที่จะเป็นตัวควบคุม) ตัวอย่างเช่น ตัวจัดการข้อความอาจ −
- อ่านหรือแก้ไขส่วนหัวของคำขอ
- เพิ่มหัวข้อการตอบกลับในการตอบกลับ
- ตรวจสอบคำขอก่อนที่จะไปถึงผู้ควบคุม
ตัวจัดการข้อความ HTTP ฝั่งไคลเอ็นต์
ในฝั่งไคลเอ็นต์ HttpClient คลาสใช้ตัวจัดการข้อความเพื่อดำเนินการตามคำขอ ตัวจัดการเริ่มต้นคือ HttpClientHandler ซึ่งส่งคำขอผ่านเครือข่ายและรับการตอบกลับจากเซิร์ฟเวอร์ เราสามารถแทรกตัวจัดการข้อความที่กำหนดเองลงในไปป์ไลน์ของไคลเอ็นต์ได้