.NET Core - การดำเนินการรหัส
ในบทนี้เราจะทำความเข้าใจกระบวนการเรียกใช้งานของ. NET Core และเปรียบเทียบกับ. NET Framework กระบวนการดำเนินการที่มีการจัดการประกอบด้วยขั้นตอนต่อไปนี้
- การเลือกคอมไพเลอร์
- รวบรวมรหัสของคุณเป็น MSIL
- การรวบรวม MSIL เป็นรหัสดั้งเดิม
- กำลังรันโค้ด
การเลือกคอมไพเลอร์
เป็นสภาพแวดล้อมการดำเนินการหลายภาษารันไทม์รองรับประเภทข้อมูลและคุณสมบัติภาษาที่หลากหลาย
เพื่อให้ได้ประโยชน์จากรันไทม์ภาษาทั่วไปคุณต้องใช้คอมไพเลอร์ภาษาอย่างน้อยหนึ่งภาษาที่กำหนดเป้าหมายรันไทม์
รวบรวมรหัสของคุณเป็น MSIL
การคอมไพล์แปลซอร์สโค้ดของคุณเป็น Microsoft Intermediate Language (MSIL) และสร้างข้อมูลเมตาที่จำเป็น
ข้อมูลเมตาอธิบายประเภทในโค้ดของคุณรวมถึงคำจำกัดความของแต่ละประเภทลายเซ็นของสมาชิกแต่ละประเภทสมาชิกที่โค้ดของคุณอ้างอิงและข้อมูลอื่น ๆ ที่รันไทม์ใช้ในเวลาดำเนินการ
รันไทม์ค้นหาและแยกข้อมูลเมตาจากไฟล์และจากไลบรารีคลาสเฟรมเวิร์ก (FCL) ตามต้องการในระหว่างการดำเนินการ
การรวบรวม MSIL เป็น Native Code
ในขณะดำเนินการคอมไพเลอร์แบบ just-in-time (JIT) จะแปล MSIL เป็นโค้ดเนทีฟ
ในระหว่างการคอมไพล์นี้โค้ดจะต้องผ่านกระบวนการตรวจสอบที่ตรวจสอบ MSIL และข้อมูลเมตาเพื่อดูว่าโค้ดนั้นสามารถระบุได้ว่าเป็นประเภทที่ปลอดภัยหรือไม่
รันโค้ด
รันไทม์ภาษาทั่วไปจัดเตรียมโครงสร้างพื้นฐานที่ช่วยให้การดำเนินการเกิดขึ้นและบริการที่สามารถใช้ระหว่างการดำเนินการ
ในระหว่างการดำเนินการรหัสที่ได้รับการจัดการจะได้รับบริการต่างๆเช่นการรวบรวมขยะความปลอดภัยความสามารถในการทำงานร่วมกันกับรหัสที่ไม่มีการจัดการการสนับสนุนการดีบักข้ามภาษาและการสนับสนุนการปรับใช้และการกำหนดเวอร์ชัน
.NET Core Code Execution Process
ตอนนี้เรามาดูว่าโค้ดดำเนินการกับ. NET Core อย่างไรเมื่อเทียบกับ. NET Framework ใน. NET Core มีการแทนที่ส่วนประกอบเหล่านี้มากมายที่เป็นส่วนหนึ่งของ. NET Framework
ใน. NET Core ตอนนี้เรามีคอมไพเลอร์ชุดใหม่เช่นเรามี Roslyn สำหรับ C # และ VB
คุณยังสามารถใช้คอมไพเลอร์ F # 4.1 ใหม่ได้หากคุณต้องการใช้ F # กับ. NET Core
จริงๆแล้วเครื่องมือเหล่านี้แตกต่างกันและเราสามารถใช้ Roslyn กับ. NET Framework ได้เช่นกันหากเราใช้ C # 6 หรือใหม่กว่าเนื่องจากคอมไพเลอร์ C # รองรับได้สูงสุดถึง C # 5 เท่านั้น
ใน. NET Core เราไม่มีไลบรารีคลาสเฟรมเวิร์ก (FCL) ดังนั้นจึงใช้ไลบรารีชุดอื่นและตอนนี้เรามี CoreFx แล้ว
CoreFx คือการนำไลบรารีคลาสมาใช้ใหม่สำหรับ. NET Core
เรายังมีเวลารันใหม่กับ. NET Core ที่เรียกว่า CoreCLR และใช้ประโยชน์จาก JIT Compiler
ตอนนี้คำถามคือเหตุใดเราจึงนำส่วนประกอบเหล่านี้มาใช้ใหม่ทั้งหมดที่เรามีอยู่แล้วใน. NET framework
ดังนั้นคำตอบก็เหมือนกับสาเหตุที่ Microsoft ใช้. NET Core