2012-10-18 3 views
1

Android 인벤토리 앱이 있습니다. 이 순간에 앱은 https를 통해 서버와 통신하고 있습니다. 이미 gzip을 사용할 수 있으며 작동 중입니다. 사용자가 바코드를 스캔하면 앱에서 해당 코드와 전화 ID를 서버로 보냅니다. 나는 XML을 통해 그것을한다. 그런 다음 서버는 XML 마녀가 일부 데이터를 포함하여 응답합니다. 창고마다 같은 양, 가격, 제품 이름입니다. 그런 다음 사용자가 금액을 확인하고 앱이 서버로 다시 전송되며 메시지 (ok 또는 ok)로 응답합니다.애플리케이션 업로드 및 다운로드 속도를 최소화하십시오.

인벤토리가 WiFi를 통해 이루어지는 경우 문제가되지 않습니다. 속도는 좋으며 대기 시간은 짧습니다. 그러나 인벤토리가 모바일 네트워크를 통해 이루어지는 경우 통신은 대기 시간과 관련됩니다. 통신을 위해 바이너리 형식을 만들어야합니까? 그리고 XML 데이터에는 큰 오버 헤드 (태그와 같은 불필요한 데이터 등)가 있습니다. 또는 통신에서 데이터 양 최소화와 관련한 표준 또는 모범 사례가 있습니까?

답변

1

페이로드의 크기를 줄이는 것이 주된 관심사라면 XML에서 다른 형식을보고 싶을 것입니다. 인기있는 옵션 중 하나는 Google에서 제공하는 protobuf입니다.

+0

대기 시간을 줄이려면 ... – Guntis

+1

"대기 시간"이란 무엇을 의미합니까? 무엇 사이의 지연? 네트워크 대기 시간은 사용자의 통제하에 있지 않습니다. 당신이 제어 할 수있는 것은 클라이언트와 서버 사이에서 페이로드의 크기와 아마 서버가 실행하는 코드의 성능 사이를 오가는 횟수입니다. – kabuko

1

앱에서 대기 시간을 조정할 수 없습니다. 전송 속도를 높이려면 페이로드를 작게 만들 수 있지만 그게 전부입니다. JSON을 살펴보십시오. XML보다 훨씬 가볍고 거의 모든 언어에서 기본적으로 사용됩니다.

0

클라이언트에서 서버로 전송되는 요청이 너무 많으면 서버 API를 변경하는 것이 좋습니다. 예를 들어 인벤토리를 가져올 때 제품 카테고리를 가져 오기 위해 별도의 API를 가질 수 있으며 카테고리를 가져온 후에는 각 카테고리에 대한 제품을 가져 오기 위해 별도의 호출을 실행하고 각 제품에 대해서는 세부 정보를 얻기위한 API가 있습니다. 요청 수를 최소화하기 위해 모든 카테고리, 각 카테고리의 모든 제품 및 이들 제품의 세부 사항을 제공하는 단일 API를 작성할 수 있습니다. 이 방법은 클라이언트와 서버 사이의 요청 수를 줄여줍니다.

페이로드의 크기가 너무 큰 경우 JSON을 좀 더 가볍게 사용해 볼 수 있습니다.

관련 문제