ASP.NET เป็นแพลตฟอร์มที่ทรงพลังมากสำหรับการสร้างเว็บแอปพลิเคชัน มันให้ความยืดหยุ่นและความสามารถที่ยอดเยี่ยม เพื่อให้คุณสามารถใช้มันเพื่อสร้างแอปพลิเคชันเว็บทุกประเภท
คนส่วนใหญ่คุ้นเคยเฉพาะกับเฟรมเวิร์กระดับสูง เช่น WebForms และ WebServices ซึ่งอยู่ด้านบนสุดของลำดับชั้น ASP.NET
ข้อมูลในบทความนี้รวบรวมและรวบรวมจากเอกสารสาธารณะต่างๆ ของ Microsoft โดยการเปรียบเทียบกระบวนการประมวลผลคำขอของ IIS, IIS5, IIS6 และ IIS7 รุ่นที่สาม เราจะคุ้นเคยกับกลไกพื้นฐานของ ASP.NET และทำความเข้าใจวิธีการ คำขอได้รับการประมวลผลจากเว็บ เซิร์ฟเวอร์สื่อสารกับรันไทม์ ASP.NET โดยการทำความเข้าใจกลไกพื้นฐาน เราจะมีความเข้าใจ ASP.net อย่างลึกซึ้งยิ่งขึ้น
กระบวนการประมวลผลคำขอ ASP.net ใน IIS 5
คุณลักษณะเด่นของ IIS 5.x คือการแยกเว็บเซิร์ฟเวอร์และแอปพลิเคชัน ASP.NET จริง เนื่องจากเป็นเว็บเซิร์ฟเวอร์ IIS จึงทำงานบนกระบวนการที่เรียกว่า InetInfo.exe ซึ่งเป็น Native Executive และไม่ใช่โปรแกรมที่ได้รับการจัดการ กระบวนการเริ่มต้นแล้ว ดังนั้นนี่คือสภาพแวดล้อมที่มีการจัดการ
ISAPI: หมายถึงแอปพลิเคชันที่สามารถจัดการส่วนต่อท้ายต่างๆ ISAPI เป็นตัวย่อของคำต่อไปนี้: Internet Server Application Programe Interface, Internet Server Application Programming Interface
คุณลักษณะของโหมด IIS 5:1. ขั้นแรก สามารถเรียกใช้กระบวนการ aspnet_wp ได้เพียงกระบวนการเดียวบนโฮสต์เดียวกันในเวลาเดียวกัน เดียวกันในกระบวนการของผู้ปฏิบัติงาน การแยกระหว่างแอปพลิเคชันจะขึ้นอยู่กับโดเมนแอปพลิเคชัน ไม่ใช่กระบวนการ
2. ประการที่สอง ASP.NET ISAPI ไม่เพียงแต่รับผิดชอบในการสร้างกระบวนการ aspnet_wp Worker เท่านั้น แต่ยังรับผิดชอบในการตรวจสอบกระบวนการด้วย หากตรวจพบว่าประสิทธิภาพของ aspnet_wp ลดลงถึงขีดจำกัดล่างที่กำหนดไว้ ASP.NET ISAPI จะรับผิดชอบ เพื่อยุติกระบวนการ เมื่อ aspnet_wp สิ้นสุดลง คำขอที่ตามมาจะทำให้ ASP.NET ISAPI สร้างกระบวนการของผู้ปฏิบัติงาน aspnet_wp ใหม่อีกครั้ง
3. สุดท้ายนี้ เนื่องจาก IIS และ Application ทำงานในกระบวนการของตัวเอง การสื่อสารระหว่างกันจึงต้องใช้กลไกการสื่อสารเฉพาะ โดยพื้นฐานแล้ว การสื่อสารระหว่างกระบวนการ InetInfo ที่ IIS ตั้งอยู่และกระบวนการของผู้ปฏิบัติงานคือการสื่อสารระหว่างกระบวนการที่แตกต่างกันบนเครื่องเดียวกัน (การสื่อสารระหว่างกระบวนการภายในเครื่อง) สำหรับการพิจารณาประสิทธิภาพ กลไกการสื่อสารที่ยึดตามเนมไปป์จะถูกใช้ระหว่างกระบวนการเหล่านั้น การสื่อสารระหว่าง ASP.NET ISAPI และกระบวนการของผู้ปฏิบัติงานถูกนำมาใช้ผ่านชุดของไปป์ระหว่างกัน นอกจากนี้ เพื่อเหตุผลด้านประสิทธิภาพการทำงาน ASP.NET ISAPI จะส่งคำขอไปยังกระบวนการของผู้ปฏิบัติงานในลักษณะอะซิงโครนัสและรับการตอบสนอง แต่กระบวนการของผู้ปฏิบัติงานได้รับตัวแปรบนเซิร์ฟเวอร์บางตัวจาก ASP.NET ISAPI ในลักษณะซิงโครนัส
กระบวนการประมวลผลคำขอ ASP.net ของ IIS6
IIS 5.x มอนิเตอร์คำขอผ่าน InetInfo.exe และกระจายคำขอไปยังกระบวนการทำงาน กล่าวอีกนัยหนึ่ง การตรวจสอบและการกระจายคำขอใน IIS 5 : http.sys เป็นผู้รับผิดชอบ
หมายเหตุ: เพื่อป้องกันไม่ให้แอปพลิเคชันของผู้ใช้เข้าถึงหรือแก้ไขข้อมูลระบบปฏิบัติการที่สำคัญ Windows มีโหมดการเข้าถึงโปรเซสเซอร์สองโหมด: โหมดผู้ใช้และโหมดเคอร์เนล โดยทั่วไป โปรแกรมผู้ใช้จะทำงานในโหมดผู้ใช้ ในขณะที่รหัสระบบปฏิบัติการทำงานในโหมดเคอร์เนล รหัสของโหมดเคอร์เนลอนุญาตให้เข้าถึงหน่วยความจำระบบทั้งหมดและคำสั่ง CPU ทั้งหมด
ในโหมดผู้ใช้ http.sys ได้รับการร้องขอ http ที่ใช้ aspx จากนั้นจะตรวจสอบว่าแอปพลิเคชันใดที่ยึดตามคำขอเป็นของตาม Metabase ใน IIS หากไม่มีกลุ่มแอปพลิเคชันอยู่ ให้สร้างขึ้นใหม่ มิฉะนั้น คำขอจะถูกส่งไปยังคิวที่สอดคล้องกับกลุ่มแอปพลิเคชันโดยตรง
แต่ละกลุ่มแอปพลิเคชันสอดคล้องกับกระบวนการของผู้ปฏิบัติงาน: w3wp.exe ซึ่งไม่ต้องสงสัยเลยว่าทำงานในโหมดผู้ใช้ การแมปของกลุ่มแอปพลิเคชันและกระบวนการของผู้ปฏิบัติงานจะคงอยู่ใน IIS Metabase จากการแมปดังกล่าว WAS (บริการการจัดการเว็บ) จะส่งคำขอที่มีอยู่ใน Application Pool Queue ไปยังกระบวนการของผู้ปฏิบัติงานที่เกี่ยวข้อง (หากไม่ใช่ ให้สร้างกระบวนการดังกล่าว) เมื่อเตรียมใช้งานกระบวนการของผู้ปฏิบัติงาน ASP.NET ISAPI จะถูกโหลด และ ASP.NET ISAPI จะโหลด CLR กระบวนการสุดท้ายจะเหมือนกับ IIS 5.x: สร้างโดเมนแอปพลิเคชันสำหรับแอปพลิเคชันผ่านวิธีการสร้างของ AppManagerAppDomainFactory ประมวลผลคำขอผ่าน ProcessRequest ของ ISAPIRuntime จากนั้นป้อนกระบวนการลงใน ASP.NET Http Runtime Pipeline
กระบวนการประมวลผลคำขอ ASP.net ของ IIS 7