.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