ความสามารถนี้ถูกปล่อยออกมาตั้งแต่ .NET 7
ทำให้สามารถ deploy ระบบที่พัฒนาโดยไม่ต้องมี .NET Runtime ใด ๆ
โดยทำการ compile ไปเป็น native codeให้เลย
หรือเรียกว่า Self-contained app
ผลที่ตามมาคือ
- Startup time เร็วขึ้น
- ใช้ memory น้อยลง
ดังนั้นเหมาะมากต่อระบบที่ต้องการรับ load เยอะ ๆ
เพื่อให้ scale ได้ง่าย ด้วย resource ที่ใช้น้อยลงอีก
รวมทั้ง environment ที่มี resource จำกัดหรือน้อย เช่นพวก Serverless เป็นต้น
แต่ก็ยังมีข้อจำกัดในเรื่องของ library/dependency ที่ใช้งานได้อยู่
ใน .NET 8 preview 1 ที่เพิ่มปล่อยออกมาให้ทดลองใช้งานนั้น
ก็ได้ทำการปรับปรุงการ build
ทำให้ขนาดของไฟล์ที่ได้นั้น มีขนาดเล็กลงไปอีก
ข้อจำกัดของ native AOT มีคร่าว ๆ ดังนี้
- ตอนนี้ใช้ได้กับ console app เท่านั้น ดังนั้นพวก web, api ยังไม่ได้นะ รอไปก่อน
- ไม่ support เรื่องต่าง ๆ เช่น dynamic loading, c++, runtime code generation
ดังนั้นมาลองใช้กันหน่อย
ขั้นตอนที่ 1 ทำการสร้าง console project ขึ้นมา
ขั้นตอนที่ 2 ทำการเพิ่ม config ใน profile file เพื่อทำการ publish แบบ AOT
[gist id="30d9e48ea48b11257da405f5b2552f77" file="2.txt"]ขั้นตอนที่ 3 ทำการ build และ publish ได้เลย ขนาดของไฟล์ที่ได้จากตัวอย่างนี้ คือ 8.3 MB
[gist id="30d9e48ea48b11257da405f5b2552f77" file="1.txt"]เพียงเท่านี้ก็ทำการ publish .NET project แบบ AOT ได้แล้ว
Reference Websites