بررسی امکانات و ویژگی های .NET 11 rc 2
5 دقیقه
در نسخه Release Candidate 2 .NET 11، تغییرات و قابلیت های جدیدی با تمرکز بر سرعت، ابزارهای توسعه و ارتقای دسترسی پذیری معرفی شده اند. تغییرات صورت گرفته در Windows Forms، Blazor و زبان F#
MSBuild چند نخی (Multi-threaded MSBuild)
- حالت چند نخی (Multi-threaded) در MSBuild معرفی شده است که کارهای بیلد را به جای تخصیص به Processes مجزا، در Worker threads درون یک پردازش واحد اجرا می کند. این معماری زمان بیلد پروژه را تقریبا به نصف کاهش می دهد و روند توسعه را بسیار سریع تر می کند.
- حجم و زمان تولید فایل های ثبت رویداد باینری (Binlogs) به شدت کاهش یافته است. این فایل ها برای بررسی مشکلات سیستم بیلد توسط ابزارهای هوش مصنوعی (AI Agents) بسیار کاربردی هستند.
- متمرکز شدن پردازش ها در یک پردازش واحد نیازمند کاهش تخصیص حافظه (Allocations) و مدیریت بهتر منابع بوده است که در موتور MSBuild اعمال شده است.
ابزار مدیریت NetUp
- ابزار مستقل جدیدی به نام NetUp به صورت پیش نمایش عمومی عرضه شده است که جایگزین اسکریپت های نصب قدیمی در سیستم عامل های لینوکس و مک می شود.
- این ابزار به توسعه دهندگان اجازه می دهد SDK ها و Runtime های مختلف دات نت را به صورت متمرکز در سیستم نصب و مدیریت کنند و امکان حذف سریع نسخه های قدیمی را فراهم می کند.
- در تست پروژه هایی که از چندین نسخه پشتیبانی می کنند، NetUp می تواند فقط Runtime های لازم را دانلود کند و نیازی به نصب SDK های سنگین و کامل نیست.
- این ابزار به عنوان یک برنامه کوچک و سریع با فناوری Native AOT توسعه یافته و به راحتی در محیط های یکپارچه سازی مداوم (CI/CD) با استفاده از GitHub Actions قابل پیاده سازی است.
بهبود WinForms
- تمرکز فرم های ویندوز در این به روز رسانی روی ارتقای سطح دسترسی پذیری (Accessibility) برای کاربران معلول حرکتی و صفحات لمسی است.
- با استفاده از حالت Visual Styles Mode، المان های کلاسیک رابط کاربری به ظاهری مدرن ارتقا پیدا می کنند. به عنوان مثال، چک باکس های بسیار کوچک 13 پیکسلی به Toggle Switch های بزرگ و دکمه ها به نوع Pop-up تبدیل می شوند تا برای کلیک یا لمس آسان تر باشند.
- متد جدید SuspendPainting معرفی شده است که با استفاده از آن می توانید تغییرات ظاهری کل فرم را در یک دامنه بسته (Scope) مدیریت کنید. با این متد فرم تنها یک بار رندر می شود تا از چشمک زدن (Flickering) ناشی از رندر شدن متوالی کنترل ها جلوگیری شود.
- گزینه Deferred Reveal اضافه شده است که از مشکل نمایش لحظه ای پس زمینه سفید رنگ (White Flash) در حالت تاریک (Dark Mode) پیش از کامل شدن گرافیک فرم جلوگیری می کند.
تغییرات اساسی در Blazor
- قابلیت های جدید مجازی سازی (Virtualization): کامپوننت مجازی سازی اکنون از لیست هایی با آیتم های دارای ارتفاع متغیر (Variable Height) پشتیبانی می کند. همچنین Anchor Modes مانند Start و End اضافه شده اند تا با افزوده شدن محتوای جدید به ابتدا یا انتهای یک لیست بلند، موقعیت اسکرول صفحه تغییر نکند و پرش نداشته باشد.
- توسعه رندرینگ استاتیک سمت سرور (Static SSR): کامپوننت QuickGrid هم اکنون به صورت کامل و بدون نیاز به ارتباط تعاملی (Interactive render mode) در حالت استاتیک نیز کار می کند. علاوه بر آن، فرم های استاتیک سرور اکنون از اعتبارسنجی سمت کلاینت (Client-side validation) از طریق اسکریپت های توکار بلیزور پشتیبانی می کنند تا نیازی به تغییر حالت رندر نباشد.
- توقف خودکار (Auto Pause) در Blazor Server: برای افزایش مقیاس پذیری سرور، بلیزور سرور می تواند اتصال هایی (Circuits) را که در تب های پنهان مرورگر هستند و توسط کاربر دیده نمی شوند شناسایی کرده و آن ها را در حالت توقف قرار دهد. این کار منابع سرور را آزاد کرده و به محض بازگشت کاربر به تب، اتصال به طور خودکار Resume می شود.
ارتقاء زبان F# و کامپایلر
- میزان تخصیص حافظه (Allocations) در کامپایلر زبان اف شارپ در برخی پروژه ها تا 50 درصد کاهش پیدا کرده است.
- تخصیص حافظه برای توابع کتابخانه ای با استفاده از متد درون خطی کردن (Inlining) کدهای مسدود کننده (Closures) به صفر بایت کاهش یافته است.
- قابلیت SRTP در حالت پیش نمایش، اکنون از Extension Members و Operators روی انواع داده هایی که مالک آن ها نیستید پشتیبانی می کند.
- State Machines جدید .NET در اختیار توسعه دهندگان کتابخانه ها قرار گرفته اند تا سرعت پردازش کدهای Async را در زبان اف شارپ بهبود دهند.
- صفت جدید RequireNamedArguments اضافه شده است تا کامپایلر را موظف کند جلوی خطاهای وارد کردن پارامترهای هم نوع و جابجا شده را در کدهای فراخوانی بگیرد.
- عملیات های مرتبط با آرایه های دو بعدی (Array2D) اکنون برای قابلیت Native AOT بهینه سازی شده اند تا برنامه بدون بروز خطاهای کامپایل اجرا شود.
- Inner loop: حلقه توسعه داخلی، زمان حد فاصل بین نوشتن کد، بیلد کردن پروژه و مشاهده نتیجه روی صفحه نمایش توسط برنامه نویس است.
- Binlog: فایل های ثبت وقایع باینری که اطلاعات بسیار جامعی از مراحل بیلد شدن پروژه در سیستم را برای تحلیل و عیب یابی در خود نگه می دارند.
- Runtime: محیط اجرایی دات نت که وظیفه اجرای کدهای کامپایل شده در سیستم عامل را بر عهده دارد.
- Native AOT: فناوری کامپایل پیش از موعد (Ahead-of-Time) که کدهای برنامه را مستقیما به زبان ماشین ترجمه می کند تا سرعت اجرای اولیه به حداکثر برسد.
- Virtualization: تکنیکی در طراحی رابط کاربری که برای بهینه سازی مصرف منابع سخت افزاری، فقط آیتم های لیست که در دیدرس کاربر هستند را رندر می کند.
- Static SSR: رندر استاتیک سمت سرور، فرآیندی که در آن صفحات وب به صورت فایل های HTML پردازش شده و ارسال می شوند و نیازی به ارتباط زنده کلاینت و سرور ندارند.
- Circuits: مدارهای ارتباطی زنده (اکثرا بر پایه WebSockets) که وضعیت مشترک و تعاملات بین مرورگر و سرور را در برنامه های بلیزور سرور مدیریت می کنند.
- Closures: کدهای مسدود کننده تابعی هستند که وضعیت و متغیرهای محدوده بیرونی خود را در حافظه به خاطر می سپارند و اغلب باعث تخصیص حافظه پنهان سیستم می شوند.
- SRTP: مخفف Statically Resolved Type Parameters، پارامترهای نوع که در زمان کامپایل حل و فصل می شوند و برای برنامه نویسی عمومی با سرعت بالا در F# کاربرد دارند.