본문 바로가기

.NET/MAUI13

MAUI TabbedPage와 Shell 사용 비교 특별한 이유가 없다면 최신 .NET MAUI 앱에서는 Shell을 사용하는 것이 더 좋은 선택이며 최신 트렌드에 부합합니다.이전 대화에서 겪으셨던 DI(의존성 주입) 문제도 Shell을 사용하면 훨씬 간단하게 해결됩니다. 왜 Shell이 더 권장되는지, 두 방식의 차이점은 무엇인지 자세히 설명해 드릴게요.Shell vs. TabbedPage 비교 특징 Shell TabbedPage 구조앱 전체의 상위 구조(Flyout, 탭, 내비게이션)를 한번에 정의. "All-in-one"단순히 여러 페이지를 탭으로 묶어주는 컨테이너 역할내비게이션URI 기반 (//main/status)으로 동작하여 유연하고 강력함. ViewModel에서도 쉽게 페이지 이동 가능.객체 인스턴스 기반 (Navigation.PushAs.. 2025. 10. 16.
MAUI BTLE InTheHand Client Sample. part2 Sample 코드 테스트 한 결과 Connect 이후에 Disconnect를 하고 다시 Connect를 하면 연결이 되지 않고 아래와 같은 예외가 발생했다.{"Cannot access a disposed object."} 발생 원인을 확인한 결과 아래와 같은 이유가 있었다.이 문제는 일반적으로 한 번 연결이 해제된 블루투스 장치 객체(Object)를 다시 사용하려고 할 때 발생합니다.InTheHand.Bluetooth 라이브러리에서는 Gatt.Disconnect()가 호출되면 내부적으로 장치 객체의 일부 리소스가 해제(Dispose)됩니다. 따라서 동일한 객체로 다시 연결을 시도하면 이미 해제된 리소스에 접근하게 되어 예외가 발생하는 것입니다.원인 설명최초 연결: DeviceListViewModel의 T.. 2025. 10. 16.
MAUI BTLE InTheHand Client Sample Code https://github.com/inthehand/32feet GitHub - inthehand/32feet: Personal Area Networking for .NET. Open source and professionally supportedPersonal Area Networking for .NET. Open source and professionally supported - inthehand/32feetgithub.comInTheHand 라이브러리 특징API 스타일: IObservable 대신 표준 async/await와 이벤트 핸들러(+=, -=)를 사용합니다. 이는 많은 C# 개발자에게 더 친숙할 수 있습니다.스캔 방식: DiscoverDevices()는 호출 시점에 발견된 장치 목록을 동기.. 2025. 10. 14.
MAUI BTLE Shiny Client Sample Code MAUI로 BluetoothLE 기기를 Scan 하고 통신을 하기 위해서 몇가지 라이브러기가 존재한다.초기에는 Plugin.BLE로 개발을 했다.그런데 Scan을 하고 Connect 후에 Data를 보내고 받을 때 너무 오래 걸리는 것이다. 3~5초까지 지연이 발생했다.해결을 해보려고 검색과 AI에 질문도 해봤지만 Plugin.BLE 라이브러리로는 해결책이 없는 것으로 결론지었다.그래서 알아본 것이 Shiny.NET이다. 라이브러리를 교체하지 않고 속도를 개선하는 방법에는 아래와 같이 제안을 받았다.개선 방법 요약 및 추천 순서방법장점단점/주의사항구현 난이도Write Without Response / Notification속도 향상 효과 가장 큼 (필수)데이터 유실 가능성 (별도 검증 로직 필요)중MTU.. 2025. 10. 14.