Το MVVMCROSS.PLUGIN.BLE εξασφαλίζει την ασφάλεια των νημάτων για λειτουργίες χαμηλής ενέργειας Bluetooth (BLE) κυρίως μέσω προσεκτικού χειρισμού ασύγχρονων λειτουργιών και προσκόλλησης σε κατευθυντήριες γραμμές ειδικές για την πλατφόρμα. Ακολουθεί μια λεπτομερής επισκόπηση του τρόπου με τον οποίο επιτυγχάνει ασφάλεια νήματος:
1. Διαδοχική εκτέλεση εντολών BLE **
Το mvvmcross.plugin.ble δίνει έμφαση στη σημασία της εκτέλεσης των εντολών BLE διαδοχικά, ειδικά στο Android. Αυτό σημαίνει ότι περιμένετε να ολοκληρωθεί μια λειτουργία πριν ξεκινήσετε ένα άλλο. Αυτή η προσέγγιση βοηθά στην πρόληψη σφαλμάτων GATT που μπορεί να εμφανιστούν όταν οι εντολές εκτελούνται ταυτόχρονα χωρίς σωστό συγχρονισμό [1].2. Κύρια χρήση νήματος **
Για ορισμένες λειτουργίες, όπως τα χαρακτηριστικά γραφής, είναι σημαντικό να εκτελείτε αυτές τις ενέργειες από το κύριο νήμα. Αυτό είναι ιδιαίτερα σημαντικό στο Android, όπου η αποτυχία να το κάνει μπορεί να οδηγήσει σε gattwriteerror [1]. Εξασφαλίζοντας ότι αυτές οι λειτουργίες εκτελούνται στο κύριο νήμα, το plugin αποφεύγει πιθανά προβλήματα σπειρώματος.3. Αποφυγή προσωρινής αποθήκευσης χαρακτηριστικών ή υπηρεσιών **
Αφού αποσυνδεθεί μια συσκευή, όλες οι υπηρεσίες και οι χαρακτηριστικές περιπτώσεις γίνονται άκυρες. Για να διατηρηθεί η ασφάλεια των νημάτων, το MVVMCROSS.plugin.ble συμβουλεύει την προσωρινή αποθήκευση αυτών των περιπτώσεων μεταξύ των συνεδριών σύνδεσης. Αντ 'αυτού, συνιστά τη χρήση `getserviceasync` και` getCharacteristicasync` για να αποκτήσετε έγκυρες περιπτώσεις κάθε φορά που δημιουργείται μια σύνδεση [1].4. Χειρισμός σφαλμάτων **
Το plugin ενθαρρύνει τις γύρω ασύγχρονες κλήσεις BLE API με μπλοκ δοκιμής. Αυτή η πρακτική βοηθά στην εξαιρέσεις που μπορεί να προκύψουν κατά τη διάρκεια λειτουργιών BLE, οι οποίες μπορεί να είναι κοινές λόγω της φύσης της επικοινωνίας Bluetooth. Ο σωστός χειρισμός σφαλμάτων εξασφαλίζει ότι η εφαρμογή παραμένει σταθερή ακόμη και όταν αντιμετωπίζει απροσδόκητα ζητήματα [1].5. Ειδικές εκτιμήσεις πλατφόρμας **
Το MVVMCROSS.plugin.ble έχει σχεδιαστεί για να λειτουργεί σε πολλές πλατφόρμες, συμπεριλαμβανομένων των Android, iOS και MacOS. Παίρνει υπόψη τους περιορισμούς και τις βέλτιστες πρακτικές, όπως η αποφυγή της σάρωσης κατά την εκτέλεση άλλων λειτουργιών BLE για την ελαχιστοποίηση της αποστράγγισης της μπαταρίας και τη βελτίωση της συνολικής απόδοσης [1].6. Χρήση τεμπέλης αρχικοποιημένων singletons **
Στο πλαίσιο του MVVMCROSS, το plugin καταγράφει το `ibluetoothle 'και το` iadapter` ως τεμπέλης αρχικοποιημένα singletons. Αυτή η προσέγγιση επιτρέπει την εύκολη έγχυση και την επίλυση αυτών των υπηρεσιών, εξασφαλίζοντας ότι αρχικοποιούνται και διαχειρίζονται σωστά μέσα στον κύκλο ζωής της εφαρμογής [1] [10].Ακολουθώντας αυτές τις κατευθυντήριες γραμμές και τις βέλτιστες πρακτικές, το MVVMCROSS.plugin.ble βοηθά τους προγραμματιστές να εξασφαλίσουν την ασφάλεια και την αξιοπιστία των νημάτων στις εφαρμογές τους με δυνατότητα BLE. Ωστόσο, είναι σημαντικό για τους προγραμματιστές να κατανοούν την υποκείμενη τεχνολογία BLE και τους περιορισμούς της να χρησιμοποιούν αποτελεσματικά το plugin και να αποφεύγουν τις κοινές παγίδες [11].
Αναφορές:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-shouth
[3] https://community.particle.io/t/working-around-ble-connect-deviceaddress-is-a-blocking-call/68453
[4] https://www.nuget.org/packages/mvvmcross.plugin.ble/2.2.0-pre5
[5] https://stackoverflow.com/questions/38327176/xamarin-forms-plugins-ble-mvvmcross-plugins-ble
[6] https://github.com/xabre/xamarin-bluetooth-le/issues/524
[7] https://stackoverflow.com/questions/38922639/how-could-i-achieve-maximum-thread-safety-with-a-read-write-ble-gatt-aracteris
[8] https://github.com/xabre/xamarin-bluetooth-le/issues/356
[9] https://devzone.nordicsemi.com/f/nordic-q-a/88005/does-ncs-ble-api-thread-safe
[10] https://github.com/mrozema/xamarin-bluetooth-le
[11] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_no_good_crossplatform_bluetooth/