Mvvmcross.plugin.ble ir pappilin.ble abu tvarko asinchroninius „BLE“ skambučius, tačiau jie skiriasi savo požiūriu į šių skambučių valdymą ir integruojant su MVVMCross Framework.
mvvmcross.plugin.ble
1. Priklausomybės injekcija: mvvmcross.plugin.ble naudoja „Mvvmcross“ priklausomybės injekcijos sistemą, norėdama valdyti „iBluetoothle“ ir „iAdapter“ egzempliorius. Jie yra užregistruoti kaip tingūs initializuoti singletonai, leidžiantys juos išspręsti ir įšvirkščiami į vaizdo modelius ar kitus komponentus, jei reikia [1].
2. Paslaugų registracija: papildinys registruoja šias paslaugas, kad jas būtų galima lengvai pasiekti visoje programoje. Tai supaprastina „Bluetooth“ adapterio gavimo procesą arba „Bluetooth“ operacijų valdymą programoje [1].
3. Išimčių tvarkymas: Nors mvvmcross.plugin.ble skirtingai neaiškiai tvarko asinchronines išimtis, dėl galimo išimčių rekomenduojama apsupti BLE skambučius su bandomais gaudymo blokais, ypač „Android“ [1].
4. Integracija su „MVVMCross“: papildinys yra skirtas sklandžiai veikti su „MVVMCross“, leidžiančia lengvai integruoti į „MVVMCross“ pagrįstas programas. Tai apima tokias funkcijas kaip būsenos restauravimas ir foniniai „iOS“ režimai [1].
papildinys.ble
1. Tiesioginė prieiga: papildinys.Ble suteikia tiesioginę prieigą prie „Bluetooth“ funkcijų, nereikia įpurškti priklausomybės. Vartotojai gali tiesiog pasiekti „CrossBluetoothle.Current“ egzempliorių, kad galėtų valdyti „Bluetooth“ operacijas [2].
2. „Async“ operacijos: papildinys.Ble palaiko asinchronines operacijas, tokias kaip prisijungimas prie įrenginių, skaitymo/rašymo charakteristikos ir pranešimų tvarkymas. Tačiau norint išvengti tokių problemų kaip „GATT“ klaidos „Android“ [2], reikia atidžiai valdyti šiuos „Async“ skambučius.
3. Išimties tvarkymas: „Pillin.ble“ pabrėžia aplinkinių „Async BLE“ skambučių svarbą su bandomo gaudymo blokais, kad būtų galima tvarkyti išimtis, kurios gali atsirasti operacijų metu. Tai labai svarbu dėl nenuspėjamo BLE sąveikos pobūdžio [2].
4. Bendroji geriausia praktika: papildinys skatina geriausią praktiką, pavyzdžiui, išvengti lygiagrečių BLE operacijų skenavimo, sustabdyti nuskaitymą, kai rasite norimą įrenginį, o ne talpyklos charakteristikų ar aptarnavimo egzempliorių tarp jungčių [2].
Pagrindiniai skirtumai
- Priklausomybės injekcija: mvvmcross.plugin.ble naudoja priklausomybės injekciją, kuri supaprastina paslaugų valdymą „MVVMCross“ programose, o „Pillin.ble“ to nereikalauja.
- Integracija: „Mvvmcross.plugin.ble“ yra specialiai sukurtas „Mvvmcross“ programoms, teikiant integraciją su savo funkcijomis, tuo tarpu „Pillin.ble“ yra universalesnis ir gali būti naudojamas bet kuriame „Xamarin“ ar „Maui“ projekte.
- „Async Call Management“: abiems papildiniams reikia kruopščiai valdyti „Async“ skambučius, tačiau mvvmcross.plugin.ble priklauso nuo MVVMCross paslaugų valdymo, potencialiai supaprastindamas klaidų tvarkymą struktūrizuotoje sistemoje.
Apibendrinant galima pasakyti, kad nors abu papildiniai tvarko asinchroninį BLE, panašiai skambindami reikalaujant kruopštaus valdymo ir išimčių tvarkymo, mvvmcross.plugin.ble glaudžiau integruoja su MVVMCross sistema, panaudodama savo priklausomybės injekcijos ir paslaugų valdymo funkcijas.
Citatos:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://www.nuget.org/packages/plugin.ble/
[3] https://stackoverflow.com/questions/36522920
[4] https://www.youtube.com/watch?v=sfgulskeoee
[5] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_no_good_crossplatform_bluetooth/
[6] https://github.com/xabre/xamarin-bluetooth-le/issues/524
[7] https://stackoverflow.com/questions/69735708/xamarin-plugin-ble-why-data-read-doesnt-change
[8] https://learn.microsoft.com/en-us/answers/questions/2101489/using-plugin-ble-to-connect-reconnect-to-ble-devic