질문 : 개발자가 자신의 serialize 형식을 만드는 것이 얼마나 일반적입니까? 특히, 자바를 사용하여 본질적으로 변수를 구분하는 토큰이있는 거대한 문자열로 개체를 보냅니다.개체 보내기/직렬화 모범 사례
My Logic : 언어 의존성 (Java의 수정 된 UTF-8 무시)이 거의 없으며 객체 버전 문제가 없기 때문에 이것을 선택했습니다. Java의 직렬화를 사용하는 경우 정확한 수신자가 있어야합니다. 이전 버전에서 실행중인 클라이언트가 오브젝트 데이터를 수신 할 수 없도록 오브젝트의 동일한 버전. 코드가 너무 추한 아니지만 괜찮아,하지만 내 질문에이 인스턴스에 대한 모범 사례 무엇입니까? 이것은 개인 프로젝트를위한 것입니다.
기타 알려진 선택 사항 : 알았습니다. 객체를 네트워크를 통해 전송하기 위해 일련 번호를 지정하고 googles 프로토콜 버퍼를 발견했습니다. 객체를 직렬화하는 것이 얼마나 표준화되어 있습니까? 근본적으로 세 가지 방법으로 나왔습니다. (내가 자바에 관해서 이야기 할 것이다.) 1) 언어의 (자바의) 네이티브 직렬화 클래스를 사용한다. 2) 문자열과 토큰을 사용하여 객체를 직렬화하는 자신 만의 방법을 사용한다. 3) 프로토콜 버퍼를 사용한다. 1) 속도/효율성/크기 2) 언어 독립 3) 버전의 수용 : 난 당신이 기본적으로 직렬화 할 때 달성하기 위해 3 개 주요 목표를 가지고 수집 한 것과는 다른 알려진 형식 (JSON, XML 등)
(코드의 구버전은 여전히 새로운 버전의 부분을 받아 들일 수 있습니다. &)
대부분의 대형 소프트웨어 프로젝트는 프로토콜 버퍼를 사용합니까? 클라이언트가 리소스가 훨씬 적은 모바일 장치 인 경우 변경됩니까?
그래프를 처리합니까? – bestsss
아니요, 개체는 일반적으로 연락처 정보 (이름, #, 주소)와 같이 매우 작습니다. 문자열을 사용하여 내 "직렬화 된"형식을 작성하여 알 수 있습니다. 이름/전화 번호와 같은 개체의 일부만 요청/보낼 수 있으므로 200-300 개의 연락처를 요청할 때 매우 빠릅니다. –
목표를 잊지 마세요. 4) 데이터를 망가 뜨리지 마십시오. 분명히 알고 있지만 구분 문자로 문자 인코딩을 작성하는 것은 고전적인 문제 (예 : 데이터에 포함 된 구분 기호, 기타 이상한 문자 등)가 있습니다. – jtahlborn