2011년 10월 30일 일요일

Silverlight 와 서버와의 객체 통신에서 압축 방식의 장점

통신 시 어떤 경우가 되었건, 같은 정보가 전달될 때에는 작은 양이 작은 횟수로 전달 되는 것이 가장 바람직합니다. 그래야 통신 비용이 절감되고, 통신에 따른 지연을 막을 수도 있습니다.

요즘 한창 Silverlight와 서버와의 통신 방식에 대해 개발하고 있습니다만, .NET이나 Microsoft 에서 제공하는 기본 방식의 경우는 브라우저와 같은 방식으로 Data 를 Client 로 다운로드 할 때에만, 옵션으로 압축을 제공합니다. 물론 WCF 에서 압축 모듈을 서로 사용하면 가능합니다만, 그게 바로 족쇄가 될 가능성이 있어, 자체적으로 일반적으로 많이 사용하는 Data 압축 방식을 이용한 통신을 수행하도록 해 봤습니다.

image

JSON 방식으로 객체를 Serialize 하고, 압축을 수행하였더니, 4MB 정보인 것이 246K 정도로 확 줄었습니다. 원본에 비해 5.67% 로 크기가 준 것이지요. 이렇게 되면 통신 속도가 엄청 좋아지겠죠?

BZip22 알고리즘을 사용하였으므로, GZip 보다는 압축률이 좋을 것입니다. LZMA 알고리즘의 경우는 더 좋을 수도 있지만, 수시로 압축/복원을 수행하는 통신 모듈에는 적당하지 않는 것 같습니다. 일반적으로 가장 적당한 방식은 GZip 이 되겠습니다.

이제 서버 단에서 압축을 풀고, 작업하고, 결과를 압축하여 반환하는 모듈을 제작하면, 통신 라이브러리가 완성됩니다.

댓글 1개:

Jeojy0109 :

언제나 도움 되는 좋은 글 감사합니다 ^^