2011-05-12 4 views
1

과거에 필자가 연구 한 시스템은 일반적으로 XML을 사용하여 클라이언트와 서버 사이에서 통신하고 결과 세트 등을 전송합니다. 그러나 현재의 프로젝트에서는 오브젝트 목록을 단순히 바이너리로 직렬화하고 와이어를 통해.클라이언트 - 서버 통신의 확장 성; XML v 직렬화 된 바이너리

새로운 필드가 많아서 '전송 객체'(더 자세한 설명이 부족함)의 크기가 커질 수 있습니다. 이것은 이론 상으로는 최대 10 만개의 객체를리스트로 나열 할 수 있다는 사실에 덧붙여서 XML을 사용하는 것보다 현재 접근법의 상대적인 성능에 대해 궁금하게 생각합니다. 내가 '성능'을 말할 때

나는 고려 : 객체의

  • 크기가 와이어를 통해 전송하고, 시간이
  • 시간 구문 분석하는 데 걸리는 전송을위한 준비가 객체를 조립하는 데 걸리는
  • 시간을 취해지고/우리가 UI에 표시하기 전에 다른 측면에서 역 직렬화

내 직감 느낌은 XML이 매우 자세한 얻을 수있는, 그래서 그렇게해야 할 수도 있습니다 나 같은 종류의 압축 ...하지만 필자는 직렬화 된 바이너리에 비례하는 방법에 익숙하지 않다. 어떤 종류의 접근법이 더 확장 성이 있는지, 아니면 "목적에 맞는"영역으로 들어가고 있는지에 대한 일반적인 합의가 있습니까? :)

어떤 조언을 주셔서 감사합니다.

건배, 데이브.

답변

2

저는 매우 일반적으로 말하자면 XML 직렬화가 다소 장황하고 빠르지는 않다는 것입니다.

바이너리 직렬화에 대해서는 구현을 모르기 때문에 판단하기가 어렵습니다. 물론 성능 비교를 할 수 있습니다.

공개적으로 사용 가능한 바이너리 프로토콜 구현을 살펴보고 XML에 대한 성능을 확인하는 것은 흥미로울 수 있습니다. Protocol buffersThrift이 마음에 들었습니다.

또한 다음을 확인하십시오 Performance comparison of Thrift, Protocol Buffers, JSON, EJB, other?

https://github.com/eishay/jvm-serializers/wiki/

+0

감사합니다. 우리는 Gemfire 캐시를 가지고 있기 때문에 Gemfire의 직렬화를 사용하고 있습니다 ... 좀 더 연구를 해보면 성능이 현저하게 향상 될 것입니다. 물론 모든 것에 한계가 있다고 생각합니다. 그들 만의 포럼에서도 엿 보일 수 있습니다. – f1dave