Προγραμματισμός

Τι νέο υπάρχει στο Microsoft .NET 5

Ο υποψήφιος δεύτερης έκδοσης της Microsoft για το .NET 5 έφτασε στις 13 Οκτωβρίου, φέρνοντας τη συγχώνευση του .NET Framework και του .NET Core ένα βήμα πιο κοντά στην ολοκλήρωση. Η νέα ενοποιημένη πλατφόρμα .NET αναμένεται να διατεθεί γενικά στις 10 Νοεμβρίου 2020.

Η Microsoft περιγράφει το Release Candidate 2 ως μια σχεδόν τελική έκδοση και την τελευταία από δύο RC. Ένα αρχικό 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 περιλαμβάνουν υποστήριξη για τη δημιουργία εφαρμογών cloud υψηλής απόδοσης, ταχύτερους αλγόριθμους στο BCL, καλύτερη υποστήριξη για κοντέινερ στο χρόνο εκτέλεσης και υποστήριξη για HTTP3. Το .NET 5.0 περιλαμβάνει υποστήριξη για τη δυαδική μορφή WebAss Assembly, μέσω των βιβλιοθηκών Mono runtime και .NET. Διατίθεται επίσης ένα σύνολο σχολιασμών με δυνατότητα ακύρωσης αναφοράς.

Το .NET 5 υπόσχεται επίσης να επιτρέψει στους προγραμματιστές να εντοπίζουν αυτόματα λανθάνοντα σφάλματα στον κώδικα. Άλλα νέα χαρακτηριστικά περιλαμβάνουν το Ήμισυ τύπος, ένα δυαδικό κυμαινόμενο σημείο που καταλαμβάνει 16 bit και περικοπή συναρμολόγησης, το οποίο κόβει τα αχρησιμοποίητα συγκροτήματα για να μειώσει το μέγεθος των εφαρμογών. Επισημαίνεται επίσης η προσαρμοσμένη περικοπή. Η νέα αντιστοίχιση μοτίβων στο C # 9 καλύπτει σχεσιακά, λογικά και απλά μοτίβα τύπων. Η επιλογή ανάπτυξης του ClickOnce υποστηρίζεται πλέον για εφαρμογές .NET 5.0 Windows και .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, αποκτά βελτιώσεις που κυμαίνονται από την ενεργοποίηση ορισμένων οριακών ελέγχων έως τη βελτίωση της αναπαραγωγής και βελτιώσεις για την απομάκρυνση των περιττών μηδενικών inits. Επίσης, στο Ryujit περιλαμβάνονται τα βασικά στοιχεία υλικού ARM64 και η βελτιστοποίηση API.

Το .NET 5 Preview 6, κυκλοφόρησε στις 25 Ιουνίου, κατάργησε την ενσωματωμένη υποστήριξη για το WinRT (Windows Runtime), μια συλλογή API για τη δημιουργία εφαρμογών Universal Windows Platform. Αυτή είναι μια σπάνια αλλαγή. Οι εφαρμογές .NET Core 3.x που χρησιμοποιούν WinRT πρέπει να μεταγλωττιστούν εκ νέου. Οι ομάδες .NET και Windows εργάζονται για να αλλάξουν τον τρόπο με τον οποίο λειτουργεί το WinRT με τα Windows, αντικαθιστώντας την υποστήριξη WinRT με την αλυσίδα εργαλείων C # / WinRT στο .NET 5. Το C # / WinRT είναι ένα πακέτο εργαλείων συσκευασμένο με NuGet που προσφέρει υποστήριξη προβολής WinRT για το C #.

Άλλες αλλαγές στο .NET 5 Προεπισκόπηση 6:

  • Το .NET 5 Preview 6 SDK περιλαμβάνει υποστήριξη για φόρμες Windows σε συσκευές Windows ARM64. Οι εργασίες συνεχίζονται για την προσθήκη υποστήριξης για το Windows Presentation Foundation σε Windows ARM64.
  • Οι βελτιώσεις ποιότητας κώδικα RyuJIT καλύπτουν τον χειρισμό δομή και τη βελτιστοποίηση για την αφαίρεση περιττών μηδενικών αρχικοποιήσεων. Επίσης, έχει σημειωθεί πρόοδος στη βελτιστοποίηση εγγενούς υλικού ARM64 καθώς και στη βελτίωση του δημιουργημένου κώδικα για το ARM64, με το μέγεθος του κώδικα να μειώνεται.
  • Τα σχέδια υποστήριξης πλατφόρμας έχουν ενημερωθεί.

Το .NET 5 Preview 5, που κυκλοφόρησε στις 10 Ιουνίου, περιέχει τις ακόλουθες νέες δυνατότητες:

  • Ο μεταγλωττιστής RyuJIT JIT διαθέτει ταχύτερη, φορητή εφαρμογή βοηθητικών προγραμμάτων tailcall. Το JIT ζητά τη βοήθεια του χρόνου εκτέλεσης όποτε συνειδητοποιεί ότι θα χρειαστεί έναν βοηθό για να πραγματοποιήσει μια κλήση. Επίσης για το RyuJIT, έχει σημειωθεί συνεχής πρόοδος στην υλοποίηση του υλικού ARM64. Άλλες βελτιώσεις στο RyuJIT περιλαμβάνουν καλύτερη ταχύτητα σε μια περίπτωση που επηρέαζε την τακτική συλλογή έκφρασης και βελτιωμένη απόδοση αρχιτεκτονικής Intel.
  • Οι εξαγωγές για εγγενή δυαδικά αρχεία με κλήσεις σε κώδικα .NET έχουν ενεργοποιηθεί. Το βασικό στοιχείο αυτής της δυνατότητας φιλοξενεί υποστήριξη API για UnManagedCallersOnlyAttribute. Το έργο εγγενών εξαγωγών επιτρέπει την έκθεση προσαρμοσμένων εγγενών εξαγωγών. Δεν απαιτεί τεχνολογία υψηλότερου επιπέδου όπως το COM και είναι πολλαπλής πλατφόρμας.
  • DirectoryServices.Protocols Η υποστήριξη επεκτείνεται σε Linux και MacOS.
  • Υποστηρίζεται τώρα η διανομή Alpine 3.12 Linux.

Μπορείτε να πραγματοποιήσετε λήψη του υποψηφίου έκδοσης .NET 5.0 από το dot.net.microsoft.com.

Το .NET 5 Preview 4, που κυκλοφόρησε στις 19 Μαΐου, παρουσίασε τις ακόλουθες νέες δυνατότητες:

  • Υποστήριξη γλώσσας C # 9 και F # 5.
  • Βελτιωμένη απόδοση των tailcalls που χρησιμοποιούνται από το F #.
  • Βελτιωμένη απόδοση του ToUpperInvariant, string.ToLowerInvariantκαι συναφή μοτίβα.
  • Βελτιωμένη απόδοση HTTP 1.1 και HTTP 2.
  • Ένας βελτιωμένος μηχανισμός καταμέτρησης κλήσεων.
  • Δυναμική επέκταση του εσωτερικού γενικού λεξικού για την εξάλειψη των γκρεμών επιδόσεων που πλήττονται από γενικό κώδικα.
  • Ένας σωρός με καρφιτσωμένο αντικείμενο για να μειώσει τον κατακερματισμό του σωρού.
  • Εφαρμογές ενός αρχείου βασισμένες σε έναν νέο τύπο δημοσίευσης ενός αρχείου που εκτελεί μια εφαρμογή από ένα μόνο δυαδικό.

Οι βελτιώσεις στην προεπισκόπηση 3 .NET 5, που παρουσιάστηκαν στις 23 Απριλίου, περιλαμβάνουν τα εξής:

  • Η κλάση BitArray για τη διαχείριση μιας σειράς τιμών bit ενημερώθηκε για να συμπεριλάβει μια εφαρμογή που επιταχύνεται από το υλικό για το ARM64 χρησιμοποιώντας εγγενή ARM64. Οι βελτιώσεις απόδοσης του BitArray είναι σημαντικές, δήλωσε η Microsoft. Επιπλέον, η αντικατάσταση On Stack (OSR) στο CLR υλοποιήθηκε για να επιτρέψει την αλλαγή του κώδικα που εκτελείται με τρέχουσες μεθόδους στη μέση της εκτέλεσης μεθόδου, ενώ αυτές οι μέθοδοι είναι ενεργές "στο stack". Αυτή η δυνατότητα, για τη βελτίωση των χαρακτηριστικών απόδοσης της κλιμακωτής συλλογής, είναι πλέον μια πειραματική, δυνατότητα επιλογής στο x64. Μια άλλη βελτίωση για το RyuJIT βελτιώνει την ποιότητα κώδικα για δομές ως επιχειρήματα στις κλήσεις θέσης "tail call". Το RyuJIT αναμένεται επίσης να προσφέρει καλύτερη απόδοση των γενικών.
  • Η προσθήκη υποστήριξης για τη διατήρηση αναφορών προστέθηκε στο System.Txt.Json, επιτρέποντας τον χειρισμό βρόχου αναφοράς για σειριοποίηση JSON. Επίσης, υποστηρίζονται αμετάβλητες τάξεις και δομές για το JsonSerializer. Επίσης υποστηρίζεται τώρα ο χειρισμός μηδενικής αξίας.
  • Το .NET SDK τώρα θα αναφέρει αυτόματα το πακέτο NETFramework.ReferenceAssemblies NuGet σε ένα πλαίσιο στόχου .NET Framework σε ένα αρχείο έργου. Αυτή η αλλαγή επιτρέπει τη δημιουργία έργων .NET Framework σε ένα μηχάνημα χωρίς εγκατεστημένο ένα πακέτο στόχευσης .NET Framework. Αυτή η βελτίωση αφορά συγκεκριμένα τα πακέτα στόχευσης και δεν λαμβάνει υπόψη άλλες πιθανές εξαρτήσεις έργων.

Συγκεκριμένες βελτιώσεις στην προεπισκόπηση 2 .NET 5, που κυκλοφόρησε στις 2 Απριλίου, περιελάμβαναν:

  • Έχουν γίνει πολλές αλλαγές στο RyuJIT για να βελτιωθεί η ποιότητα του κώδικα του μηχανήματος που δημιουργήθηκε, συμπεριλαμβανομένων των διπλών μηδενικών αρχικοποιήσεων να εξαλειφθούν πιο επιθετικά και να ακυρωθούν οι βελτιστοποιήσεις πλαισίου.
  • Η συλλογή απορριμμάτων διακομιστή σε διαφορετικά νήματα μπορεί τώρα να κλέψει, ενώ επισημαίνει αντικείμενα gen0 / 1 που κρατούνται ζωντανά από αντικείμενα παλαιότερης γενιάς. Η εργασία κλοπής σε νήματα μειώνει τις προσωρινές παύσεις GC για σενάρια όπου ορισμένα νήματα GC χρειάστηκαν πολύ περισσότερο χρόνο για να επισημανθούν από άλλα. Επιπλέον, μέρος της δυνατότητας Pinned Object Heap (POH) έχει εφαρμοστεί, το τμήμα εσωτερικής συλλογής απορριμμάτων, για να επιτρέπεται στον συλλέκτη να διαχειρίζεται τα καρφιτσωμένα αντικείμενα ξεχωριστά. Αυτό αποφεύγει τις αρνητικές επιπτώσεις των καρφιτσωμένων αντικειμένων στους σωρούς γενεών.

Η προεπισκόπηση 1, που κυκλοφόρησε στις 16 Μαρτίου, περιελάμβανε τακτικές βελτιώσεις απόδοσης έκφρασης καθώς και βελτιώσεις ποιότητας κώδικα στο RyuJIT.

Λόγω της κυκλοφορίας παραγωγής τον Νοέμβριο του 2020, το .NET 5 θα περιλαμβάνει:

  • ASP.NET Core, ένα πλαίσιο ανοιχτού κώδικα για εφαρμογές Ιστού.
  • Τεχνολογία πρόσβασης δεδομένων Entity Framework Core.
  • WinForms.
  • WPF (Windows Presentation Foundation).
  • Μοντέλο συσκευής εφαρμογών για κινητά Xamarin.
  • ML.NET.

Η Microsoft είπε ότι το .NET 5 θα παρέχει μια ενιαία, ενοποιημένη πλατφόρμα για τη δημιουργία οποιουδήποτε τύπου εφαρμογής. Η εταιρεία κατευθύνει το ήμισυ της επισκεψιμότητας στην κυκλοφορία της ιστοσελίδας της .NET σε μια έκδοση .NET 5 ως δοκιμαστική περίπτωση, χρησιμοποιώντας την εξισορρόπηση φορτίου Azure.

Η Microsoft συνιστά στους προγραμματιστές να δημιουργήσουν νέες εφαρμογές με το .NET Core 3.1 και στη συνέχεια να τις μετεγκαταστήσουν στο .NET 5. Η εταιρεία σημείωσε ότι οι εφαρμογές .NET Framework μπορούν να παραμείνουν στο .NET Framework, το οποίο θα παραμείνει υποστηριζόμενο για όσο διάστημα τα ίδια τα Windows υποστηρίζονται.