2012-10-12 3 views
0

새 릴리스가 거의 완료되면서 WCF 서비스가 Silverlight 클라이언트에 반환하는 XML 데이터의 크기가 크게 줄어 들었습니다. 이제 데이터를 축소하는 방법을 조사 중이므로 결과가 10-100MB 범위가 아닙니다.Silverlight 와이어를 통한 이진 직렬화

바이너리 직렬화가 해결책 인 것처럼 보입니다. 예를 들어 SharpSerializer와 같이 이진 데이터로 데이터를 직렬화하는 것이 쉽지만 바이너리 직렬화 및 다른 튜토리얼에 대한 모든 게시물을 통해 알 수 있습니다. , 어느 누구도 직렬화 된 데이터를 유선을 통해 클라이언트에 보내는 방법을 설명하지 않습니다. 나는 WCF 서비스 퍼즐에 대한 명백하고 중요한 부분을 놓치고 싶다.

누군가 나를 도와 줄 수 있기를 바랍니다. 더 많은 정보를 포함해야하는지 알려주세요.

+0

이진 serialization은 byte []를 반환합니다. 유선으로 전송하는 데 문제가 있습니까? – empi

+0

그래서 서비스가 byte [] 객체를 반환하는 것처럼 간단할까요? – Nathan

답변

1

우선 기본 제공된 이진 인코딩을 사용하십시오 (<binaryMessageEncoding>, 구성은 http://www.mostlydevelopers.com/blog/post/2009/10/14/Silverlight-3-WCF-Binary-Message-Encoding.aspxhttp://www.silverlight.net/learn/data-networking/network-services-(soap,-rest-and-more)/how-do-i-use-binary-encoding-for-wcf-with-silverlight-3 참조).

데이터가 축소 될 수 있지만 내장 바이너리 인코딩은되도록 빨리 작게 디자인되었습니다.

바이너리 데이터의 직렬화를 위해 3rd party 구성 요소를 사용하려면 실제로이 데이터를 byte []로 반환 할 수 있습니다 (단, <binaryMessageEncoding>) WCF가 데이터를 base64로 인코딩하지 못하도록하여 유효한 XML로 만듭니다. byte [] 대신 Stream을 사용할 수도 있습니다. Silverlight 클라이언트 측에서 실제 스트리밍 동작을 제공하지는 않지만 서버 측에서 진정한 스트리밍을 제공 할 수 있습니다.

+0

감사합니다. 두 번째 링크가 특히 유용했습니다. 여전히 작업 컨텍스트로 변환하는 데 문제가 있었지만 web.config에서 바인딩 및 정의 서비스조차하지 못한다는 사실이 나타났습니다. 한 번 생각한 후에는 구문을 올바르게 가져 오는 것이 중요합니다. – Nathan