เรื่องของ Managed Code
เมื่อเราทำงานกับ .NET Framework เราจะได้เจอกับคำว่า “Managed code” ในเอกสารนี้จะอธิบายความหมายของคำนี้รวมถึงข้อมูลต่าง ๆ ที่เกี่ยวข้องที่ต้องรู้
เพื่อให้ง่ายต่อความเข้าใจ ว่า Managed code คืออะไร ให้คำจำกัดความง่าย คือ Code ที่ทำงานภายใต้การจัดการของ Runtime ซึ่งการหมายถึง Common Language Runtime หรือ CLR ไม่ว่าจะเป็น .NET Framework .NET Core หรือ Mono ก็ตาม CLR มีหน้าที่ในการ compiling Managed code ให้เป็น Machine Code และทำการ และสั่งให้ทำงาน ซึ่งใน CLR นั้นมีบริการต่าง ๆ ที่สำคัญให้ เช่น Automatic Memory management , security boundaries, type safety เป็นต้น
ในทางตรงกันข้าม ในวิถีของการทำงาน C/C++ ในที่นี้เราเรียกว่า Unmanaged code ซึ่งในโลกของ Unmanaged code นั้น Operating System มีหน้าที่ load และ run โปรแกรม นอกจากนี้โปรแกรมเมอร์จะต้องจัดการเอง เช่น เรื่องการใช้การจอง Memories จะต้องจองและคืนเอง เป็นต้น
สำหรับ Managed Code นั้นเขียนขึ้นจากภาษาระดับสูง (high-level language ) ที่สามารถประมวลผลบน .NET ได้ เช่น C# , Visual Basic, F# และอื่น ๆ เมื่อเราทำการ Compile Code ที่เขียนขึ้นจากภาษาเหล่านี้ด้วย Complier ของ Managed Code เราจะยังไม่ได้ Machine code เลย สิ่งที่ได้เราจะเรียกว่า Intermediate Language Code ซึ่งจะต้องถูกแปลงเป็น Machine Code ด้วย CLR อีกครั้งหนึ่ง แต่ C++ นั้นเป็นภาษาหนึ่งที่ถูกยกเว้นจากข้อกำหนดดังกล่าวข้างต้น เนื่องจากมันสามารถที่จะ Compile ออก มาเป็น Machine code หรือ Unmanage binaries และประมวลผลบน Windows ได้เลย (ไม่ต้องทำงานบน CLR) ตามภาพ
