CodeShot
Native AOT1 دقیقه مطالعه

Native AOT در دات‌نت چیست؟

کامپایل کردن برنامه دات‌نت مستقیم به کد ماشین بومی هنگام Build (Ahead-of-Time)، بدون نیاز به JIT یا نصب Runtime دات‌نت روی سرور مقصد.

چرا مهم است؟

Native AOT زمان استارتاپ برنامه را به‌شدت کاهش می‌دهد و اندازه نهایی را کوچک‌تر می‌کند — مهم برای Serverless/Container که هر میلی‌ثانیه استارتاپ و هر مگابایت Image اهمیت دارد.

تعریف

به‌صورت پیش‌فرض، برنامه دات‌نت به IL (زبان میانی) کامپایل و هنگام اجرا توسط JIT به کد ماشین تبدیل می‌شود؛ با Native AOT، این تبدیل هنگام Build انجام می‌شود و خروجی یک فایل اجرایی مستقل و بومی است.

فعال‌سازی

<!-- .csproj -->
<PropertyGroup>
    <PublishAot>true</PublishAot>
</PropertyGroup>
dotnet publish -c Release

مزایا

  • استارتاپ بسیار سریع‌تر: مناسب Serverless (Azure Functions) و Containerهای Scale-to-Zero.
  • Image کوچک‌تر: بدون نیاز به کل Runtime دات‌نت داخل Container.
  • مصرف حافظه کمتر.

محدودیت‌ها

  • Reflection پویا (مثلاً بعضی سناریوهای Serialization قدیمی) محدود یا نیازمند تنظیم اضافه است.
  • همه کتابخانه‌های شخص ثالث هنوز کاملاً سازگار با AOT نیستند؛ باید تست شود.

اشتباه رایج

❌ فعال‌کردن Native AOT برای یک برنامه بزرگ با وابستگی سنگین به Reflection پویا (مثل بعضی ORMها یا فریمورک‌های قدیمی‌تر) بدون تست کامل — ممکن است برنامه Build شود اما هنگام اجرا با خطای Runtime مربوط به Reflection مواجه شود؛ همیشه بعد از فعال‌سازی AOT، کل مسیرهای اصلی برنامه را تست کنید.

منبع و مطالعه بیشتر

خلاصه

Native AOT برنامه دات‌نت را هنگام Build مستقیم به کد ماشین بومی کامپایل می‌کند، با استارتاپ سریع‌تر و Image کوچک‌تر، مناسب Serverless/Container. بعد از فعال‌سازی، حتماً کل مسیرهای اصلی برنامه (به‌خصوص Reflection) را تست کنید. مرجع کامل: Native AOT deployment، Microsoft Learn.

این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←