2010-06-07 2 views
2

우리는 WCF를 사용하여 제공 될 서비스를 소비하는 데 필요한 Windows CE 6.0 장치가 있습니다. 가능한 한 대역폭 사용을 줄이려고 시도하고 있으며 간단한 테스트를 통해 HTTP 대신 UDP를 사용하면 상당한 데이터 사용량이 절약된다는 것을 알았습니다.WCF 서비스를 사용하여 CE 6.0 클라이언트 승 - 대역폭 줄이기

.NET Compact Framework 3.5 장치의 WCF에 대한 제한 사항이 있으며 사람들이 적절한 방법이라고 생각하는 것이 궁금했습니다. 커스텀 UDP 바인딩을 개발하는 것이 합리적일까요?

의견을 보내 주시면 감사하겠습니다. 감사.

답변

3

http에는 약간의 오버 헤드가 있지만 데이터 사용량의 상당 부분이되면 사용자 API가 너무 "수다스러운"것으로 추측되며 더 많은 페이로드가 포함 된 메시지가 더 적을 수 있습니다.

다음 포인트는 다음과 같습니다. 주어진 페이로드에 대한 대역폭을 어떻게 줄일 수 있습니까? 압축은 옵션이지만 일부 플랫폼에서는 문제가 될 수 있습니다. 또 하나는 저전력 장치를 사용하기 때문에 본질적으로 조밀하고 효율적으로 처리 할 수있는 직렬화 형식을 사용하는 것입니다 (CPU주기와 관련하여). 이를 위해 "프로토콜 버퍼"와 같은 것이 이상적입니다.

protobuf-net은 .NET 용 프로토콜 버퍼의 CF 호환 구현입니다. CF 빌드는 CF를 지원하지 않기 때문에 모든 멋진 WCF 기능을 가지고 있지는 않지만 매우 효과적으로 작동 할 수 있습니다.

이 http가되면 MTOM을 고려해야합니다. 이렇게하면 이진 데이터 (즉, protobuf-net이 사용하는 것)의 인코딩 오버 헤드가 줄어 듭니다.

UDP 로 이동하면 옵션이 될 수 있지만, 나는 HTTP + protobuf-NET +의 MTOM (덜 "수다"API와 결합) 같은 것을 시도하고 스택까지 어떻게 볼 것입니다.

현재 (다운로드 가능) 버전의 protobuf-net에는 CF가있는 "꼬임"이 있습니다. 그것은 작동하지만 CF (메타 프로그래밍의 한계로 인해)만큼 빠르지는 않습니다. "v2"제품 (아직 출시되지 않음)은 이러한 모든 사항을 처리하므로 CF에서 완전히 정적 (및 빠른) 실행이 가능합니다. 그리고 무엇보다도, 그것은 무료입니다.

+0

매우 철저하고 사려 깊은 대답, 감사합니다. 커스텀 UDP 바인딩을 작성하는 것보다 HTTP를 사용하고 싶다는 것은 의심의 여지가 없다. 헤더가 페이로드 사이의 "라인을 넘어"보내지는 크기가 줄어들 것이라고 믿었 기 때문이다. . 그래서 프로토콜 버퍼와 MTOM을 사용하여 HTTP를 통해 대역폭이 현저히 줄어들 것 같습니다. 오늘 밤 protobuf-net을 살펴볼 것입니다. – Sean

관련 문제