บางคนสามารถอธิบายความแตกต่างระหว่างทั้งสองประโยคในเวลาน้อยกว่า 2 ประโยคได้หรือไม่ ใช่ฉันรู้ว่า google สามารถให้คำตอบนับร้อย แต่ไม่ใช่หนึ่งใน 2 ประโยคที่ชัดเจน :)
บางคนสามารถอธิบายความแตกต่างระหว่างทั้งสองประโยคในเวลาน้อยกว่า 2 ประโยคได้หรือไม่ ใช่ฉันรู้ว่า google สามารถให้คำตอบนับร้อย แต่ไม่ใช่หนึ่งใน 2 ประโยคที่ชัดเจน :)
คำตอบ:
HttpHandler เป็นที่ที่ขบวนรถไฟมุ่งหน้า HttpModule เป็นสถานีระหว่างทาง
ประโยคทั้งสอง:
HttpModule จะดำเนินการสำหรับทุกคำขอไปยังแอปพลิเคชันของคุณโดยไม่คำนึงถึงส่วนขยายและโดยทั่วไปจะใช้สำหรับสิ่งต่าง ๆ เช่นความปลอดภัยสถิติการบันทึก ฯลฯ
โดยทั่วไปแล้ว HttpHandler จะเกี่ยวข้องกับส่วนขยายเฉพาะและใช้สำหรับสิ่งต่าง ๆ เช่นฟีด RSS การสร้างหรือแก้ไขรูปภาพแบบไดนามิกและอื่น ๆ
คำอธิบายเพิ่มเติมเล็กน้อยหากยังไม่ชัดเจน:
วิธีที่ฉันคิดเกี่ยวกับพวกเขา - โมดูล "เสียบ" กับไปป์ไลน์คำขอในขณะที่ตัวจัดการ "จัดการ" นามสกุลไฟล์ที่เฉพาะเจาะจง ดังนั้นหากคุณมีเว็บไซต์ที่มี LoggingModule และ PdfHandler ทั้งคู่จะดำเนินการตามคำขอไปยังhttp://example.com/sample.pdfและโมดูลการบันทึกเพียงอย่างเดียวจะดำเนินการตามคำขอhttp: // example.com/page.aspx
มีบทความที่ค่อนข้างชัดเจนเกี่ยวกับความแตกต่างใน MSDN: ตัวจัดการ HTTP และภาพรวมโมดูล HTTP
ProcessRequest
. ในทางกลับกันโมดูลจะดำเนินการ ณ จุดใด ๆ ในวงจรชีวิตที่คุณต่อสายไป สำหรับสถานการณ์ที่คุณต้องการเรียกใช้บางสิ่งบางอย่างก่อนหน้า aspx คุณต้องการโมดูล อย่างไรก็ตามคุณต้องกรองคำขอไปยังหน้าที่ไม่ใช่. aspx ด้วยตนเอง
เป้าหมายหลักและทั่วไปของ HttpHandler และ HttpModule คือการฉีดลอจิกการประมวลผลล่วงหน้าก่อนที่คำร้องขอ ASP.NET จะไปถึง IIS Server
ASP.NET จัดเตรียมสองวิธีในการฉีดตรรกะในไปป์ไลน์ที่ร้องขอ
ตัวอย่าง: ฟีด RSS: ในการสร้างฟีด RSS สำหรับเว็บไซต์คุณสามารถสร้างตัวจัดการที่ปล่อย XML ที่จัดรูปแบบ RSS ดังนั้นเมื่อผู้ใช้ส่งคำขอไปยังไซต์ของคุณที่ลงท้ายด้วย. rss ASP.NET จะเรียกผู้จัดการของคุณเพื่อประมวลผลคำขอ
มีสามขั้นตอนในการสร้างตัวจัดการ 1. ใช้อินเทอร์เฟซ IHttpHandler 2. ลงทะเบียนตัวจัดการในไฟล์ web.config หรือ machine.config 3. แมปนามสกุลไฟล์ (* .arshad) กับ aspnet_isapi.dll ใน IIS
อินเทอร์เฟซ IHttpHandler มีวิธี ProcessRequest และคุณสมบัติ IsReusable ที่ต้องดำเนินการ ProcessRequest: ในวิธีนี้คุณเขียนรหัสที่สร้างผลลัพธ์สำหรับตัวจัดการ IsResuable: คุณสมบัตินี้บอกว่าตัวจัดการนี้สามารถนำกลับมาใช้ใหม่ได้หรือไม่
คุณสามารถลงทะเบียนตัวจัดการในไฟล์ web.config เช่นนี้
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
หมายเหตุ: ที่นี่เรากำลังจัดการชื่อไฟล์ใด ๆ ที่มีนามสกุล arshad
เอ็นจิ้น ASP.NET จะปล่อยเหตุการณ์เป็นจำนวนมากตามคำขอการส่งผ่านไปป์ไลน์การร้องขอ เหตุการณ์เหล่านั้นบางเหตุการณ์ ได้แก่ AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest โดยใช้ HttpModule คุณสามารถเขียนตรรกะในเหตุการณ์เหล่านี้ ตรรกะเหล่านี้ถูกดำเนินการเมื่อมีเหตุการณ์เริ่มต้นและก่อนที่คำขอจะมาถึง IIS
มีสองขั้นตอนที่เกี่ยวข้องในการสร้างโมดูลคือ 1. ใช้อินเทอร์เฟซ IHttpModule 2. ลงทะเบียนโมดูลในไฟล์ web.config หรือ machine.config
ตัวอย่าง: ความปลอดภัย: การใช้โมดูล HTTP คุณสามารถทำการตรวจสอบความถูกต้องที่กำหนดเองหรือตรวจสอบความปลอดภัยอื่น ๆ ก่อนที่คำขอจะมาถึง IIS
ตัวจัดการ HTTP เป็นกระบวนการที่ทำงานในการตอบสนองต่อการร้องขอไปยังโปรแกรมประยุกต์ ASP.NET เว็บ โมดูล HTTP ช่วยให้คุณตรวจสอบคำขอขาเข้าและขาออกและดำเนินการตามคำขอ
HttpHandler รับผิดชอบการจัดการคำขอ http โดยส่วนขยายในขณะที่ HttpModule ตอบสนองต่อเหตุการณ์วงจรชีวิตของแอปพลิเคชัน
บทความที่ดีเกี่ยวกับมันHttpModule-and-HttpHandlers
การอ้างอิง: INFO: โมดูล ASP.NET HTTP และภาพรวมตัวจัดการ HTTP
“ โมดูลถูกเรียกก่อนและหลังตัวจัดการดำเนินการ โมดูลช่วยให้นักพัฒนาสามารถสกัดกั้นมีส่วนร่วมหรือแก้ไขคำขอแต่ละรายการ ตัวจัดการจะใช้ในการประมวลผลคำขอปลายทางแต่ละรายการ ตัวจัดการเปิดใช้งาน ASP.NET Framework เพื่อประมวลผล URL HTTP แต่ละรายการหรือกลุ่มส่วนขยาย URL ภายในแอปพลิเคชัน ซึ่งแตกต่างจากโมดูลเพียงหนึ่งจัดการใช้ในการประมวลผลคำขอ”
ตัวจัดการ HTTP เป็นที่ซึ่งการรวบรวมจะกระทำจริงตามการตั้งค่า เช่นถ้าส่วนขยายของหน้าเป็น. aspx จากนั้นจะรวบรวมผ่าน system.web.Ui.Pagahandlefactory เมื่อทำการรวบรวมที่การร้องขอการจัดการ HTTP จะดำเนินการผ่านโมดูล HTTP และ IIS
ตัวจัดการ HTTP
HTTP Handler เป็นกระบวนการที่ทำงานตามคำขอ HTTP ดังนั้นเมื่อใดก็ตามที่ผู้ใช้ร้องขอไฟล์มันถูกประมวลผลโดยตัวจัดการตามนามสกุล ดังนั้นตัวจัดการ http ที่กำหนดเองจะถูกสร้างขึ้นเมื่อคุณต้องการการจัดการพิเศษตามนามสกุลไฟล์ ลองพิจารณาตัวอย่างในการสร้าง RSS สำหรับเว็บไซต์ ดังนั้นสร้างตัวจัดการที่สร้าง XML ที่จัดรูปแบบ RSS ตอนนี้ผูกส่วนขยาย. rss กับตัวจัดการแบบกำหนดเอง
โมดูล HTTP
โมดูล HTTP ถูกเสียบเข้ากับวงจรชีวิตของการร้องขอ ดังนั้นเมื่อมีการประมวลผลคำขอมันจะถูกส่งผ่านโมดูลทั้งหมดในไปป์ไลน์ของคำขอ โดยทั่วไปจะใช้โมดูล http สำหรับ:
ความปลอดภัย: สำหรับการตรวจสอบคำขอก่อนที่จะมีการจัดการคำขอ
สถิติและการบันทึก: เนื่องจากโมดูลถูกเรียกใช้สำหรับการร้องขอทุกครั้งจึงสามารถใช้สำหรับการรวบรวมสถิติและการบันทึกข้อมูล
หัวข้อที่กำหนดเอง: เนื่องจากสามารถแก้ไขการตอบสนองได้จึงสามารถเพิ่มข้อมูลส่วนหัวที่กำหนดเองในการตอบกลับได้