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

Νέες δυνατότητες και βελτιώσεις στο .Net Framework 4.5

Το Microsoft .Net Framework έχει ωριμάσει πολύ τα τελευταία χρόνια. Νέες δυνατότητες και βελτιώσεις έχουν εισαχθεί άφθονα για να βελτιστοποιηθεί και να γίνει γρήγορη, ασφαλής, πιο σταθερή και υψηλή απόδοση. Σε αυτό το άρθρο θα ήθελα να παρουσιάσω μια πανοραμική άποψη των σημαντικών βελτιώσεων στο .Net Framework 4.5.x.

Οι φοβισμένες εξαιρέσεις Μνήμης

Αυτό είναι ένα φοβερό σφάλμα και μπορεί να γίνει εφιάλτης για εσάς. Οι εξαιρέσεις εκτός μνήμης μπορούν να τερματίσουν τη ροή ελέγχου της εφαρμογής σας ακόμα και όταν έχετε εγκαταστήσει αρκετή φυσική μνήμη. Αστειεύεσαι? Με τιποτα! Επιτρέψτε μου να εξηγήσω γιατί μπορεί να συμβεί αυτό και πώς αντιμετωπίστηκε αυτό το ζήτημα στο .Net Framework 4.5.

Τα αντικείμενα που δημιουργούνται από το διαχειριζόμενο περιβάλλον αποθηκεύονται στο σωρό. Για μια χρονική περίοδο ο σωρός μπορεί να κατακερματιστεί λόγω της δημιουργίας και της αφαίρεσης των αντικειμένων. Ο κατακερματισμός αναφέρεται σε τρύπες μνήμης (ελεύθερη μνήμη) που είναι διάσπαρτες. Σε μια τέτοια περίπτωση, θα παρατηρούσατε συχνά εξαιρέσεις εκτός μνήμης εάν η εφαρμογή σας χρησιμοποιεί μεγάλη ποσότητα μνήμης και επειδή ο χρόνος εκτέλεσης θα ήταν ανίκανος να εκχωρήσει χώρο όταν και αν χρειαστεί, ακόμη και αν υπάρχει διαθέσιμος χώρος.

Ακουγεται περιεργο? Λοιπόν, το άθροισμα των οπών μνήμης μπορεί να είναι αρκετό για αυτό το αίτημα, αλλά καθώς αυτές οι οπές μνήμης είναι διάσπαρτες, ο χρόνος εκτέλεσης δεν μπορεί να τις χρησιμοποιήσει.

Συμπύκνωση σωρού μεγάλου αντικειμένου κατά παραγγελία

Η συμπίεση σωρού μεγάλου αντικειμένου κατ 'απαίτηση εισήχθη πρόσφατα για τη συμπίεση του σωρού και την εξάλειψη του κατακερματισμού σωρού. Συμπύκνωση σημαίνει συμπίεση όλων αυτών των διάσπαρτων οπών μνήμης σε ένα μπλοκ. Αυτή η δυνατότητα είναι διαθέσιμη (μόνο κατά παραγγελία) από το .Net Framework 4.5.1 για τον περιορισμό των ζητημάτων εξαίρεσης εκτός μνήμης. Για να ενεργοποιήσετε αυτήν τη δυνατότητα, πρέπει να ορίσετε την ιδιότητα LargeObjectHeapCompactionMode.

Παρεμπιπτόντως, αυτή η ιδιότητα μπορεί να έχει μία από τις δύο τιμές: Προεπιλογή και CompactOnce. Το πρώτο εάν το σύνολο θα αγνοούσε τη συμπίεση του σωρού μεγάλου αντικειμένου κατά τη διάρκεια ενός κύκλου GC. Εάν χρησιμοποιήσετε το τελευταίο, ο μεγάλος σωρός αντικειμένων θα συμπιεστεί κατά τον επόμενο κύκλο.

Υποστήριξη για το ADO.Net Connection Resiliency

Δεν χρειάζεται πλέον να γράφετε κώδικα για να εφαρμόσετε την ανθεκτικότητα της σύνδεσης για να δημιουργήσετε αδρανείς ή κατεστραμμένες συνδέσεις. Το .Net Framework 4.5.1 έρχεται με αυτήν τη δυνατότητα ενσωματωμένη για να δημιουργήσετε ξανά σπασμένες συνδέσεις με τη βάση δεδομένων.

Βελτιωμένος χρόνος εκκίνησης: Βελτιστοποίηση προφίλ

Η βελτιστοποίηση προφίλ είναι μια δυνατότητα που έχει εισαχθεί στο .Net Framework 4.5 που ελαχιστοποιεί το χρόνο εκκίνησης της εφαρμογής. Πως λειτουργεί αυτό? Ένα προφίλ είναι ένα αρχείο που περιέχει τις μεθόδους που η εφαρμογή θα χρειαζόταν κατά την εκκίνησή της. Όταν ξεκινά η εφαρμογή, το Just in Time Compiler (JIT) εκτελείται σε ένα νήμα φόντου και σε πολλούς επεξεργαστές για να δημιουργήσει εγγενή κώδικα από τον κώδικα IL.

Βελτιώσεις συλλογής απορριμμάτων: Παρουσιάστηκε διακομιστής GC

Το διαχειριζόμενο περιβάλλον του .Net χρησιμοποιεί τη συλλογή απορριμμάτων για τον καθαρισμό αντικειμένων που δεν χρησιμοποιούνται ή δεν αναφέρονται - αντικείμενα που δεν χρειάζονται πλέον. Στις προηγούμενες εκδόσεις του .Net Framework, το GC ανέστειλε τα νήματα της εφαρμογής όταν ήταν απασχολημένο με τον καθαρισμό της μνήμης. Αυτό ήταν ένα σημαντικό εμπόδιο απόδοσης, καθώς η εφαρμογή σας έπρεπε να περιμένει έως ότου η GC ολοκλήρωσε τη δουλειά της.

Με το .Net Framework 4.5 αυτό δεν αποτελεί πλέον πρόβλημα. Ο διακομιστής GC εισήχθη πρόσφατα για να διευκολύνει τον καθαρισμό αντικειμένων παραγωγής-δύο χρησιμοποιώντας ένα νήμα φόντου και, ως εκ τούτου, ελαχιστοποιεί το φορτίο στο κύριο νήμα GC καθώς τα νήματα εφαρμογής είναι πολύ λιγότερο ανασταλμένα. Με το .Net Framework 4.5, η συλλογή απορριμμάτων φόντου υποστηρίζεται τόσο στο διακομιστή όσο και στο σταθμό εργασίας GC. Η ταυτόχρονη συλλογή απορριμμάτων υποστηρίζεται επίσης τώρα. ένα ειδικό νήμα εκτελεί τη συλλογή απορριμμάτων όταν χρειάζεται.

Αξιοσημείωτες βελτιώσεις στο .Net Framework 4.5.2

Η Microsoft κυκλοφόρησε πρόσφατα το .Net Framework 4.5.2. Η κυκλοφορία ανακοινώθηκε από τη Microsoft στο ιστολόγιο .Net Framework. Ακολουθεί ο σύνδεσμος: //blogs.msdn.com/b/dotnet/archive/2014/05/05/announcing-the-net-framework-4-5-2-release.aspx

Εκτός από τις βελτιώσεις στο προφίλ και τον εντοπισμό σφαλμάτων, υπάρχουν αξιοσημείωτες βελτιώσεις στο ASP.Net στο .Net Framework 4.5.2. Τώρα μπορείτε να χρησιμοποιήσετε τις μεθόδους HostingEnvironment.QueueBackgroundWorkItem για τον προγραμματισμό μικρών εργασιών στο παρασκήνιο ασύγχρονα. Για να ελέγξετε και να τροποποιήσετε κεφαλίδες απόκρισης και κωδικούς απόκρισης, μπορείτε να χρησιμοποιήσετε τις μεθόδους HttpResponse.AddOnSendingHeaders και HttpResponseBase.AddOnSendingHeaders. Μπορείτε να ανατρέξετε σε αυτό το άρθρο του MSDN για περαιτέρω ανάγνωση: //msdn.microsoft.com/en-us/library/ms171868%28v=vs.110%29.aspx

Τι θα ακολουθήσει;

Η Microsoft κυκλοφόρησε μια έκδοση προεπισκόπησης του .Net Framework 4.6 τον περασμένο Νοέμβριο. Μπορείτε να κατεβάσετε ένα αντίγραφο του .Net Framework 4.6 από εδώ: //www.microsoft.com/en-us/download/details.aspx?id=44928

Ο γίγαντας λογισμικού ανακοίνωσε επίσης ότι θα ανακαλέσει την υποστήριξή του για το .Net Framework εκδόσεις 4.x έως 4.5.1 μετά τον Ιανουάριο του 2016. Διαβάστε περισσότερα για αυτό εδώ: //blogs.msdn.com/b/dotnet/archive/2014/08 /07/moving-to-the-net-framework-4-5-2.aspx