ورک‌لودها در دات‌نت

👀 ورک‌لود توی دات‌نت چیه؟
ورک‌لود‌های دات‌نت مجموعه‌ای از اجزای اختیاری SDK هستن که برای توسعه انواع خاصی از برنامه‌ها مورد استفاده قرار می‌گیرن. به زبون ساده‌تر، به جای نصب یک SDK بزرگ که همه چیز رو شامل بشه، می‌تونیم فقط اجزای مورد نیاز برای پروژه خودمون را نصب کنیم.

مثال: aspire یا macos یا tvos یا maui-tizen

✍️ تاریخچه و دلیل ایجاد ورک‌لود‌ها
توی نسخه‌های قبل از دات‌نت ۵، تمام قابلیت‌ها در قالب یک SDK یکپارچه (مونولیتیک) ارائه می‌شد. این رویکرد مشکلات متعددی داشت:

  • حجم زیاد SDK و مشکلات توزیع
  • زمان طولانی ساخت محصول
  • پیچیدگی توی مدیریت و به‌روزرسانی
  • مصرف منابع غیرضروری توی محیط‌ CI/CD

📌 اهداف اصلی معرفی ورک‌لود‌ها
مایکروسافت با معرفی ورک‌لود‌ها، چند هدف کلیدی رو دنبال کرد:

  • امکان دانلود انتخابی قابلیت‌های مورد نیاز (مثلاً فقط ASP.NET Core یا فقط Xamarin)
  • ساده‌سازی پیکربندی برای محیط‌های CI/CD
  • ارائه پیام‌های خطای مفید هنگام نبود ورک‌لود مورد نیاز
  • قابلیت نصب خودکار ورک‌لود‌ها بر اساس فایل پروژه
  • امکان به‌روزرسانی ورک‌لود‌ها بدون نیاز به نصب نسخه جدید SDK (مثلا aspire رو به‌روز کنیم مستقل از سایر SDKها)

ساختار و ترکیب‌بندی

ورک‌لود‌ها از دو بخش اصلی تشکیل شده‌اند:

*️⃣مانیفست: فایلی که ورک‌لود و اجزاش رو توصیف می‌کنه
*️⃣پک‌ها: مجموعه فایل‌های فشرده‌شده شامل ابزارها، کتابخونه‌ها و منابع مورد نیاز

⌛ شروع به کار:
برای دیدن لیست ورک‌لودها و انتخاب از بینشون:

dotnet workload search

یا برای آپدیت کردن ورک‌لودها:

dotnet workload update

یا مثلا وقتی می‌خواین ورک‌لود لازم برای ساختن نرم‌افزار روی تلویزیون سامسونگ مجهز به تایزن رو نصب کنین:

dotnet workload install maui-tizen

🛫 آینده ورک‌لود‌ها

طبق برنامه مایکروسافت، در آینده:

*️⃣تمام قابلیت‌های دات‌نت (از جمله WPF و Windows Forms) به صورت ورک‌لود ارائه خواهند شد
*️⃣امکان نصب و مدیریت از طریق مدیریت‌کننده‌های بسته لینوکس فراهم می‌شه
*️⃣ابزارهای CLI برای مدیریت ورک‌لود‌ها گسترش پیدا می‌کنن

🚀 مدیریت نسخه‌های ورک‌لود با Workload Sets
یکی از ویژگی‌های مهم که از دات‌نت ۸.۰.۴۰۰ معرفی شد، قابلیت Workload Sets بود. این قابلیت به ما امکان می‌ده مجموعه‌ای از ورک‌لود‌ها رو با یک شماره نسخه مشخص مدیریت کنیم.

مزایای استفاده از Workload Sets

  • کنترل بهتر روی نسخه‌های نصب شده
  • اطمینان از سازگاری ورک‌لود‌ها با همدیگه
  • همگام‌سازی آسون‌تر نسخه‌ها توی تیم توسعه
  • مدیریت ساده‌تر به‌روزرسانی‌ها

مثال کاربردی:

dotnet workload install aspire --version 9.0.100-preview.7.24414.1
dotnet workload config --update-mode workload-set

حتی می‌تونیم توی global.json هم درجشون کنیم:

{
  "sdk": {
    "workloadVersion": "9.0.200-preview.0"
  }
}

🧮جمع‌بندی
ورک‌لود‌های دات‌نت نشونه‌ی تکامل طبیعی پلتفرم و حرکت به سمت ماژولار شدن هرچه بیشترش هستن. و این رویکرد به ما این امکان رو میده تا محیط توسعه‌مون رو بهینه‌تر و سبک‌تر نگه داریم و فقط ابزارهای مورد نیازمون رو نصب کنیم.

و NET Aspire. اساسا بر پایه‌ی workloadها بنا شد و چابکی خودش رو وامدار workloadها است، و با رهانش (release)های مستقل از دات‌نت خودش رو مرتب بهبود داده تا امروز…

امیدوارم این مطلب به درک بهتر ورک‌لود کمک کرده باشه و بتونه به عنوان خونه‌های پازل کمک کنه تا Aspire رو بهتر درک کنید.

🔗مدخل مستندات رسمی
🔗داستان پیدایش توی گیت‌هاب و توسعه دات‌نت

💬 اگر سوالی دارید، حتماً طرح کنید!

دیدگاهتان را بنویسید