מה חדש ב- Microsoft .NET 5

המועמד השני של מיקרוסופט לשחרור .NET 5 הגיע ל- 13 באוקטובר, מקרב את המיזוג של .NET Framework ו- .NET Core צעד אחד לסיום. פלטפורמת ה- NET המאוחדת החדשה אמורה להיות זמינה באופן כללי ב -10 בנובמבר 2020. 

מיקרוסופט מתארת ​​את Release Candidate 2 כמהדורה כמעט סופית ואת האחרונה של שני RCs. RC ראשוני פורסם ב- 13. בספטמבר. ניתן להוריד את המועמד לשחרור .NET 5.0 מ- dotnet.microsoft.com.

יעדים ברמה גבוהה עבור .NET 5 כוללים מתן חוויה מאוחדת של .NET SDK, עם BCL יחיד (ספריית מחלקה בסיסית) בכל יישומי .NET 5, ותמיכה ביישומים מקומיים וברשתות ברחבי מערכות הפעלה מרובות. פרויקט יישום מקומי יחיד של .NET 5 יתמוך ביעדים כמו Windows, Microsoft Duo (Android) ו- Apple iOS באמצעות פקדים מקוריים בפלטפורמות אלה.

יעדים נוספים של .NET 5 כוללים תמיכה בבניית יישומי ענן בעלי ביצועים גבוהים, אלגוריתמים מהירים יותר ב- BCL, תמיכה טובה יותר במכולות בזמן הריצה ותמיכה ב- HTTP3. .NET 5.0 כולל תמיכה בפורמט הבינארי WebAssembly, באמצעות זמן הריצה מונו וספריות .NET. קבוצה של הערות מסוג התייחסות בטלות מוצגת גם כן.

.NET 5 מבטיח גם לאפשר למפתחים למצוא באגים סמויים בקוד באופן אוטומטי. תכונות חדשות אחרות כוללות את Halfהסוג, נקודה צפה בינארית שתופסת 16 סיביות, וגיזום הרכבה, הגוזם מכלולים שאינם בשימוש כדי להפחית את גודל היישומים. גם זמירה מותאמת אישית מודגשת. התאמת תבנית חדשה ב- C # 9 מכסה דפוסי יחס, לוגיים ופשוטים. אפשרות הפריסה של ClickOnce נתמכת כעת עבור יישומי .NET 5.0 ויישומי .NET Core 3.1.

פלטפורמת .NET החדשה מבטיחה גם שיפורי ביצועים. עלון הנוגע לתצוגה מקדימה 7, שהגיע ליום 21 ביולי, מכיר בכ -250 בקשות משיכה מוכוונות ביצועים ב- .NET 5 ומציין כי הפתעה נעימה צפויה לאלה שעוקבים אחר ביצועי .NET Core. 

תוספות ושיפורים נוספים שצוינו בעלון .NET 5 Preview 7:

  • ממשק ה- API החדש של System.text.json JSON מספק את היכולת להתעלם מערכי ברירת מחדל של מאפייני סוג ערך בעת סדרת סדר, שימושי להפחתת עלויות סידור ועלויות חוט. זהו שינוי שבור. בנוסף עבור System.text.json נוספה היכולת להתמודד עם הפניות מעגליות בעת סדרת סדרה, כאשר צורת ה- API צפויה להיות סופית.
  • איסוף האשפה חושף כעת נתונים מפורטים על האוסף האחרון, תוך שימוש GetGCMemoryInfoבשיטה, המחזירה GCMemoryInfoמבנה. GCMemoryInfoמגיש מידע אודות זיכרון מכונה וערמה והאוסף העדכני ביותר, או האוסף האחרון מסוג ה- GC שצוין - ארעיים, חסימה מלאה או רקע. מקרי השימוש הסבירים ביותר עבור API זה הם רישום / ניטור או כדי לציין לאיזון עומסים שיש להוציא מכונה את הסיבוב כדי לבקש GC מלא. שינוי GC נוסף, בינתיים, נעשה כדי לדחות את פעולת הזיכרון המאופסת היקרה למצבים עם זיכרון נמוך.
  • Ryujit, מחולל קוד ההרכבה של .NET, זוכה לשיפורים החל מאפשרות ביטול של כמה בדיקות גבולות ועד לשיפור כפילות זנב ושיפורים להסרת אפסים מיותרים. בנוסף, Ryujit מציג את מהות החומרה של ARM64 ואת אופטימיזציית ה- API.

.NET 5 Preview 6, שפורסם ב -25 ביוני, הסיר תמיכה מובנית ב- WinRT (Windows Runtime), אוסף ממשקי API לבניית יישומי פלטפורמת Windows אוניברסלית. זהו שינוי שבור; יש לאסוף מחדש את יישומי .NET Core 3.x המשתמשים ב- WinRT. צוותי .NET ו- Windows פעלו לשינוי אופן העבודה של WinRT עם Windows, והחליפו את תמיכת WinRT בשרשרת הכלים C # / WinRT ב- .NET 5. C # / WinRT הוא ערכת כלים ארוזת NuGet המציעה תמיכה בהקרנת WinRT ל- C #.

שינויים אחרים ב- .NET 5 Preview 6: 

  • .NET 5 Preview 6 SDK כולל תמיכה בטפסים של Windows במכשירי Windows ARM64. העבודה נמשכת להוספת תמיכה ב- Windows Presentation Foundation ב- Windows ARM64.
  • שיפורי איכות קוד RyuJIT מכסים את הטיפול באופטימיזציה כדי להסיר אתחול האפס המיותר. כמו כן, חלה התקדמות באופטימיזציה פנימית של חומרה ARM64 כמו גם בשיפור הקוד שנוצר עבור ARM64, עם גודל קוד מופחת.
  • תוכניות תמיכה בפלטפורמה עודכנו.

תצוגה מקדימה של .NET 5, שפורסמה ב -10 ביוני, מכילה את התכונות החדשות הבאות:

  • למהדר ה- RyuJIT JIT יש יישום מהיר ונייד יותר של עוזרי שיחות הזנב. ה- JIT מבקש את זמן הריצה לעזרה בכל פעם שהוא מבין שהוא זקוק לעוזר לביצוע שיחת זנב. גם עבור RyuJIT, חלה התקדמות מתמשכת ביישום הפנימיות של חומרה ARM64. שיפורים אחרים ב- RyuJIT כוללים מהירות טובה יותר במקרה שהשפיע על אוסף הביטויים הסדירים ושיפור ביצועי האדריכלות של אינטל.
  • הופעל ייצוא עבור בינאריות מקוריות עם שיחות לקוד .NET. אבן הבניין של יכולת זו מארחת תמיכה ב- API UnManagedCallersOnlyAttribute. פרויקט הייצוא המקומי מאפשר חשיפה של ייצוא מותאם אישית. זה לא דורש טכנולוגיית אינטרופ ברמה גבוהה יותר כמו COM והיא חוצה פלטפורמות.
  • DirectoryServices.Protocols התמיכה מורחבת ללינוקס ו- MacOS.
  • הפצת לינוקס Alpine 3.12 כעת נתמכת.

את המועמד לשחרור .NET 5.0 ניתן להוריד מ- dot.net.microsoft.com.

NET 5 תצוגה מקדימה 4, שפורסמה ב -19 במאי, הציגה את היכולות החדשות הבאות:

  • תמיכה בשפות C # 9 ו- F # 5.
  • ביצועים משופרים של שיחות זנב המשמשות את F #.
  • ביצועים משופרים של ToUpperInvariant, string.ToLowerInvariantודפוסים קשורים.
  • ביצועים משופרים של HTTP 1.1 ו- HTTP 2.
  • מנגנון ספירת שיחות משופר.
  • הרחבה דינמית של המילון הגנרי הפנימי לחיסול צוקי ביצועים שנפגעו מקוד כללי.
  • ערמת עצמים מוצמדת להפחתת פיצול הערימה.
  • יישומי קבצים בודדים המבוססים על סוג חדש של פרסום קבצים בודדים המבצע יישום מתוך בינארי יחיד.

השיפורים בתצוגה המקדימה 3 של .NET 5, שנחשפה 23 באפריל, כוללים את הדברים הבאים: 

  • מחלקת BitArray לניהול מערך ערכי סיביות עודכנה וכללה יישום מואץ חומרה עבור ARM64 תוך שימוש בפנימיות ARM64. שיפורי הביצועים של BitArray הם משמעותיים, אמרה מיקרוסופט. בנוסף, החלפת On Stack (OSR) ב- CLR יושמה כדי לאפשר לשנות קוד המבוצע על ידי שיטות הפועלות כעת באמצע ביצוע השיטה, בעוד ששיטות אלה פעילות "על מחסנית". יכולת זו, לשיפור מאפייני הביצועים של אוסף מדורג, מהווה כעת תכונה ניסיונית להצטרפות ב- x64. שיפור נוסף עבור RyuJIT משפר את איכות הקוד עבור סטרוקטורות כטיעונים בשיחות מיקום "זנב זנב". RyuJIT צפויה גם להציע ביצועים טובים יותר של גנריות. 
  • התוספת של תמיכה בשימור הפניות נוספה ל- System.Txt.Json, מה שמאפשר טיפול בלולאת הפניה לסידור JSON. כמו כן, שיעורים ותווים בלתי ניתנים לשינוי נתמכים כעת עבור JsonSerializer. כמו כן נתמך כעת הטיפול בערכי null.
  • .NET SDK כעת יפנה אוטומטית לחבילה של NETFramework.ReferenceAssemblies NuGet בהינתן מסגרת יעד של .NET Framework בקובץ פרויקט. שינוי זה מאפשר בנייה של פרויקטים של .NET Framework במכונה ללא חבילת מיקוד של .NET Framework. שיפור זה ספציפי לחבילות מיקוד ואינו מתחשב בתלות אפשרית אחרת בפרויקט.

שיפורים ספציפיים בתצוגה מקדימה 2 של .NET, שפורסמו ב -2 באפריל, כללו: 

  • מספר שינויים בוצעו ב- RyuJIT בכדי לשפר את איכות קוד המכונה שנוצר, כולל כפולות אתחול אפסים שהוסרו בצורה אגרסיבית יותר ואופטימיזציות של תיבות שהופעלו הופעלו קודם לכן.
  • איסוף זבל של שרתים בשרשורים שונים יכול כעת לגנוב תוך כדי סימון אובייקטים gen0 / 1 המוחזקים על ידי אובייקטים מהדור הישן. עבודה בגניבת חוטים מקצרת השהיות ארעיות של GC לתרחישים שבהם לקח לשרשורי GC מסוימים זמן רב יותר מאשר לאחרים. בנוסף, יושם חלק מתכונת ערימת האובייקטים הצמודה (POH), החלק הפנימי לאיסוף אשפה, כדי לאפשר לאספן לנהל אובייקטים מוצמדים בנפרד. זה מונע את ההשפעות השליליות של עצמים מוצמדים על ערימות הדורות.

תצוגה מקדימה 1, שפורסמה ב -16 במרץ, כללה שיפורים בביצועי הביטוי הרגיל וכן שיפור באיכות הקוד ב- RyuJIT.

בשל מהדורת ההפקה בנובמבר 2020, .NET 5 אמור לכלול:

  • ASP.NET Core, מסגרת קוד פתוח ליישומי אינטרנט.
  • טכנולוגיית גישה לנתוני ליבת Framework.
  • WinForms.
  • WPF (Windows Presentation Foundation).
  • דגם מכשיר האפליקציה לנייד Xamarin.
  • ML.NET.

מיקרוסופט אמרה כי .NET 5 תספק פלטפורמה אחת ומאוחדת לבניית כל סוג של יישום. החברה מכוונת מחצית מהתעבורה לתעבורת האתר שלה .NET לגרסת .NET 5 כמקרה מבחן, באמצעות איזון עומסים בתכלת הרקיע. 

מיקרוסופט ממליצה למפתחים לבנות יישומים חדשים עם .NET Core 3.1 ואז להעביר אותם ל-. NET 5. החברה ציינה כי ניתן להשאיר יישומי .NET Framework ב- .NET Framework, שיישארו נתמכים כל עוד תומכת ב- Windows עצמה.