При сравнении mvvmcross.plugin.ble и plugin.ble оба используются для доступа к функциональности Bluetooth с низкой энергией (BLE) на разных платформах, таких как Android, iOS, MacOS и Windows. Тем не менее, они служат разным целям и имеют различные подходы к обработке операций BLE.
mvvmcross.plugin.ble
Этот плагин специально разработан для использования в рамках MVVMcross, которая представляет собой кроссплатформенную структуру MVVM. Он плавно интегрирует функциональность BLE в приложения MVVMcross, зарегистрировав «ibluetoothle» и «iAdapter» как ленивые инициализированные синглетоны. Это позволяет легко внедрить и разрешить эти услуги в рамках MVVMcross.
Одним из ключевых преимуществ использования mvvmcross.plugin.ble является его интеграция с структурой MVVMcross, что облегчает управление операциями BLE в приложениях MVVMcross. Тем не менее, он по своей сути не решает конкретные проблемы, которые Plugin.ble не могут обрабатывать, поскольку он полагается на Plugin.ble для базовой функции BLE.
plagin.ble
** Plugin.ble-это более общий назначенный плагин BLE, который можно использовать в различных приложениях на основе .NET, включая проекты .NET MAUI. Он обеспечивает кроссплатформенную API для операций BLE, но не включает в себя функции MVVM.
** Plugin.ble имеет несколько ограничений, особенно на Android, например, требуется выполнение характерных записей в основном потоке и обеспечение соблюдения последовательного выполнения команды BLE, чтобы избежать ошибок ГАТТ [2]. Кроме того, он консультирует против характеристики кэширования или экземпляров обслуживания между сеансами соединения, чтобы предотвратить неверные ссылки [2].
Специальные вопросы, решаемые mvvmcross.plugin.ble
Хотя mvvmcross.plugin.ble по своей сути не исправляет проблемы, которые плагин. Это может помочь смягчить проблемы, связанные с разрешением обслуживания и впрыском зависимости, которые могут возникнуть при использовании плагина.
Например, mvvmcross.plugin.ble помогает избежать проблем `nullreferenceexception`, обеспечивая должным образом зарегистрированные и разрешаемые услуги в рамках MVVMcross [3]. Тем не менее, речь идет скорее о интеграции структуры, а не в решении конкретных ограничений функциональности BLE.
Заключение
Таким образом, mvvmcross.plugin.ble предлагает удобную интеграцию функциональности BLE в приложения MVVMcross, используя плагин. BLE для базовых операций BLE. Хотя это конкретно не устраняет проблемы, с которыми не обращается плагина. Если вы разрабатываете приложение, которое использует mvvmcross, mvvmcross.plugin.ble - лучший выбор. Для других типов приложений, таких как проекты .net Maui, Plugin.ble может быть более подходящим.
Цитаты:[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://learn.microsoft.com/en-us/answers/questions/1518375/which-package-should-itize-for-bluetooth-low-e
[5] https://punchthrough.com/android-ble-guide/
[6] https://github.com/xabre/xamarin-bluetooth-le/issues/524
[7] https://stackoverflow.com/questions/38327176/xamarin-forms-lugins-ble-mvvmcross-lugins-ble
[8] https://github.com/dotnet-bluetooth-le/dotnet-bluetooth-le/issues/901