ورود

View Full Version : اولویت نسخه SDK نسبت به Runtime در dotnet



tifaa.com
چهارشنبه 16 خرداد 1403, 04:42 صبح
در دات نت برای ساخت اپلیکشن از SDK و برای اجرا از Runtime استفاده میشه
که هر دو باید یک ورژن باشند مثلا هر دو دات نت 7 یا هر دو دات نت 8 باشند
مثلا در این لینک (https://dotnet.microsoft.com/en-us/download/dotnet/8.0) ، خود دات نت 8 نیز ورژن های مختلفی داره که SDK و Runtime با ورژن های متفاوت قابل اجرا هستند.

مثلا
SDK 8.0.1 --> Runtime 8.0.6
SDK 8.0.6 --> Runtime 8.0.1

در هر کدام از ورژن ها Security patch های مختلفی اضافه شده

سوال
حالا برای اینکه وصله های امنیتی به اپلیکیشن اضافه شوند اگر فقط نسخه Runtime آپدیت شود کافیست؟ یا باید با SDK جدیدتر نیز دوباره کامپایل شوند؟
برعکسش هم هست اگر با SDK جدیدتر کامپایل شد و Runtime با نسخه قبل اجرا شد چطور؟

bitasoft.ir
چهارشنبه 06 فروردین 1404, 03:01 صبح
در دات‌نت، SDK و Runtime اولویت‌های متفاوتی دارند و برای اعمال وصله‌های امنیتی، بسته به وضعیت هر دو، نکات زیر اهمیت دارند:
۱. فقط Runtime آپدیت شود (بدون تغییر SDK و بدون Recompile)✅ اگر فقط Runtime را به نسخه جدیدتر آپدیت کنید (مثلاً Runtime 8.0.6 در حالی که برنامه با SDK 8.0.1 ساخته شده است):


در بیشتر موارد، وصله‌های امنیتی در Runtime اعمال می‌شوند و برنامه بدون نیاز به Recompile از این بهبودها بهره می‌برد.

این روش برای برنامه‌های انتشار یافته (Production) امن‌تر است، زیرا نیازی به تغییر در سورس‌کد و بیلد مجدد نیست.

اما اگر SDK جدید قابلیت خاصی در خروجی باینری تأثیرگذار باشد (مثلاً بهینه‌سازی‌های جدید در JIT یا Garbage Collector)، بهتر است SDK را هم به‌روز کنید.

۲. فقط SDK آپدیت شود (و برنامه با SDK جدیدتر کامپایل شود ولی روی Runtime قدیمی اجرا شود)❌ اگر برنامه را با SDK جدیدتر (مثلاً SDK 8.0.6) کامپایل کنید ولی روی Runtime قدیمی‌تر (مثلاً Runtime 8.0.1) اجرا شود:


ممکن است برنامه به درستی اجرا نشود، چون ویژگی‌های جدید SDK ممکن است به APIهایی نیاز داشته باشند که در Runtime قدیمی‌تر وجود ندارند.

خطای ناسازگاری نسخه یا رفتار غیرمنتظره ممکن است رخ دهد.

۳. بهترین روش: هم SDK و هم Runtime آپدیت شوند راهکار توصیه‌شده این است که هم SDK و هم Runtime را به‌روز کنید، برنامه را دوباره کامپایل کنید، و نسخه‌ی جدید را منتشر کنید. این کار تضمین می‌کند که:


وصله‌های امنیتی Runtime روی برنامه اعمال می‌شوند.

بهینه‌سازی‌های جدیدی که در SDK پیاده‌سازی شده‌اند، در عملکرد و امنیت برنامه تأثیر مثبت دارند.

از مشکلات ناسازگاری بین SDK و Runtime جلوگیری می‌شود.

نتیجه‌گیری اگر فقط Runtime آپدیت شود: معمولاً کافی است و برنامه از وصله‌های امنیتی بهره می‌برد.
اگر فقط SDK آپدیت شود ولی Runtime ثابت بماند: احتمال ناسازگاری وجود دارد.
بهترین روش: هم SDK و هم Runtime را به‌روز کنید و برنامه را دوباره کامپایل کنید.
برای بررسی نسخه‌های دات‌نت و سازگاری بین SDK و Runtime، می‌توانید از این لینک (https://www.a00b.com) استفاده کنید.


در دات نت برای ساخت اپلیکشن از SDK و برای اجرا از Runtime استفاده میشه
که هر دو باید یک ورژن باشند مثلا هر دو دات نت 7 یا هر دو دات نت 8 باشند
https://www.a00b.com/Nw/FakeData.htm
مثلا در این لینک (https://dotnet.microsoft.com/en-us/download/dotnet/8.0) ، خود دات نت 8 نیز ورژن های مختلفی داره که SDK و Runtime با ورژن های متفاوت قابل اجرا هستند.

مثلا
SDK 8.0.1 --> Runtime 8.0.6
SDK 8.0.6 --> Runtime 8.0.1

در هر کدام از ورژن ها Security patch های مختلفی اضافه شده

سوال
حالا برای اینکه وصله های امنیتی به اپلیکیشن اضافه شوند اگر فقط نسخه Runtime آپدیت شود کافیست؟ یا باید با SDK جدیدتر نیز دوباره کامپایل شوند؟
برعکسش هم هست اگر با SDK جدیدتر کامپایل شد و Runtime با نسخه قبل اجرا شد چطور؟