Використання як Plugin.ble, так і mvvmcross.plugin.ble в одному проекті технічно можливий, але це може бути не найбільш ефективним або рекомендованим підходом. Ось чому:
1. Призначення та функціональність:
- плагін.ble- це плагін між платформами, призначений для доступу до функціональності Bluetooth з низькою енергією (BLE). Він підходить для проектів, які не потребують архітектури MVVM або додаткових функцій, що надаються MVVMCross.
- mvvmcross.plugin.ble, з іншого боку, спеціально розроблений для проектів, що використовують рамку MVVMcross. Він інтегрує функціональність BLE в архітектуру MVVM, що забезпечує введення залежності та інші функції MVVMCross.
2. Залежність та перекриття:
- mvvmcross.plugin.ble фактично посилається на плагін.ble всередині. Це означає, що якщо ви використовуєте mvvmcross.plugin.ble, ви також опосередковано використовуєте Plugin.ble. Однак використання обох явно може призвести до непотрібної складності та потенційних конфліктів.
3. Використання та інтеграція:
- Якщо ваш проект побудований за допомогою MVVMCross, використовуючи mvvmcross.plugin.ble є більш простим, оскільки він добре інтегрується з моделлю MVVM і дозволяє впорскувати залежність. Ви можете вирішити послуги ibluetoothle та iAdapter за допомогою контейнера IOC MVVMCross.
- Якщо ви віддаєте перевагу більш простіший підхід, що не належать до MVVM, плагін.ble може бути достатнім. Однак, якщо ви вирішили використовувати обидва, переконайтеся, що ви ретельно керуєте їх екземплярами та функціональними можливостями, щоб уникнути конфліктів.
4. Потенційні проблеми:
- Використання обох плагінів може призвести до плутанини в управлінні екземпляром та обробці операцій BLE. Ви можете закінчити декілька адаптерів або послуг BLE, що може спричинити несподівану поведінку або помилки.
5. Рекомендація:
- Якщо ваш проект використовує mvvmcross, дотримуйтесь mvvmcross.plugin.ble для послідовності та простоти інтеграції.
- Якщо ваш проект не використовує mvvmcross, plugin.ble - це простіший вибір.
- Уникайте використання обох, якщо у вас немає конкретної вимоги, яка потребує їх комбінованого використання, і переконайтеся, що ви ретельно обробляєте їх інтеграцію.
Підсумовуючи це, хоча технічно можливо використовувати обидва плагіни в одному проекті, це, як правило, не рекомендується, якщо у вас є переконлива причина для цього. Вибір повинен базуватися на архітектурі та конкретних потребах вашого проекту.
Цитати:[1] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-should-utize-for-bluetooth-re-e
[2] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[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-fall-tables-in-data-model/td-p/468796
[9] https://stackoverflow.com/questions/38327176/xamarin-forms-plugins-ble-mvvmcross-plugins-ble