ฟีเจอร์ของ .NET 7 - การดีพลอย Native AOT
(dotnetstuffs.com)- .NET AOT คืออะไร?
- การดีพลอย Native AOT
ตอนนี้ .NET 7 สามารถสร้างเนทีฟโค้ดขนาดเล็กระดับ 2MB สำหรับแอปพลิเคชันคอนโซลบน Windows, Linux และ macOS ได้โดยไม่ต้องมี .NET runtime และสามารถรันได้โดยไม่มีการพึ่งพาเพิ่มเติม
5 ความคิดเห็น
macOS ที่ .NET 7 ยังไม่รองรับ จะได้รับการรองรับอย่างเป็นทางการใน .NET 8
https://learn.microsoft.com/en-us/dotnet/…
เมื่อดูจากเอกสารทางการของ Microsoft ฟีเจอร์นี้มีข้อจำกัดเพิ่มเติมอยู่พอสมควร นอกเหนือจากข้อจำกัดพื้นฐานที่มาจากการคอมไพล์เป็นเนทีฟล่วงหน้า เนื่องจากยังอยู่ในช่วงเริ่มต้นของการพัฒนา ตอนนี้ยังใช้กับแอป ASP.NET Core ไม่ได้ ต้องอาศัยการรองรับในระดับไลบรารี และยังมีข้อจำกัดด้านการดีบักกับการทำโปรไฟล์อยู่ด้วย อีกทั้งสถาปัตยกรรม CPU ที่รองรับมีแค่ x64 และ ARM64 เท่านั้น จึงยังไม่สามารถสร้างแอปสำหรับ Windows แบบ 32 บิตได้ และอีกจุดที่น่าสนใจก็คือ ฟีเจอร์นี้สามารถใช้สร้าง static library ที่นำไปใช้จากแอปที่ไม่ใช่ .NET ได้ด้วย
ตอนที่ MS เปิดตัว .NET 7 ก็พูดถึงมันว่าเป็น“แพลตฟอร์มสำหรับแอป cloud-native” และยังเพิ่มความสามารถในการดีพลอยแอปเป็น Docker containerเข้ามาด้วย จึงคาดได้ว่าการรองรับ AOT ก็น่าจะถูกเพิ่มมาเป็นเครื่องมือสำหรับปรับแต่งขนาดอิมเมจและเวลาเริ่มต้นของแอปแบบคอนเทนเนอร์เหล่านี้ให้เหมาะสมขึ้น แต่ในเมื่อการรองรับ ASP.NET Core เองยังอยู่ระหว่างการพัฒนา กว่าฟีเจอร์นี้จะฉายแสงได้อย่างแท้จริงในแอป cloud-native ก็คงต้องรอไปอีกสักพัก
อ้างอิง:
ขอบคุณสำหรับคำตอบที่เป็นกันเองครับ
แอปพลิเคชันคอนโซลได้ก้าวพ้นช่วงพรีวิวไปสู่สถานะรีลีสอย่างเป็นทางการแล้ว และสามารถใช้พัฒนาแอปพลิเคชันจริงได้
อย่างที่คุณบอกไว้ เนื่องจากยังอยู่ในระยะเริ่มต้น จึงยังไม่รองรับ ASP.NET Core, WPF, Windows Form หรือ WinUI
อีกทั้งก็ยังไม่ตอบโจทย์ความต้องการในการดีพลอยผ่าน Docker container ด้วย เพราะยังไม่รองรับ ASP.NET Core
เช่นเดียวกับที่คุณกล่าวไว้ เนื่องจากมันถูกคอมไพล์เป็น native code จึงไม่สามารถใช้ความสามารถส่วนใหญ่ของ Reflector ได้ ดูเหมือนว่าส่วนนี้จะไม่ใช่ข้อจำกัดที่เกิดจากความเป็นระยะเริ่มต้น แต่เป็นเพราะคุณลักษณะที่แตกต่างกันระหว่างโค้ด IL กับ native code
ความหมายของ NativeAOT ในปัจจุบันน่าจะเป็นการที่สามารถดีพลอย native code ล้วนแบบไม่มี dependency ได้อย่างยอดเยี่ยมบน Windows, Linux และ macOS อย่างน้อยในระดับของแอปพลิเคชันคอนโซล
ไม่ใช่ macOS ครับ อย่างที่เห็นได้จากเอกสาร Microsoft Learn ที่ผมลิงก์ไว้ ตอนนี้แพลตฟอร์มที่รองรับฟีเจอร์นี้มีเพียง Windows และ Linux เท่านั้น ส่วน macOS ก็คงจะถูกเพิ่มเข้ามาทีหลัง
แม้เวลาจะช่วยแก้ปัญหานี้ได้ แต่ผมคิดว่าฟีเจอร์นี้น่าจะยังมีหลายกรณีที่นำไปใช้ในงานจริงได้ยากอยู่
ถูกต้องแล้ว ตอนนี้ยังไม่รองรับ macOS