2010-02-01 2 views
2

XMLDocument를 웹 서비스 (.asmx)로 보내고 xmldocumetn의 파일 크기를 xmldocument.outerxml.tostring()으로 확인할 때 길이가 433434가 될 것입니다. 그것을 나타냅니다 ... 바이트로) 그래서 클라이언트에서이 데이터를 압축하고 내 로컬 하드 드라이브에 XML로 파일을 저장하지 않고 webservice로 보내려고합니다. 아무도이 문제에 대한 약간의 빛을 낼 수 있습니다 ... 미리 감사드립니다Webservice로 보낸 데이터 압축

답변

0

xmldocument.OuterXml.ToString().Length은 xml 문자열의 길이를 반환합니다. "something".Length처럼 9를 반환합니다. 따라서 아니오, 바이트가 아닙니다.

System.Text.ASCIIEncoding.Unicode.GetByteCount(s); 
System.Text.ASCIIEncoding.ASCII.GetByteCount(s); 
... 

사용하는 인코딩에 따라 다음 바이트

실제 크기는 exemple를 위해 당신이 사용할 수있는, 인코딩에 따라 달라집니다.

EDIT1 : 데이터의 양은 중요합니까? 유선을 통해 전송한다고 가정하면 데이터를 보내기 전에 데이터를 압축 할 수있는 많은 옵션이 있습니다.

사용자 지정 인코딩을 사용하여 상수 노드 이름을 "a", "b"...로 인덱싱하고 이후에 보내는 것과 같이 최대한 많이 보내는 데이터를 줄일 수 있습니다. 또한 청크로 보내보십시오. 파일 크기 때문에 시간 제한의 문제가있는 경우

, 나는 webservice.timeout 속성 당신은 아마 System.IO.Compression.GZipStream을 조사 할 On MSDN

+0

어떻게 webservice로 보내기 전에 데이터를 압축 할 수 있습니까 ??? – Sathish

0

에보고하는 것이 좋습니다. 웹 서비스는 동일한 클래스를 사용하여 압축을 풀어야한다는 것을 알아야합니다.

0

압축 전후에 일부 벤치마킹을 수행하십시오. 파이프의 각 끝에있는 압축/압축 해제가 페이로드에서 일부 바이트를 잘라서 저장 한 것보다 더 많은 시간을 추가한다는 것을 알 수 있습니다. zipping이 비용보다 더 많은 시간을 절약 할 수있는 단점을 찾아야합니다 (특히 XML을 통해 XML 문서를 펌핑하지 않는 한 LAN을 통해 1/2 MB, 많은 트래픽이 발생하지 않음).

0

과거에 .NET 압축 라이브러리를 사용해 본 경험이 좋지 않으므로 SharpZipLib을 사용하는 것이 좋습니다. byte[]을 허용하도록 웹 메소드 구현을 변경해야합니다.

또한 TCP 바인딩을 사용하여 WCF 서비스로 해당 서비스에 액세스 할 수 있으므로 대역폭이 적게 소비됩니다. 웹 메소드 서명을 함부로 다루기 전에이 옵션을 고려해야합니다.

관련 문제