Asp.Net Core Hosting Model ใช้ในเว็บแอปพลิเคชันอย่างไร



แกน Asp.net มีการปรับปรุงที่สำคัญในรูปแบบโฮสติ้ง คาดว่าในรุ่นก่อนหน้านี้จะโฮสต์แอปพลิเคชันเว็บ Asp.net Core ผ่านเว็บเซิร์ฟเวอร์พร็อกซีเช่น IIS บน Windows, Apache หรือ NGINX อย่างไรก็ตาม Asp.net core 2.2 ใหม่อนุญาตให้โฮสต์แอปพลิเคชัน Asp.net ใน Windows โดยตรงภายใน IIS โดยไม่ต้องใช้เซิร์ฟเวอร์ภายนอก ดังนั้นวิธีนี้จะเพิ่มปริมาณงานโดยใช้กลไกการโฮสต์ระหว่างกระบวนการแบบง่าย

โฮสต์โมเดลใน ASP.NET Core

ASP.NET เป็นเทคโนโลยีจาก Microsoft ที่ให้คุณสร้างหน้าแบบไดนามิกบนฝั่งเซิร์ฟเวอร์

โฮสติ้ง ASP.NET ถูกรวมเข้ากับซอฟต์แวร์ที่ใช้ Windows รวมถึงระบบปฏิบัติการเอง เทคโนโลยีนี้ถือว่าค่อนข้างปลอดภัยและเชื่อถือได้รวมถึงใช้งานง่าย ส่วนใหญ่จะใช้สำหรับการพัฒนาผลิตภัณฑ์ในแอป

รูปแบบการโฮสต์ใน ASP.NET Core นั้นมีสองประเภท ได้แก่ การโฮสต์ระหว่างดำเนินการและการโฮสต์นอกกระบวนการ ก่อน ASP.Net Core 2.2 มีเพียงโฮสติ้งรูปแบบเดียวเท่านั้นซึ่งเป็นโฮสติ้งที่ไม่อยู่ในกระบวนการ แต่เนื่องจากประสิทธิภาพจึงมีการแนะนำโมเดลโฮสติ้งแบบ In-Process โฮสติ้งใน Asp.net core 2.2 รุ่น

แนะนำโมเดลการโฮสต์ระหว่างดำเนินการใน Asp.net Core

ASP.NET Core รุ่นก่อนหน้านี้จำเป็นต้องใช้โฮสต์โฮสต์แอปพลิเคชันใน IIS โดยใช้โมเดลการโฮสต์นอกกระบวนการที่พร็อกซีผ่าน IIS คำร้องขอที่กดปุ่ม IIS หรือ IIS Express จะถูกส่งต่อไปยัง ASP.NET Core เว็บแอปพลิเคชันที่ทำงานภายใน Kestrel Web Server อย่างไรก็ตามด้วยการโฮสต์ระหว่างกระบวนการใหม่เซิร์ฟเวอร์เดียวเท่านั้นที่ใช้สำหรับการโฮสต์เช่น IIS, Nginx หรือ Linux หมายความว่าแทนที่จะส่งต่อคำขอไปยัง Kestrel การใช้งานเว็บเซิร์ฟเวอร์ใหม่ (IISHttpServer) จะถูกโฮสต์โดยตรงภายใน IIS Application Pool ที่จะให้บริการการร้องขอ ด้วย ASP.NET Core 3.1 โมเดลการโฮสต์ระหว่างดำเนินจะถูกใช้เป็นโมเดลเริ่มต้นเมื่อใดก็ตามที่คุณพัฒนาแอปพลิเคชันใหม่โดยใช้เทมเพลตที่มีอยู่

เห็นได้ชัดว่าโฮสติ้งรุ่นนี้มีปริมาณงานและการเพิ่มประสิทธิภาพสูงมากเมื่อเปรียบเทียบกับโมเดลการโฮสต์นอกกระบวนการ

รูปแบบการโฮสต์นอกกระบวนการ

ในโมเดลการโฮสต์นอกกระบวนการคุณสามารถใช้เซิร์ฟเวอร์ Kestrel โดยตรงเป็นคำขอของผู้ใช้ที่หันหน้าไปทางเซิร์ฟเวอร์หรือคุณสามารถปรับใช้แอปพลิเคชันใน IIS ซึ่งจะทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์และส่งคำขอไปยังเซิร์ฟเวอร์ Kestrel ภายใน ในรูปแบบการโฮสต์ประเภทนี้คุณมีสองตัวเลือกสำหรับการโฮสต์เช่นการใช้ Kestrel และ Proxy Server:

1. การใช้ชวา

ในเรื่องนี้ Kestrel เองทำหน้าที่เป็นเซิร์ฟเวอร์ขอบซึ่งผู้ใช้เซิร์ฟเวอร์ร้องขอโดยตรงซึ่งหมายความว่าเราสามารถใช้เซิร์ฟเวอร์ Kestrel สำหรับแอปพลิเคชันเท่านั้น

2. การใช้พร็อกซีเซิร์ฟเวอร์

เนื่องจากข้อ จำกัด ของเซิร์ฟเวอร์ Kestrel ทำให้ไม่สามารถใช้สิ่งนี้กับแอปพลิเคชันทั้งหมด ในกรณีเช่นนี้เราต้องใช้เซิร์ฟเวอร์ที่ทรงพลังเช่น IIS, Apache หรือ NGINX ดังนั้นในสถานการณ์นี้เซิร์ฟเวอร์นี้ทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์สำรองที่จะเปลี่ยนเส้นทางทุกคำขอไปยัง Kestrel ภายในเซิร์ฟเวอร์ที่แอปพลิเคชันทำงานอยู่ ที่นี่มีเซิร์ฟเวอร์สองตัวเช่น IIS และ Kestrel กำลังทำงาน

โมเดลการโฮสต์นี้เป็นโมเดลเริ่มต้นสำหรับแอปพลิเคชันทั้งหมดที่ใช้. NET Core 2.2 เวอร์ชันก่อนหน้า ข้อ จำกัด อย่างหนึ่งของการใช้งานประเภทนี้เช่นประสิทธิภาพการทำงานช้า

ความคิดสุดท้าย:

ตามข้อเท็จจริงแล้ว  บริษัท พัฒนาเว็บ ASP.Net   ส่วนใหญ่ต้องการใช้รูปแบบการโฮสต์ในกระบวนการ เนื่องจากมันใช้ทรัพยากรน้อยลงและให้ประสิทธิภาพที่ดี เนื่องจากไม่จำเป็นต้องมีกระบวนการเพิ่มเติมสำหรับ Kestrel และยังหลีกเลี่ยงการสื่อสารเพิ่มเติมระหว่าง IIS และ Kestrel อย่างไรก็ตามมีบางกรณีที่อาจต้องการเลือกการโฮสต์นอกกระบวนการเช่นในกรณีการโฮสต์เว็บแอปพลิเคชันเดียวกันใน Windows และ Linux เมื่อพูดถึงการโฮสต์แอปพลิเคชันบนแพลตฟอร์มอื่น Kestrel เป็นกลไกหลักที่ใช้จัดการคำขอ HTTP บนแพลตฟอร์มทั้งหมด

อย่างไรก็ตามการรัน In-Process บน IIS เป็นวิธีที่ดีที่สุดยกเว้นว่าคุณมีข้อกำหนดเฉพาะสำหรับ Kestrel

เครดิตภาพหลัก: ภาพถ่ายโดย Farzad Nazifi บน Unsplash




ความคิดเห็น (0)

ทิ้งข้อความไว้