Używanie zarówno plugin.ble i mvvmcross.plugin.ble w tym samym projekcie jest technicznie możliwe, ale może nie być najbardziej wydajnym lub zalecanym podejściem. Oto dlaczego:
1. Cel i funkcjonalność:
- Plugin.ble to wtyczka międzyplatformowa zaprojektowana do dostępu do funkcji Bluetooth Low Energy (BLE). Jest odpowiedni do projektów, które nie wymagają architektury MVVM lub dodatkowych funkcji dostarczonych przez MVVMCROSS.
- MVVMCROSS.PLUGIN.BLE, z drugiej strony, jest specjalnie zaprojektowany do projektów przy użyciu frameworka MVVMCROSS. Integruje funkcjonalność BLE z architekturą MVVM, umożliwiając wstrzyknięcie zależności i inne cechy MVVMCROSS.
2. Zależność i nakładanie się:
- mvvmcross.plugin.ble faktycznie odwołuje się do Plugin.ble wewnętrznie. Oznacza to, że jeśli używasz mvvmcross.plugin.ble, pośrednio używasz również plugin.ble. Jednak wykorzystanie obu wyraźnych może prowadzić do niepotrzebnej złożoności i potencjalnych konfliktów.
3. Zastosowanie i integracja:
- Jeśli Twój projekt jest zbudowany z MVVMCROSS, przy użyciu mvvmcross.plugin.ble jest prostszy, ponieważ dobrze integruje się z wzorem MVVM i pozwala na wstrzyknięcie zależności. Możesz rozwiązać usługi Ibluetoothle i IAdapter za pomocą kontenera MKVMCross.
- Jeśli wolisz prostsze podejście bez MVVM, Plugin.ble może być wystarczające. Jeśli jednak zdecydujesz się na korzystanie z obu, upewnij się, że starannie zarządzasz ich instancjami i funkcjami, aby uniknąć konfliktów.
4. Potencjalne problemy:
- Korzystanie z obu wtyczek może prowadzić do zamieszania w zarządzaniu instancjami i obsłudze operacji BLE. Możesz skończyć z uruchamianiem wielu adapterów lub usług BLE, co może powodować nieoczekiwane zachowanie lub błędy.
5. Zalecenie:
- Jeśli Twój projekt używa MVVMCROSS, trzymaj się mvvmcross.plugin.ble dla spójności i łatwości integracji.
- Jeśli Twój projekt nie używa MVVMCROSS, Plugin.ble to prostszy wybór.
- Unikaj używania obu, chyba że masz konkretny wymóg, który wymaga ich łącznego użycia, i upewnij się, że ostrożnie obsługujesz ich integrację.
Podsumowując, chociaż technicznie możliwe jest użycie obu wtyczek w tym samym projekcie, na ogół nie jest to zalecane, chyba że masz, aby to zrobić. Wybór powinien opierać się na architekturze projektu i konkretnych potrzebach.
Cytaty:[1] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-should-i-utiary-for-bluetooth-low-e
[2] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-andetup
[3] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[4] https://forum.ionicframework.com/t/both-ble-bluetoothle-plugins-seem-not-to-be-loaded-at-all/176776
[5] https://www.nuget.org/packages/mvvmcross.plugin.ble/2.2.0-pre5
[6] https://www.npmjs.com/package/cordova-plugin-bluetoothle
[7] https://github.com/mrozema/xamarin-bluetooth-le
[8] https://community.qlik.com/t5/qlikview-app-dev/multiple-versions-of-similar-data-for-all-tables-in-data-model/td-p/468796
[9] https://stackoverflow.com/questions/38327176/xamarin-porms-plugins-ble-mvvmcross-plugins-ble