Mvvmcross.plugin.ble og plugin.ble begge håndterer asynkrone BLE -samtaler, men de er forskjellige i sin tilnærming til å håndtere disse samtalene og integrere med MVVMCROSS -rammen.
mvvmcross.plugin.ble
1. Avhengighetsinjeksjon: MVVMCROSS.PLUGIN.BLE BRUKER MVVMCROSSs avhengighetsinjeksjonssystem for å administrere forekomster av `iBluetoothle` og` iadapter`. Disse er registrert som late-initialiserte singletoner, slik at de kan løses og injiseres i visningsmodeller eller andre komponenter etter behov [1].
2. Tjenestegistrering: Pluginen registrerer disse tjenestene slik at de enkelt kan nås gjennom applikasjonen. Dette forenkler prosessen med å skaffe en Bluetooth -adapter eller administrere Bluetooth -operasjoner i appen [1].
3. Unntakhåndtering: Mens MVVMCROSS.PLUGIN.BLE ikke eksplisitt håndterer asynkrone unntak annerledes, anbefales det å omgi BLE-samtaler med prøvefangstblokker på grunn av potensialet for unntak, spesielt på Android [1].
4. Integrering med MVVMCROSS: Pluginen er designet for å fungere sømløst med MVVMCROSS, noe som gir enkel integrasjon i MVVMCROSS-baserte applikasjoner. Dette inkluderer støtte for funksjoner som statlig restaurering og bakgrunnsmodus på iOS [1].
plugin.ble
1. Direkte tilgang: Plugin.BLE gir direkte tilgang til Bluetooth -funksjonalitet uten behov for avhengighetsinjeksjon. Brukere kan ganske enkelt få tilgang til `crossbluetoothle.current` -forekomsten for å administrere Bluetooth -operasjoner [2].
2. ASYNC -operasjoner: Plugin.BLE støtter asynkrone operasjoner som å koble til enheter, lese-/skriveegenskaper og håndtere varsler. Imidlertid krever det nøye styring av disse async -samtalene for å unngå problemer som GATT -feil på Android [2].
3. Unntakhåndtering: Plugin.BLE understreker viktigheten av å omgi Async Ble-samtaler med prøvefangstblokker for å håndtere unntak som kan oppstå under operasjonene. Dette er avgjørende på grunn av den uforutsigbare naturen til BLE -interaksjoner [2].
4. Generelle beste praksis: Pluginen oppmuntrer til beste praksis som å unngå samtidig BLE -operasjoner mens du skanner, stopper skanninger når den ønskede enheten er funnet, og ikke cache karakteristiske eller serviceforekomster mellom tilkoblinger [2].
viktige forskjeller
- Avhengighetsinjeksjon: mvvmcross.plugin.ble bruker avhengighetsinjeksjon, som forenkler tjenestestyring i mvvmcross -applikasjoner, mens plugin.ble ikke krever dette.
- Integrasjon: MVVMCROSS.PLUGIN.BLE er spesielt designet for MVVMCROSS -applikasjoner, noe som gir integrasjon med funksjonene, mens plugin.BLE er mer allsidig og kan brukes i et hvilket som helst Xamarin- eller Maui -prosjekt.
- ASYNC Call Management: Begge plugins krever nøye styring av async -samtaler, men MVVMCROSS.PLUGIN.BLE er avhengig av MVVMCROSSs tjenestestyring, og potensielt forenkler feilhåndtering i et strukturert rammeverk.
Oppsummert, mens begge plugins håndterer asynkrone BLE ringer på samme måte når det gjelder å kreve nøye styring og unntakshåndtering, integrerer MVVMCROSS.PLUGIN.BLE tettere med MVVMCROSS Framework, og utnytter sine avhengighetsinjeksjons- og tjenestestyringsfunksjoner.
Sitasjoner:[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-le-why-data-read-doesnt-change
[8] https://learn.microsoft.com/en-us/answers/questions/2101489/using-plugin-blug-to-connect-reconnect-to-ble-devic