ฉันได้ทำการปรับใช้แอปพลิเคชัน ASP.NET MVC เมื่อคืนและพบว่าการปรับใช้ IIS7 นั้นเป็นโหมดรวม คำถามของฉันคืออะไรแตกต่างกันอย่างไร และความหมายของการใช้อย่างใดอย่างหนึ่งคืออะไร?
ฉันได้ทำการปรับใช้แอปพลิเคชัน ASP.NET MVC เมื่อคืนและพบว่าการปรับใช้ IIS7 นั้นเป็นโหมดรวม คำถามของฉันคืออะไรแตกต่างกันอย่างไร และความหมายของการใช้อย่างใดอย่างหนึ่งคืออะไร?
คำตอบ:
โหมดคลาสสิค (โหมดเดียวใน IIS6 และด้านล่าง) เป็นโหมดที่ IIS ทำงานได้เฉพาะกับส่วนขยาย ISAPI และตัวกรอง ISAPI โดยตรง ในความเป็นจริงในโหมดนี้ ASP.NET เป็นเพียงส่วนขยาย ISAPI (aspnet_isapi.dll) และตัวกรอง ISAPI (aspnet_filter.dll) IIS จะถือว่า ASP.NET เป็นปลั๊กอินภายนอกที่นำมาใช้ใน ISAPI และทำงานกับมันเหมือนกล่องดำ (และเมื่อจำเป็นต้องส่งคำขอไปยัง ASP.NET) ในโหมดนี้ ASP.NET ไม่แตกต่างจาก PHP หรือเทคโนโลยีอื่น ๆ สำหรับ IIS มากนัก
ในทางกลับกันโหมดรวมเป็นโหมดใหม่ใน IIS7 ที่ IIS ไปป์ไลน์ถูกรวมเข้าด้วยกันอย่างแน่นหนา (เช่นเดียวกับ) ไปป์ไลน์คำร้องขอ ASP.NET ASP.NET สามารถเห็นการร้องขอทุกอย่างที่มันต้องการและจัดการสิ่งต่าง ๆ ไปพร้อมกัน ASP.NET จะไม่ถือว่าเป็นปลั๊กอินภายนอกอีกต่อไป มันผสมผสานอย่างสมบูรณ์และรวมอยู่ใน IIS ในโหมดนี้HttpModule
โดยทั่วไปแล้วASP.NET จะมีพลังเกือบเท่าที่จะมีตัวกรอง ISAPI และ ASP.NET HttpHandler
s ก็มีความสามารถเทียบเท่าเกือบเท่ากับที่ส่วนขยายของ ISAPI อาจมี ในโหมดนี้ ASP.NET นั้นเป็นส่วนหนึ่งของ IIS
HttpModules
วิธีการ / เหตุการณ์ในiis7
มีฟังก์ชั่นมากกว่าiis6
หรือไม่? คุณอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ได้ไหม?
โหมดพูลแอ็พพลิเคชันแบบรวม
เมื่อพูลแอ็พพลิเคชันอยู่ในโหมดรวมคุณสามารถใช้ประโยชน์จากสถาปัตยกรรมการประมวลผลการร้องขอรวมของ IIS และ ASP.NET เมื่อกระบวนการของผู้ปฏิบัติงานในกลุ่มแอปพลิเคชันได้รับการร้องขอคำขอจะส่งผ่านรายการเหตุการณ์ที่สั่งซื้อ แต่ละเหตุการณ์เรียกใช้โมดูลเนทีฟและโมดูลที่ได้รับการจัดการเพื่อประมวลผลส่วนของคำขอและสร้างการตอบสนอง
มีประโยชน์หลายประการในการใช้พูลโปรแกรมในโหมดรวม ก่อนอื่นโมเดลการร้องขอการประมวลผลของ IIS และ ASP.NET จะถูกรวมเข้ากับโมเดลกระบวนการแบบรวม รุ่นนี้กำจัดขั้นตอนที่ทำซ้ำก่อนหน้านี้ใน IIS และ ASP.NET เช่นการรับรองความถูกต้อง นอกจากนี้โหมดรวมยังช่วยให้มีฟีเจอร์ที่มีการจัดการสำหรับเนื้อหาทุกประเภท
โหมดพูลแอ็พพลิเคชันแบบคลาสสิค
เมื่อกลุ่มแอพลิเคชันอยู่ในโหมดคลาสสิก IIS 7.0 จัดการการร้องขอเช่นเดียวกับในโหมดแยกกระบวนการของผู้ปฏิบัติงาน IIS 6.0 คำขอ ASP.NET จะทำตามขั้นตอนการประมวลผลดั้งเดิมใน IIS ก่อนจากนั้นจึงส่งไปยัง Aspnet_isapi.dll เพื่อประมวลผลรหัสที่ได้รับการจัดการในรันไทม์ที่ได้รับการจัดการ ในที่สุดคำขอจะถูกส่งกลับผ่าน IIS เพื่อส่งการตอบกลับ
การแยกโมเดลการร้องขอการประมวลผล IIS และ ASP.NET นี้ส่งผลให้เกิดการทำซ้ำขั้นตอนการประมวลผลบางอย่างเช่นการตรวจสอบสิทธิ์และการอนุญาต นอกจากนี้คุณสมบัติรหัสที่ได้รับการจัดการเช่นการรับรองความถูกต้องของฟอร์มจะมีให้เฉพาะกับแอปพลิเคชัน ASP.NET หรือแอปพลิเคชันที่คุณได้แมปสคริปต์คำขอทั้งหมดที่ต้องจัดการโดย aspnet_isapi.dll
ตรวจสอบให้แน่ใจว่าได้ทดสอบแอปพลิเคชันที่มีอยู่ของคุณสำหรับความเข้ากันได้ในโหมดรวมก่อนที่จะอัพเกรดสภาพแวดล้อมการผลิตเป็น IIS 7.0 และกำหนดแอปพลิเคชันให้กับแอพพลิเคชั่นพูลในโหมดรวม คุณควรเพิ่มแอปพลิเคชันให้กับกลุ่มแอปพลิเคชันในโหมดคลาสสิกหากแอปพลิเคชันไม่สามารถทำงานในโหมดรวมได้ ตัวอย่างเช่นแอปพลิเคชันของคุณอาจใช้โทเค็นการตรวจสอบความถูกต้องที่ส่งผ่านจาก IIS ไปยังรันไทม์ที่ได้รับการจัดการและเนื่องจากสถาปัตยกรรมใหม่ใน IIS 7.0 กระบวนการจึงหยุดแอปพลิเคชันของคุณ
นำมาจาก: ความแตกต่างระหว่าง DefaultAppPool และ Classic .NET AppPool ใน IIS7 คืออะไร
แหล่งต้นฉบับ: รู้เบื้องต้นเกี่ยวกับสถาปัตยกรรม IIS
IIS 6.0 และรุ่นก่อนหน้า:
ASP.NET รวมเข้ากับ IIS ผ่านส่วนขยาย ISAPI, C API (การเขียนโปรแกรมด้วยภาษา C API) และเปิดเผยแอปพลิเคชันของตัวเองและรูปแบบการประมวลผลคำขอ
สิ่งนี้ได้เปิดเผยไปป์ไลน์ที่แยกจากกันสองเซิร์ฟเวอร์ (ร้องขอ / ตอบกลับ) หนึ่งตัวสำหรับตัวกรอง ISAPI ดั้งเดิมและคอมโพเนนต์ส่วนขยายและอีกส่วนหนึ่งสำหรับคอมโพเนนต์แอปพลิเคชันที่ได้รับการจัดการ คอมโพเนนต์ ASP.NET จะดำเนินการทั้งหมดภายในฟองอากาศของ ASP.NET ISAPI และ สำหรับการร้องขอที่แมปกับ ASP.NET ในการกำหนดค่าการแมป IIS สคริปต์เท่านั้น
คำขอไปยังประเภทเนื้อหาที่ไม่ใช่ของ ASP.NET: - รูปภาพ, ไฟล์ข้อความ, หน้า HTML และหน้า ASP ที่ใช้สคริปต์น้อยกว่าถูกประมวลผลโดย IIS หรือส่วนขยาย ISAPI อื่น ๆ และไม่สามารถมองเห็นได้กับ ASP.NET
ข้อ จำกัด ที่สำคัญของรุ่นนี้คือการให้บริการโดยโมดูล ASP.NET และรหัสแอปพลิเคชัน ASP.NET ที่กำหนดเองนั้นไม่พร้อมใช้งานสำหรับคำขอ ASP.NET ที่ไม่ใช่
แผนที่ SCRIPT คืออะไร
การแมปสคริปต์จะใช้เพื่อเชื่อมโยงส่วนขยายไฟล์กับตัวจัดการ ISAPI ที่ดำเนินการเมื่อมีการร้องขอประเภทไฟล์นั้น แมปสคริปต์ยังมีการตั้งค่าเพิ่มเติมที่ตรวจสอบว่ามีฟิสิคัลไฟล์ที่เชื่อมโยงกับคำขออยู่ก่อนที่จะอนุญาตให้ประมวลผลคำขอ
ตัวอย่างที่ดีสามารถ seen here
IIS 7 ขึ้นไป
IIS 7.0 ขึ้นไปได้รับการออกแบบใหม่ตั้งแต่ต้นจนจบเพื่อจัดหา ISAPI ที่ใช้ C ++ API ใหม่
IIS 7.0 และสูงกว่ารวมรันไทม์ของ ASP.NET เข้ากับฟังก์ชั่นการทำงานหลักของเว็บเซิร์ฟเวอร์โดยให้ขั้นตอนการประมวลผลคำร้องขอแบบรวม (เดี่ยว) ที่เปิดเผยทั้งส่วนประกอบดั้งเดิมและส่วนประกอบที่ได้รับการจัดการซึ่งเรียกว่าโมดูล (IHttpModules)
สิ่งนี้หมายความว่า IIS 7 จะประมวลผลคำขอที่มาถึงสำหรับประเภทเนื้อหาใด ๆ ทั้งที่มีNON ASP.NET Modules / native IIS modules
และASP.NET modules
ให้การประมวลผลคำขอในทุกขั้นตอน นี่คือสาเหตุที่ทำให้ประเภทเนื้อหา NON ASP.NET (.html, ไฟล์สแตติก) สามารถจัดการได้โดยโมดูล NET .
IHttpModule
) ที่มีความสามารถในการดำเนินการสำหรับเนื้อหาแอปพลิเคชันทั้งหมดและจัดหาชุดบริการประมวลผลคำขอที่เพิ่มประสิทธิภาพให้กับแอปพลิเคชันของคุณIHttpHandler
)ในโหมดคลาสสิก IIS ทำงานส่วนขยาย h ISAPI และตัวกรอง ISAPI โดยตรง และใช้สอง pipe pipe หนึ่งรายการสำหรับ native code และอื่น ๆ สำหรับ code ที่ได้รับการจัดการ คุณสามารถพูดได้ว่าในโหมดคลาสสิค IIS 7.x ทำงานเช่นเดียวกับ IIS 6 และคุณไม่ได้รับสิทธิพิเศษจากฟีเจอร์ IIS 7.x
ในโหมดรวม IIS และ ASP.Net นั้นมีการเชื่อมโยงกันอย่างแน่นหนาแล้วขึ้นอยู่กับ DLLs สองตัวบน Asp.net เช่นเดียวกับในโหมดคลาสสิค