WCF를 사용하여 통신하고 NetDataContractSerializer를 사용하여 개체 그래프를 직렬화하는 클라이언트 - 서버 응용 프로그램이 있습니다. 많은 양의 데이터가 서버와 클라이언트 사이에 전송되기 때문에SOAP 메시지가 아닌 이진 방식으로 WCF 메시지를 serialize하십시오.
는 I은 미세 조정에 의해 데이터 부재의 크기 (예를 들면 등을 int로 길고 짧은하는 int 변경)를 크기를 감소시키는 시도.
튜닝을 마치면 전송 된 데이터의 양이 변경되지 않았 음을 알았습니다!
문제는 NetDataContractSerializer가 개체 그래프를 XML로 직렬화하므로 데이터 멤버의 크기가 무엇이든 문제가되는 것은 그 값의 크기뿐입니다. 예를 들어 Int16 데이터 멤버의 값 10023은 10023 (0x2727) 대신 "10023"(0x3130303233) 문자열로 serialize됩니다.
Remoting에서는 데이터 멤버의 유형에 따라 값을 serialize하는 BinaryFormatter를 사용할 수 있지만 WCF와 함께 사용할 수 있는지 여부는 알 수 없습니다.
누군가 해결책이 있습니까?
그래서 무엇입니까? 직렬화 시간이 단축 되었습니까, 아니면 메시지 크기가 줄었습니까? –
이 사용자 지정 바인딩과 명명 된 파이프 전송과 함께 binaryMessageEncoding을 사용했으며 WCF 테스트 클라이언트는 물론 추적 수신기의 메시지 로그에 따라 메시지가 여전히 XML 인코딩입니다. 나는 원시 메시지를 가져 오는 것보다 로그에 객체의 XML 직렬화를 수행하지 않는다고 100 % 확신하지는 않습니다. WCF를 사용하면 원시 요청/응답 대 WebAPI를 쉽게 처리 할 수 있습니다. – AaronLS
이 답변은 도움이 되겠지만 바이너리 인코딩은 메시지가 '유선'으로, 즉 직렬화 된 후 어떻게 전송되는지 만 변경한다는 점에 유의하십시오. 이것은 확실히 데이터 크기를 줄이지 만 직렬화 방법은 변경하지 않습니다. 더 나은 결과를 위해 압축시 이진 인코딩을 사용할 수 있습니다. –