Mvvmcross.plugin.ble in Plugin.ble oba obvladujeta asinhrone klice BLE, vendar se razlikujeta v svojem pristopu k upravljanju teh klicev in integriranju z MVVMcross okvirjem.
mvvmcross.plugin.ble
1. Vbrizgavanje odvisnosti: mvvmcross.plugin.ble uporablja sistem za vbrizgavanje odvisnosti mvvmcrossa za upravljanje primerkov `ibluetoothle` in` iadapter`. Ti so registrirani kot lenoinializirani singletoni, kar omogoča, da se po potrebi rešijo in vbrizgajo v modele ogledov ali druge komponente [1].
2. Registracija storitev: Vtičnik registrira te storitve, tako da jih je mogoče enostavno dostopati v celotni aplikaciji. To poenostavi postopek pridobivanja adapterja Bluetooth ali upravljanja operacij Bluetooth znotraj aplikacije [1].
3. Ravnanje izjem: Medtem ko mvvmcross.plugin.ble izrecno ne obravnava asinhronih izjem drugače, je priporočljivo, da obkrožimo klice z Ble s poskusnimi bloki zaradi možnosti za izjeme, zlasti na Androidu [1].
4. Integracija z MVVMcross: Vtičnik je zasnovan tako, da deluje brezhibno z MVVMcross, kar omogoča enostavno integracijo v aplikacije, ki temeljijo na MVVMcross. To vključuje podporo za funkcije, kot so obnovitev stanja in načini ozadja na iOS [1].
Plugin.ble
1. Neposredni dostop: Plugin.ble omogoča neposreden dostop do funkcionalnosti Bluetooth brez potrebe po vbrizgavanju odvisnosti. Uporabniki lahko preprosto dostopajo do primerka `crossbluetoothle.current` za upravljanje operacij Bluetooth [2].
2. Async Operations: Plugin.ble podpira asinhrone operacije, kot so povezovanje z napravami, značilnosti branja/pisanja in ravnanje z obvestili. Vendar pa zahteva natančno upravljanje teh asinkovih klicev, da se izognete težavam, kot so GATT napake na Androidu [2].
3. Ravnanje izjem: Plugin.ble poudarja pomen okoliških asintičnih klicev s poskusnimi bloki, da bi obvladali izjeme, ki se lahko pojavijo med operacijami. To je ključnega pomena zaradi nepredvidljive narave BLE interakcij [2].
4. Splošne najboljše prakse: vtičnik spodbuja najboljše prakse, kot so izogibanje sočasnim BLE operacijam med skeniranjem, zaustavitev skeniranja, ko najdemo želeno napravo, in ne predpomnilnika značilnosti ali storitev med povezavami [2].
Ključne razlike
- Vbrizgavanje odvisnosti: mvvmcross.plugin.ble uporablja vbrizgavanje odvisnosti, ki poenostavi upravljanje storitev v aplikacijah MVVMcross, medtem ko Plugin.ble tega ne zahteva.
- Integracija: mvvmcross.plugin.ble je zasnovan posebej za aplikacije MVVMcross, ki zagotavlja integracijo z njegovimi lastnostmi, medtem ko je Plugin.ble bolj vsestranski in se lahko uporablja pri katerem koli projektu Xamarin ali Maui.
- Async Call Management: Oba vtičnika zahtevata skrbno upravljanje klicev ASYNC, vendar se mvvmcross.plugin.ble opira na upravljanje storitev MVVMcross, kar lahko poenostavi ravnanje z napakami v strukturiranem okviru.
Če povzamemo, medtem ko oba vtičnika obravnavata asinhrone klice BLE podobno v smislu, da zahtevata natančno upravljanje in ravnanje z izjemami, se mvvmcross.plugin.ble tesneje integrira s okvirom MVVMcross, s čimer izkoristi svoje funkcije vbrizgavanja odvisnosti in upravljanja storitev.
Navedbe:[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_no_good_crossplatform_bluetooth/
[6] https://github.com/xabre/xamarin-bluetooth-le/isissue/524
[7] https://stackoverflow.com/questions/69735708/xamarin-plugin-ble-hy-tata-read-doesnt-change
[8] https://learn.microsoft.com/en-us/answers/Questions/2101489/using-plugin-ble-to-connect-reconnect-to-alb-devic