با توجه به انتشار سالانه دات نت مایکروسافت، زمان آن فرا رسیده است که درباره تغییراتی که باید در کد خود ایجاد کنید فکر کنید.
داشتن یک چرخه انتشار قابل پیش بینی برای .NET خوب است. در روزهای قدیم دات نت فریم ورک، نسخه های منتشر شده بسیار اندک بود و تغییرات اغلب ناچیز بود. این خیلی بد نبود، اما داشتن پلتفرم توسعه با چرخه انتشار ویندوز گاهی اوقات به معنای انتظار سال ها برای ویژگی های وعده داده شده بود.
با انتقال به یک پلتفرم منبع باز، در ابتدا با توسعه موازی .NET Core و کلاس های پایه .NET Standard و در نهایت با ادغام .NET، همه چیز تغییر کرد. اکنون نسخه سالانه دات نت را دریافت می کنیم که به رویداد NET Conf در ماه نوامبر، با ۱۸ ماه پشتیبانی از نسخه های STS (پشتیبانی استاندارد مدت) و سه سال پشتیبانی از نسخه های LTS (پشتیبانی طولانی مدت). نسخه های فرد .NET STS و نسخه های زوج LTS هستند.
نسخه بعدی NET LTS
نسخه بعدی .NET، در نوامبر ۲۰۲۳، NET 8 خواهد بود. به عنوان یک نسخه LTS، .NET 8 حداقل تا دو سال آینده به نسخه پیش فرض دات نت بسیاری از سازمان ها تبدیل خواهد شد. .NET 7 تغییرات زیادی را به ارمغان آورد، و این نسخه جدید بر روی آنها ساخته شده است، در حالی که ویژگی های جدید بیشتری را اضافه می کند. ارزش آن را دارد که با نسخههای پیشنمایش کنونی زمان بگذرانید تا ببینید که چگونه درگاههای کد موجود به نسخه جدید منتقل میشود و تعیین کنید چه تغییراتی ممکن است لازم باشد انجام دهید.
از آنجایی که پلت فرم دات نت به تکامل خود ادامه می دهد، مایکروسافت در حال ایجاد تغییرات زیادی در کامپایلر اصلی برای پشتیبانی از قابلیت ها و ویژگی های زبان جدید است که عمدتاً در نسخه جدید C# ظاهر می شود.
بهبود جمع آوری زباله NET
یک API جدید بسیار جالب است، حداقل اگر در حال ساخت کد دات نت برای برنامه های کاربردی ابری هستید که روی پلتفرم هایی مانند Kubernetes اجرا می شوند. اکنون می توانید با استفاده از جمع آوری زباله دات نت، محدودیت حافظه را برای یک برنامه کاربردی تغییر دهید. این امکان را فراهم میکند تا مصرف منابع برنامه را بهصورتی که تقاضا دیکته میکند، افزایش و کاهش دهیم. وقتی تقاضا کم است، برنامهها میتوانند به حداقل کاهش یابند و مطمئن شوند که برای منابعی که به آن نیاز ندارید، پولی پرداخت نمیکنید.
ارتقای JSON
نحوه مدیریت NET سریالسازی و سریالزدایی JSON نیز با افزودن پشتیبانی از انواع عددی جدید از جمله ساختار نیمه جدید. این یک نوع float16 IEEE را پیادهسازی میکند، بنابراین هنگام تحویل دادهها به مدلهای یادگیری ماشینی باید مفید باشد. اعداد نیمه دقیق با سختافزار ممیز شناور مورد استفاده در شتابدهندههای سختافزار و NPU و همچنین دستورالعملهای عددی جدیدی که اخیراً به پردازندههای اینتل اضافه شدهاند، نزدیکتر هستند و استفاده از ابزارهای محاسباتی GPU را آسانتر میکنند. عادی سازی مقادیر عددی تا نیمه دقیق در سریال سازی باید به ابزارهایی مانند این اجازه دهد تا کارآمدتر کار کنند.
تیم دات نت، فراتر از افزودن پشتیبانی برای انواع جدید، کارهای زیادی روی ابزار JSON خود انجام داده است. روشهای جدید API نوشتن گرههای خاص در یک سند JSON را آسانتر میکنند، در حالی که سایر ویژگیها نحوه مدیریت محتوای JSON را توسط داتنت بهبود میبخشند. این بهروزرسانیها به اطمینان از یکپارچگی اسناد JSON و تقویت نقش .NET در توسعه ابری کمک میکنند، زیرا JSON اکنون رایجترین بار را هنگام فراخوانی APIهای REST نشان میدهد.
روش های جدید دات نت برای تصادفی بودن
یکی دیگر از حوزههای کلیدی برای بهروزرسانی، پشتیبانی از است. ابزارهای جدیدی که تصادفی بودن را فراهم می کنند. این مولد اعداد تصادفی آشنا نیست، بلکه یک راه مستقیم تر برای استفاده از تصادفی به عنوان انتخابگر در کد شماست. به جای اینکه محاسبات را انجام دهید، می توانید به طور تصادفی آیتم ها را از یک مجموعه ورودی انتخاب کنید و آنها را در یک آرایه خروجی آماده برای استفاده قرار دهید. ابزار به شما این امکان را می دهد که به طور تصادفی موارد را در مجموعه ای از داده ها به هم بزنید. مانند بسیاری از ویژگی های جدید دات نت، این می تواند هنگام کار با یادگیری ماشین مفید باشد. به عنوان مثال، به هم زدن دادههای شما آسانتر میشود، به طوری که دادههای آموزشی و آزمایشی هر بار که یک مدل میسازید متفاوت باشد، و خطر سوگیری در دادههای شما را کاهش میدهد.
مجموعهای از ابزارهای رمزنگاری جدید مرتبط با این موضوع است که پشتیبانی از SHA-3 را به عنوان جایگزینی برای SHA-2 اضافه میکند. بهبود هش همیشه مهم است، زیرا به شما کمک می کند کد خود را برای استانداردهای رمزنگاری آتی آماده کنید. دیگر ویژگیهای امنیتی بهبود یافته به این معنی است که اکنون میتوان به پروکسیهای وب از طریق HTTPS پرداخت و حریم خصوصی اتصالات بین برنامههای شما و بقیه اینترنت را بهبود بخشید.
.NET و سیلیکون نسل بعدی
برخی ویژگیهای جدید با پیشرفتهای سیلیکونی مرتبط هستند، بنابراین در همه پلتفرمها در دسترس نخواهند بود. اینها شامل ویژگیهای شتاب برداری است که بر روی مجموعه دستورالعمل Intel AVX-512. NET 8 یک پرچم برای آزمایش پشتیبانی از AVX ارائه میکند، بنابراین میتوانید کد مدیریت خطا را بنویسید تا از فراخوانی دستورالعملهای برداری جدید روی سختترهای قدیمیتر یا پردازندههای AMD یا Arm جلوگیری کنید. اگر سختافزار AVX-512 دارید، کامپایلر بهروزشده NET، عملکرد بهتری را در دستورالعملهای برداری و آرایه قدیمیتر به شما ارائه میدهد، زیرا همچنان میتوانند از ویژگیهای سختافزار جدیدتر استفاده کنند.
بعضی از بهروزرسانیها کمتر ساده به نظر میرسند، مانند ویژگی انتزاع زمان جدید. این به شما امکان میدهد یک ارائهدهنده زمان محلی ایجاد کنید که میتواند برای فعالیت در مناطق زمانی مختلف خارج از زمان محلی فعلی یا UTC تنظیم شود. این راهی برای ایجاد زمانهای ساختگی برای آزمایشها است، بنابراین میتوانید بهطور برنامهریزی منطقه زمانی را که یک برنامه در حال اجرا است کنترل کنید و به دنبال اشکالات مربوط به زمان و تایمر بگردید.
تغییرات قطعی در .NET 8
بزرگترین خطرات برای کد موجود شما ناشی از تغییرات شکسته NET 8 است. بسیاری از این موارد غافلگیر کننده نخواهند بود، زیرا نتیجه انحرافات برنامه ریزی شده یا تغییرات در زیرساخت های پشتیبانی هستند. در اینجا نباید مشکلات زیادی وجود داشته باشد، زیرا هر جا که تغییر کد لازم باشد، راهحلهایی در دسترس است.
از آنجایی که دات نت دیگر یک فناوری فقط ویندوز نیست، یکی از زمینه هایی که باعث ایجاد تعدادی از تغییرات می شود، تصاویر کانتینر همراه است. این تغییرات عمدتاً به دلیل نسخههای ارتقا یافته توزیعهای لینوکس میزبان (به عنوان مثال یک نسخه برآمده در میزبان دبیان) و همچنین تغییراتی است که تصاویر را کوچکتر و استفاده آسانتر میکند. برخی از بزرگترین تغییرات در Alpine هستند images، زیرا Alpine دیگر از Kerberos پشتیبانی نمیکند و محل ذخیره گواهیها را تغییر داده است. ۳ مگابایت ممکن است کاهش زیادی در اندازه تصویر کانتینر به نظر نرسد، اما وقتی تعداد تصاویری را که در طول چرخه عمر برنامه Kubernetes مستقر میشوند در نظر بگیرید، هر ۳ مگابایت باعث صرفهجویی قابل توجهی در پهنای باند میشود.
سایر تغییرات ناشی از درک بهتر وابستگیهای NET به کتابخانههای مشترک است. در جایی که مورد نیاز نیستند، دیگر شامل نمی شوند. این روی کد دات نت شما تأثیری نمی گذارد، اما ممکن است روی کدهای دیگری که در همان ظرف اجرا می شوند تأثیر بگذارد. بهترین روش ایزوله نگه داشتن عملکرد است، زیرا خطرات امنیتی را کاهش می دهد، بنابراین اگر از یک محفظه دات نت برای میزبانی کدهای دیگر استفاده می کنید، ایده خوبی است که برنامه خود را مجدداً معماری کنید تا مطمئن شوید که کد به درستی پارتیشن بندی شده است.
Microsoft لیست بهروزرسانیشدهای از تغییرات قطعی را ارائه میکند. اسناد پیشنمایش داتنت ۸ آن، نشان میدهد که تغییر در کدام پیشنمایش رخ داده است. بیشتر آنها در اولین پیشنمایش بودند و تنها تعداد انگشت شماری در آخرین نسخه اضافه شده بود. بسیاری از تغییرات رفتاری هستند. بنابراین در حالی که ممکن است ویژگیها حذف یا تغییر کرده باشند، باید بتوانید به روشهای جدیدتر کار یا روشهای جایگزین بروید.
مراقب فرمهای ویندوز باشید
یکی از زمینههای مهم برای نظارت، پیادهسازی فرمهای Windows .NET 8 است. مایکروسافت نحوه ارائه Windows Forms مقیاس پیکسل را تغییر داده است ، بنابراین قبل از ارائه ساختهای جدید به کاربران، باید رابطهای کاربری را آزمایش کنید. بعید است کد فرم خراب شود اما ممکن است به درستی نمایش داده نشود و تجربه کاربری ضعیفی را ارائه دهد. بخش عمده ای از این کار برای پشتیبانی از صفحه نمایش های DPI بالا است، و اطمینان حاصل می کند که فرم ها هنگام بزرگ شدن نمایشگرها به درستی رفتار می کنند.
در NET 8 چیزهای بیشتری از این نمای کلی سریع وجود دارد. برخی از ویژگی های جدید ساخت برنامه های از پیش کامپایل شده را آسان تر می کند، در حالی که برخی دیگر عملکرد سیلیکون اپل را بهبود می بخشد. با کنار هم قرار دادن همه اینها، .NET 8 به نظر می رسد به روز رسانی بزرگی برای نسخه LTS است. آنچه در اینجا به دست می آورید برای سه سال آینده برای رقابتی و ایمن نگه داشتن کد شما بیش از اندازه کافی خواهد بود – این همان چیزی است که از پلتفرمی مانند .NET می خواهید.
پست های مرتبط
ویژگی های جدید و تغییرات کلیدی در دات نت ۸
ویژگی های جدید و تغییرات کلیدی در دات نت ۸
ویژگی های جدید و تغییرات کلیدی در دات نت ۸