Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon mvvmcross.plugin.ble จับการโทร ble แบบอะซิงโครนัสแตกต่างจากปลั๊กอินได้อย่างไร


mvvmcross.plugin.ble จับการโทร ble แบบอะซิงโครนัสแตกต่างจากปลั๊กอินได้อย่างไร


mvvmcross.plugin.ble และ plugin.ble ทั้งคู่จัดการกับการโทรแบบอะซิงโครนัส แต่พวกเขาแตกต่างกันในวิธีการจัดการการโทรเหล่านี้และรวมเข้ากับเฟรมเวิร์ก MVVMcross

mvvmcross.plugin.ble

1. การฉีดพึ่งพา: mvvmcross.plugin.ble ใช้ระบบฉีดพึ่งพาของ MVVMcross เพื่อจัดการอินสแตนซ์ของ `ibluetoothle` และ` iadapter ' สิ่งเหล่านี้ได้รับการจดทะเบียนเป็นซิงเกิลที่ขี้เกียจ-เริ่มต้นทำให้พวกเขาได้รับการแก้ไขและฉีดเข้าไปในรูปแบบมุมมองหรือส่วนประกอบอื่น ๆ ตามต้องการ [1]

2. การลงทะเบียนบริการ: ปลั๊กอินลงทะเบียนบริการเหล่านี้เพื่อให้สามารถเข้าถึงได้ง่ายตลอดแอปพลิเคชัน สิ่งนี้ทำให้กระบวนการรับอะแดปเตอร์บลูทู ธ ง่ายขึ้นหรือจัดการการทำงานของบลูทู ธ ภายในแอพ [1]

3. การจัดการข้อยกเว้น: ในขณะที่ mvvmcross.plugin.ble ไม่ได้จัดการข้อยกเว้นแบบอะซิงโครนัสแตกต่างกันอย่างชัดเจนขอแนะนำให้ล้อมรอบการโทร BLE ด้วยบล็อกที่จับได้เนื่องจากศักยภาพสำหรับข้อยกเว้นโดยเฉพาะบน Android [1]

4. การรวมเข้ากับ MVVMCROSS: ปลั๊กอินได้รับการออกแบบมาเพื่อทำงานอย่างราบรื่นกับ MVVMCROSS ทำให้สามารถรวมเข้ากับแอปพลิเคชันที่ใช้ MVVMCROSS ได้อย่างง่ายดาย ซึ่งรวมถึงการสนับสนุนคุณสมบัติเช่นการฟื้นฟูสถานะและโหมดพื้นหลังบน iOS [1]

ปลั๊กอิน

1. การเข้าถึงโดยตรง: ปลั๊กอิน BLE ให้การเข้าถึงฟังก์ชั่นบลูทู ธ โดยตรงโดยไม่จำเป็นต้องฉีดพึ่งพา ผู้ใช้สามารถเข้าถึงอินสแตนซ์ `crossbluetoothle.current` เพื่อจัดการการดำเนินการบลูทู ธ [2]

2. การดำเนินงาน Async: ปลั๊กอินรองรับการดำเนินการแบบอะซิงโครนัสเช่นการเชื่อมต่อกับอุปกรณ์ลักษณะการอ่าน/การเขียนและการแจ้งเตือนการจัดการ อย่างไรก็ตามมันต้องมีการจัดการอย่างรอบคอบของการเรียก async เหล่านี้เพื่อหลีกเลี่ยงปัญหาเช่นข้อผิดพลาด GATT บน Android [2]

3. การจัดการข้อยกเว้น: ปลั๊กอินเบลล์เน้นความสำคัญของการโทรรอบ ๆ Async BLE ด้วยบล็อกการจับที่จับเพื่อจัดการข้อยกเว้นที่อาจเกิดขึ้นในระหว่างการดำเนินการ นี่เป็นสิ่งสำคัญเนื่องจากลักษณะที่คาดเดาไม่ได้ของการมีปฏิสัมพันธ์กับ BLE [2]

4. แนวทางปฏิบัติที่ดีที่สุดทั่วไป: ปลั๊กอินสนับสนุนแนวทางปฏิบัติที่ดีที่สุดเช่นการหลีกเลี่ยงการดำเนินการ BLE ที่เกิดขึ้นพร้อมกันในขณะที่สแกนหยุดการสแกนเมื่อพบอุปกรณ์ที่ต้องการและไม่แคชลักษณะหรืออินสแตนซ์การบริการระหว่างการเชื่อมต่อ [2]

ความแตกต่างที่สำคัญ

- การฉีดพึ่งพา: mvvmcross.plugin.ble ใช้การฉีดการพึ่งพาซึ่งทำให้การจัดการบริการง่ายขึ้นในแอปพลิเคชัน MVVMcross ในขณะที่ปลั๊กอินไม่ต้องการสิ่งนี้
- การรวม: mvvmcross.plugin.ble ได้รับการออกแบบมาโดยเฉพาะสำหรับแอพพลิเคชั่น MVVMcross โดยให้การรวมเข้ากับคุณสมบัติของมันในขณะที่ปลั๊กอินเบิ้ลมีความหลากหลายมากขึ้นและสามารถใช้ในโครงการ Xamarin หรือ MAUI ใด ๆ
- การจัดการการโทรแบบ async: ปลั๊กอินทั้งสองต้องการการจัดการการโทรอย่างระมัดระวัง แต่ mvvmcross.plugin.ble อาศัยการจัดการบริการของ MVVMcross ซึ่งอาจทำให้การจัดการข้อผิดพลาดง่ายขึ้นในกรอบที่มีโครงสร้าง

โดยสรุปในขณะที่ปลั๊กอินทั้งสองจัดการการโทรแบบอะซิงโครนัสในทำนองเดียวกันในแง่ของการจัดการอย่างระมัดระวังและการจัดการข้อยกเว้น mvvmcross.plugin.BLE รวมเข้ากับเฟรมเวิร์ก MVVMcross มากขึ้น

การอ้างอิง:
[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-ble-why-data-read-doesnt- Change
[8] https://learn.microsoft.com/en-us/answers/questions/2101489/using-plugin-ble-ble-to-connect-reconnect-to-ble-devic