Mvvmcross.plugin.ble nodrošina diegu drošību Bluetooth zemas enerģijas (BLE) operācijām, galvenokārt rūpīgi rīkojoties ar asinhronām operācijām un ievērojot platformai specifiskas vadlīnijas. Šeit ir detalizēts pārskats par to, kā tas sasniedz pavedienu drošību:
1. secīga ble komandu izpildīšana **
Mvvmcross.plugin.ble uzsver, cik svarīgi ir izpildīt BLE komandas secīgi, īpaši Android. Tas nozīmē gaidīt, kamēr viena operācija tiks pabeigta pirms citas darbības sākšanas. Šī pieeja palīdz novērst GATT kļūdas, kas var rasties, ja komandas tiek izpildītas vienlaikus bez pienācīgas sinhronizācijas [1].2. Galvenā pavediena lietošana **
Dažām operācijām, piemēram, rakstīšanas īpašībām, ir svarīgi veikt šīs darbības no galvenā pavediena. Tas ir īpaši svarīgi Android, kur tas nav izdarīts, var izraisīt gattwriteError [1]. Nodrošinot, ka šādas operācijas tiek veiktas galvenajā pavedienā, spraudnis izvairās no iespējamām vītņu problēmām.3. Izvairieties no raksturīgo vai pakalpojumu gadījumu kešatmiņas **
Pēc ierīces atvienošanas visi servisa un raksturīgie gadījumi kļūst nederīgi. Lai saglabātu diegu drošību, mvvmcross.plugin.ble iesaka kešatmiņā saglabāšanu starp savienojuma sesijām. Tā vietā tas iesaka izmantot `getServiceasync` un` getcharacteristicasync`, lai iegūtu derīgus gadījumus katru reizi, kad tiek izveidots savienojums [1].4. Kļūdu apstrāde **
Spraudnis mudina apkārtējos asinhronos BLE API zvanus ar mēģinājumu blokiem. Šī prakse palīdz noķert izņēmumus, kas var rasties BLE operāciju laikā, kas var būt izplatīti Bluetooth komunikācijas rakstura dēļ. Pareiza kļūdu apstrāde nodrošina, ka lietojumprogramma paliek stabila pat tad, ja saskaras ar negaidītām problēmām [1].5. platformai raksturīgi apsvērumi **
Mvvmcross.plugin.ble ir paredzēts darbam vairākās platformās, ieskaitot Android, iOS un MacOS. Tas ņem vērā platformas specifiskos ierobežojumus un paraugpraksi, piemēram, izvairoties no skenēšanas, veicot citas BLE operācijas, lai samazinātu akumulatora aizplūšanu un uzlabotu kopējo veiktspēju [1].6. Slinku inicializētu singletonu izmantošana **
MVVMCROSS kontekstā spraudnis reģistrē `iBluetoothle` un` iadapter` kā slinku inicializētus singletonus. Šī pieeja ļauj ērti veikt šos pakalpojumus un izšķirt, nodrošinot, ka tie tiek pareizi inicializēti un pārvaldīti lietojumprogrammas dzīves ciklā [1] [10].Izpildot šīs vadlīnijas un paraugpraksi, mvvmcross.plugin.ble palīdz izstrādātājiem nodrošināt pavedienu drošību un uzticamību to lietojumprogrammās iespējotās BLE. Tomēr izstrādātājiem ir svarīgi izprast pamatā esošo BLE tehnoloģiju un tās ierobežojumus, lai efektīvi izmantotu spraudni un izvairītos no kopīgām nepilnībām [11].
Atsauces:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-should-i-utile-for-bluetooth-low-e
[3] https://community.particle.io/t/working-reound-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-form-plugins-ble-mvvmcross-plugins-ble
[6] https://github.com/xabre/xamarin-luetooth-le/issues/524
.
[8] https://github.com/xabre/xamarin-luetooth-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-luetooth-le
[11] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_no_good_crossplatform_bluetooth/