데이터 전송 클라이언트 및 서버의 경우 일반적으로 다음 고려 사항이 :
1. 네트워크의 데이터 크기 - 대역폭, 전송 효율이 : 단일 사용자 있지만, 데이터의 소량의 전송하지만, 서버의 많은 높은 동시 데이터 전송을 실시하기위한 데이터 계정 대역폭을 고려해야합니다,이 않으려 고 중복 데이터는, 그래서 적은 대역폭과 전송 효율을 향상 적은 리소스를 많이 덜 네트워크 IO, 최대 걸릴 수 있습니다;

2. 네트워크 데이터 보안 - 네트워크 보안에 민감한 데이터 : 일부 데이터 전송 서비스가 민감한 데이터에 관련된 들어, 암호화 할 수있는 전송 데이터의 일부로 간주되어야한다;

3. 인코더 복잡도 - 직렬화 및 역 직렬화 복잡성, 확장 성, 효율성, 데이터 구조, 유지 보수성 : 해당 서비스 플랫폼에 맞는 코드는 데이터 송신 측과 데이터 수신 측의 데이터 처리를 달성하기 위해 고려되어야 할 확장 성, 유지 보수성, 노동 비용도 고려되어야한다 구현의 복잡성과 데이터 구조의 복잡성

4. 보편적 인 계약 - VW 사양 : 데이터 유형은 크로스 플랫폼해야합니다, 데이터 형식이가 시작하는 일반적으로 허용되는 일반이다;



우리는 여러 부문에서 프로토콜 유형으로 데이터를 비교 아래 :
사용자 정의 바이너리                
장점 : "1"이상에 대응하는 작은 크기의 정보              
단점 : 높은 복잡도 코딩 (메시지 포맷들이 정의 자신 직렬화 및 역 직렬화 프로세스 물품 나가기 내결함성 처리, 확장 성이 논리 처리 단부를 변경할 필요가 이러한 필드를 추가 할뿐만 아니라 강한) "상기에 대응 3 ";

그것은 오픈 소스 계약의 직렬화 및 역 직렬화 라이브러리를 제공합니다
장점 : 그것은 아주 쉽게 (적절한 라이브러리) 매우 편리, 직렬화 및 역 직렬화를 확산 인기 일반적인 데이터 형식, 오류 처리 편리 성 (라이브러리 지원)입니다;

계약의 텍스트
예를 들어, XML의 경우, JSON
장점 : 직렬화, 역 직렬화 쉬운 (라이브러리 지원) 디버깅, 시각화 강한 촉진하기 위하여
단점 : 큰 볼륨에 대한 바이너리 저장 공간을 점유



이 당신을 경우, 당신은 어떤 프로토콜을 선택할 것인가?
그 때문에 나는 다음과 같은 이유로 "오픈 소스 라이센스 또는 계약의 텍스트의 직렬화 및 역 직렬화 라이브러리를 제공하기 위해", JSON을 선택합니다 :
1. 사용자 정의 바이너리 전송 포맷 작업, 메시지의 정의에서 전체 프로세스, 쓰기, 실수를하는 것은 매우 쉬운 과정이 너무 복잡 읽기, 데이터 교환을위한 많은 프로그램, 거기에 많은 시간을 보낼 것입니다;

2. 사용자 정의 바이너리 형식은 확장 성이 아니라, JSON은이 문제를 해결할 수 있습니다;

3. 또한 전송 효율이 매우 높고, 그 자체가 경량 이진 비교하더라도, JSON 면적이 약간 크지 만, 우리는 네트워크 데이터 압축을 통해 해결 될 수 JSON;

약간의 빛이 당신에게 계약의 텍스트를 사용의 장점을 이야기 할 예정입니다; - 제 6 장 투명도, 텍스트, 생산 좋은 연습에 잘 일치 - 4. 제 5 장 그것의 "유닉스 프로그래머 아트"를 참조하십시오