مایکروسافت .NET 11 پیش‌نمایش 6 را منتشر کرد. این نسخه شامل مجموعه‌ای از بهبودهای معماری و پایداری برای .NET MAUI است؛ از جمله آوردن CollectionView2 به ویندوز، بازپیاده‌سازی Shell اندروید با هندلرها، ارتقای سازگاری با Native AOT و پشتیبانی از بازیابی نتایج MediaPicker در اندروید.

CollectionView2 (CV2) به ویندوز آمد

بزرگ‌ترین تغییر رابط کاربری، ورود CollectionView2 (CV2) به پلتفرم ویندوز است. هندلر جدید ویندوز از WinUI ItemsRepeater استفاده می‌کند تا پیاده‌سازی CV2 در ویندوز با نمونه‌های اندروید، iOS و Mac Catalyst هم‌راستا شود. این هندلر چینش‌های خطی و شبکه‌ای MAUI را به چینش‌های مجازی‌سازی‌شوندهٔ WinUI نگاشت می‌کند و امکانات زیر را فراهم می‌سازد:

  • گروه‌بندی و انتخاب آیتم‌ها
  • هدر، فوتر و نمایش حالت خالی
  • snapping و بارگذاری افزایشی (incremental loading)
  • ادغام با RefreshView برای بارگذاری مجدد محتوا

Shell اندروید: مهاجرت به هندلرها

در اندروید، Shell بازپیاده‌سازی شده و اکنون از هندلرهای استاندارد MAUI استفاده می‌کند: ShellHandler، ShellItemHandler و ShellSectionHandler جایگزین کلاس‌های مبتنی بر رندرر شده‌اند. بسیاری از اجزا رفتار مشترکی با FlyoutViewHandler و TabbedPage خواهند داشت. این تغییر فعلاً تنها روی اندروید اعمال شده و iOS و Mac Catalyst همچنان از رندررهای قبلی بهره می‌برند؛ بنابراین اپلیکیشن‌هایی که رفتار Shell را به‌صورت سفارشی تغییر داده یا به رندررها وابسته‌اند باید Preview 6 را با دقت تست کنند تا ناسازگاری احتمالی شناسایی شود.

حالت جدید Shell و CollectionView در MAUI

Native AOT و HybridWebView

فرآیند جایگزینی زیرساخت‌های قدیمی Xamarin.Forms با هندلرها و تولیدکنندهٔ کد منبع ادامه دارد. برای کنترل‌های هیبریدی، ارتباط JavaScript در HybridWebView اکنون به‌جای reflection از یک source generator استفاده می‌کند؛ این رویکرد هشدارهای trimming و مشکلات AOT را کاهش می‌دهد و امکان استفاده در برنامه‌های کاملاً trimmed و Native AOT را فراهم می‌آورد. در اندروید نیز پیام‌های جاوااسکریپت براساس منبع فیلتر می‌شوند تا پیام‌های غیرمرتبط (مثل window.postMessage از فریم‌های تو در تو) به‌عنوان پیام بومی گزارش نشوند.

تغییرات در Geolocation و MediaPicker

Preview 6 یک خصوصیت جدید MinimumDistance به GeolocationListeningRequest اضافه می‌کند تا اعلان موقعیت صرفاً زمانی ارسال شود که دستگاه به مسافت مشخصی (متر) جابه‌جا شود. همچنین اندروید APIهایی برای بازیابی نتایج MediaPicker دریافت کرده است: این APIها امکان بازیابی نتایج قبلی، منتظر ماندن برای تکمیل فرایند یا پاک‌سازی نتایج را زمانی که سیستم در حال بازتولید فرآیند برنامه (process recreation) است، فراهم می‌کنند.

حذف بالقوهٔ بستهٔ Compatibility

یکی از تغییرات بالقوهٔ ناسازگار، حذف بستهٔ NuGet Microsoft.Maui.Controls.Compatibility است. پروژه‌هایی که صراحتاً این بسته را مرجع کرده یا به رندررهای سازگاری وابسته‌اند باید قبل از مهاجرت به .NET 11 این موضوع را بررسی کنند. برنامه‌هایی که تنها به Microsoft.Maui.Controls ارجاع می‌دهند معمولاً تحت تأثیر قرار نمی‌گیرند، زیرا برخی انواع پایهٔ compatibility هنوز در اسمبلی اصلی نگه داشته شده‌اند.

رفع باگ‌ها و نکات پلتفرم

Preview 6 شامل اصلاحات متعدد در CollectionView، Shell، سبک‌دهی Android Material 3، تولید کد XAML، دسترسی‌پذیری و بخش‌هایی از platform essentials است. بارک‌های کاری اپل اکنون هدف‌گیری Xcode 26.6 را دارند و .NET for Android رفتار خطاها و لغو (cancellation) در HTTP را بیشتر مطابق قرارداد کلی HttpClient همگام کرده است.

دسترسی و تست نسخهٔ پیش‌نمایش

Preview 6 به‌صورت بستهٔ پیش‌نمایش runtime و ابزارها در دسترس است. جزئیات نصب، یادداشت‌های انتشار و فهرست مسائل مرتبط با MAUI را می‌توانید در صفحهٔ رسمی مایکروسافت و یادداشت‌های GitHub ملاحظه کنید. توصیه می‌شود توسعه‌دهندگان پیش از مهاجرت نهایی، تغییرات مربوط به Shell و حذف بستهٔ compatibility را در سناریوهای واقعی و کدهای سفارشی خود آزمایش کنند.

جمع‌بندی فنی

مهاجرت به هندلرها و استفاده از تولیدکنندهٔ کد منبع، نقشهٔ راه تبدیل زیرساخت‌های قدیمی Xamarin.Forms به MAUI مدرن را پی می‌گیرد. این روند بهبود پایداری، کاهش حجم و سازگاری بهتر با Native AOT را به‌همراه دارد. در نسخه‌های بعدی انتظار می‌رود این تغییرات تعمیم یابند و فرایند مهاجرت برنامه‌های قدیمی ساده‌تر شود.

منابع مرتبط: وب‌سایت رسمی .NET، مستندات MAUI و یادداشت‌های انتشار GitHub.