Κατά τη σύγκριση της Microsoft.Extensions.logging με το MVXlog στο πλαίσιο του MVVMCross, πολλά οφέλη προκύπτουν από τη χρήση του πρώτου πάνω από το τελευταίο:
1. Επέκταση και ευελιξία: Το Microsoft.Extensions.Logging προσφέρει ένα εξαιρετικά επεκτάσιμο πλαίσιο που επιτρέπει την εύκολη ενσωμάτωση με διάφορους παρόχους καταγραφής τρίτων όπως το NLOG, το Serilog και το Log4Net. Αυτή η ευελιξία δεν είναι εγγενώς ενσωματωμένη στο MVXlog, το οποίο ήταν πιο περιορισμένη στην ικανότητά του να ενσωματώνεται με διαφορετικά πλαίσια καταγραφής [1] [2]. Με το microsoft.extensions.logging, μπορείτε εύκολα να αλλάξετε μεταξύ διαφορετικών παρόχων καταγραφής χωρίς να αλλάξετε τον κωδικό της εφαρμογής σας, καθιστώντας το πιο προσαρμόσιμο σε διαφορετικά περιβάλλοντα και απαιτήσεις.
2. Υποστήριξη έγχυσης εξάρτησης: Το Microsoft.Extensions.Logging έχει σχεδιαστεί για να λειτουργεί άψογα με έγχυση εξάρτησης (DI), το οποίο αποτελεί βασικό χαρακτηριστικό πολλών σύγχρονων εφαρμογών .Net, συμπεριλαμβανομένων εκείνων που κατασκευάστηκαν με MVVMCross. Αυτή η ενσωμάτωση επιτρέπει την ευκολότερη δοκιμή μονάδων και το χαστούκι των εξαρτημάτων καταγραφής, τα οποία είναι επωφελείς για τη διατήρηση της ισχυρής κάλυψης δοκιμών [5] [8]. Το MVXlog, ενώ είναι ενέσιμο, δεν προσφέρει το ίδιο επίπεδο ενσωμάτωσης με τα πλαίσια DI όπως το Microsoft.Extensions.Logging.
3. Τυποποίηση και υποστήριξη της κοινότητας: Το Microsoft.Extensions.Logging είναι ένα ευρέως υιοθετημένο πρότυπο στο οικοσύστημα .NET, που σημαίνει ότι επωφελείται από εκτεταμένη κοινοτική υποστήριξη και τεκμηρίωση. Αυτή η τυποποίηση διευκολύνει τους προγραμματιστές να κατανοούν και να εφαρμόζουν καταγραφή σε διάφορα έργα και πλατφόρμες [2] [11]. Αντίθετα, το MVXlog είναι ειδικό για το MVVMCROSS και ίσως να μην είναι τόσο ευρέως αναγνωρισμένο ή υποστηριζόμενο εκτός αυτού του πλαισίου.
4. Επιμείδωμα και απόδοση: Η αρχιτεκτονική του Microsoft.Extensions.Logging έχει σχεδιαστεί για να χειρίζεται αποτελεσματικά τις εφαρμογές μεγάλης κλίμακας. Παρέχει χαρακτηριστικά όπως φιλτράρισμα και κατηγοριοποίηση, τα οποία μπορούν να βελτιώσουν την απόδοση μειώνοντας την περιττή έξοδο καταγραφής [11]. Ενώ το MVXLog είναι ικανό, μπορεί να μην ταιριάζει με τις βελτιστοποιήσεις κλιμάκωσης και απόδοσης που διατίθενται στο Microsoft.Extensions.logging.
5. Ευελιξία διαμόρφωσης: Το Microsoft.Extensions.Logging επιτρέπει τη διαμόρφωση μέσω διαφόρων μέσων, συμπεριλαμβανομένων των αρχείων JSON (π.χ. appsettings.json`), ο οποίος παρέχει έναν ευέλικτο τρόπο διαχείρισης των ρυθμίσεων καταγραφής χωρίς να επανασυνδέεται η εφαρμογή [5]. Αυτή η ευελιξία είναι ιδιαίτερα χρήσιμη σε περιβάλλοντα όπου οι ανάγκες καταγραφής ενδέχεται να αλλάζουν συχνά.
6. Επίπεδα καταγραφής και σοβαρότητα: Και τα δύο πλαίσια υποστηρίζουν διάφορα επίπεδα καταγραφής (π.χ. ίχνος, εντοπισμός σφαλμάτων, πληροφορίες, προειδοποίηση, σφάλμα), αλλά το Microsoft.Extensions.logging περιλαμβάνει ένα επιπλέον επίπεδο «κρίσιμης» και ένα επίπεδο «κανένας» για σκοπούς διαμόρφωσης [11]. Αυτό παρέχει πιο λεπτομερή έλεγχο της σοβαρότητας και της διαμόρφωσης.
Συνοπτικά, ενώ το MVXLog είναι μια ικανή λύση καταγραφής στο πλαίσιο του οικοσυστήματος MVVMCROSS, το Microsoft.Extensions.Logging προσφέρει ευρύτερη συμβατότητα, επεκτάτιση και υποστήριξη της κοινότητας, καθιστώντας την πιο ευέλικτη επιλογή για τις ανάγκες καταγραφής στις σύγχρονες εφαρμογές .NET.
Αναφορές:[1] https://www.mvvmcross.com/documentation/fundamentals/logging-new
[2] https://putridparrot.com/blog/using-microsoft-extensions-logging/
[3] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[4] https://learn.microsoft.com/en-us/ef/core/logging-events-diagnostics/extensions-logging
[5] https://stackoverflow.com/questions/58209076/microsoft-extensions-logging-vs-nlog
[6] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://stackoverflow.com/questions/46483019/logging-from-static-members-with-microsoft-extensions-logging
[9] https://www.mvvmcross.com/logging
[10] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-this-view-get-linked-the-viewmodel/17602246
[11] https://blog.stephencleary.com/2018/06/microsoft-extensions-logging-part-2-types.html