การใช้ทั้ง plugin.ble และ mvvmcross.plugin.ble ในโครงการเดียวกันเป็นไปได้ทางเทคนิค แต่อาจไม่ใช่วิธีที่มีประสิทธิภาพหรือแนะนำมากที่สุด นี่คือเหตุผล:
1. วัตถุประสงค์และฟังก์ชั่น:
- ปลั๊กอินเป็นปลั๊กอินข้ามแพลตฟอร์มที่ออกแบบมาสำหรับการเข้าถึงฟังก์ชั่น Bluetooth Low Energy (BLE) เหมาะสำหรับโครงการที่ไม่ต้องการสถาปัตยกรรม MVVM หรือคุณสมบัติเพิ่มเติมที่จัดทำโดย MVVMcross
- ในทางกลับกัน mvvmcross.plugin.ble ได้รับการออกแบบมาโดยเฉพาะสำหรับโครงการโดยใช้กรอบ MVVMcross มันรวมฟังก์ชั่น BLE เข้ากับสถาปัตยกรรม MVVM เพื่อให้สามารถฉีดพึ่งพาได้และคุณสมบัติ MVVMCROSS อื่น ๆ
2. การพึ่งพาและทับซ้อน:
- mvvmcross.plugin.ble อ้างอิงปลั๊กอินจริง. เบิ้ลภายใน ซึ่งหมายความว่าถ้าคุณใช้ mvvmcross.plugin.ble คุณจะใช้ปลั๊กอินทางอ้อมเช่นกัน อย่างไรก็ตามการใช้ทั้งสองอย่างชัดเจนอาจนำไปสู่ความซับซ้อนที่ไม่จำเป็นและความขัดแย้งที่อาจเกิดขึ้น
3. การใช้งานและการรวม:
- หากโครงการของคุณถูกสร้างขึ้นด้วย mvvmcross การใช้ mvvmcross.plugin.ble นั้นตรงไปตรงมามากขึ้นเพราะมันรวมเข้ากับรูปแบบ MVVM ได้ดีและช่วยให้การฉีดพึ่งพา คุณสามารถแก้ไขบริการ iBluetoothle และ IADAPTER โดยใช้คอนเทนเนอร์ IOC ของ MVVMCROSS
- หากคุณต้องการวิธีที่ง่ายกว่าและไม่ใช่ MVVM ปลั๊กอินเบิ้ลอาจเพียงพอ อย่างไรก็ตามหากคุณตัดสินใจที่จะใช้ทั้งสองอย่างให้แน่ใจว่าคุณจัดการอินสแตนซ์และฟังก์ชันของพวกเขาอย่างรอบคอบเพื่อหลีกเลี่ยงความขัดแย้ง
4. ปัญหาที่อาจเกิดขึ้น:
- การใช้ปลั๊กอินทั้งสองอาจนำไปสู่ความสับสนในการจัดการอินสแตนซ์และการจัดการการดำเนินงาน BLE คุณอาจจบลงด้วยอะแดปเตอร์หลายตัวหรือบริการ BLE ที่ทำงานซึ่งอาจทำให้เกิดพฤติกรรมหรือข้อผิดพลาดที่ไม่คาดคิด
5. คำแนะนำ:
- หากโครงการของคุณใช้ mvvmcross ให้ติดกับ mvvmcross.plugin.ble เพื่อความสอดคล้องและความสะดวกในการรวมเข้าด้วยกัน
- หากโครงการของคุณไม่ได้ใช้ MVVMCROSS ปลั๊กอินเบิ้ลเป็นตัวเลือกที่ง่ายกว่า
- หลีกเลี่ยงการใช้ทั้งสองอย่างเว้นแต่คุณจะมีข้อกำหนดเฉพาะที่จำเป็นสำหรับการใช้งานแบบรวมของพวกเขาและให้แน่ใจว่าคุณจัดการกับการรวมของพวกเขาอย่างระมัดระวัง
โดยสรุปในขณะที่มันเป็นไปได้ทางเทคนิคที่จะใช้ปลั๊กอินทั้งสองในโครงการเดียวกัน แต่โดยทั่วไปจะไม่แนะนำถ้าคุณมีเหตุผลที่น่าสนใจที่จะทำเช่นนั้น ตัวเลือกควรขึ้นอยู่กับสถาปัตยกรรมและความต้องการเฉพาะของโครงการของคุณ
การอ้างอิง:[1] https://learn.microsoft.com/en-us/answers/questions/1518375/which-package-hould-porlize-forluetooth-low-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-sem-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-forms-plugins-ble-mvvmcross-plugins-ble