바이너리 프로토콜을 사용하여 JSON over REST vs. TCP / IP를 사용하는 것에 대한 장단점이 분명히 있으며 바이너리 프로토콜이 더 빠를 것이라고 이미 생각하고 있습니다. 나는 당신이 얼마나 빨리 더 빠를 지 말할 수는 없지만 (그리고 이것은 많은 요소에 달려있을 것입니다) 1-2 크기의 차이가있을 것입니다.
언뜻보기에 어떤 것이 다른 것보다 10-100 배 느리면 무릎이 부딪 히고 "빠른 것"으로 갈 수 있습니다. 그러나이 속도 차이는 프로토콜 자체에만 있습니다. 서버 측에 데이터베이스 / 파일 액세스가있는 경우 선택한 전송 계층의 영향을받지 않습니다. 경우에 따라 전송 레이어 속도가 훨씬 덜 중요해질 수 있습니다.
HTTP REST와 JSON은 여러 가지 이유로 좋습니다.
- 그들은 거의 누구나 쉽게 소모품을 사용할 수 있습니다. 웹 응용 프로그램을 작성한 다음 다른 국가에서 사용할 수 있도록 API를 돌아서 게시 할 수 있습니다. 이제 누구나 동일한 엔드 포인트에 도달하여 서비스를받을 수 있습니다
- 그것들은 쉽게 디버깅 할 수 있습니다. 패킷 스니퍼를 열거 나 들어오는 요청을 텍스트 파일로 덤프하고 진행 상황을 볼 수 있습니다. 바이너리 프로토콜로는 그렇게 할 수 없습니다
- 그들은 쉽게 확장 할 수 있습니다. 나중에 더 많은 속성과 데이터를 추가 할 수 있으며 이전 클라이언트와의 호환성을 손상시키지 않습니다.
- 자바 스크립트 클라이언트가 소비 할 수 있습니다 (protobuf JS 파서가 있는지 확실하지 않습니다.
TCP / IP를 통한 프로토 타입 :
그것이 나의 선택이라면, HTTP REST와 JSON으로 손을 내밀 것입니다. 다른 많은 회사와 웹 사이트가 그 길을 갔다는 이유가 있습니다. 또한 앞으로는 항상 2 개의 엔드 포인트를 지원할 수 있습니다. 설계가 올 바르면 엔드 포인트 선택이 서버 측 비즈니스 로직 또는 데이터베이스와 완전히 분리되어야합니다. 따라서 나중에 모든 / 일부 요청에 대해 더 많은 속도가 필요하다는 사실을 알게되면 최소한의 번거 로움없이 프로토 타입을 추가 할 수 있습니다. 그러나 바로 박쥐, REST / JSON은 더 빨리 당신을 데려다 줄 것입니다.
Netty vs Spring이가는 한. Netty를 직접 사용하지는 않았지만 Spring은 단순한 웹 서버 일뿐 아니라 Spring은 단순한 웹 서버보다 훨씬 많은 것을 제공하는 프레임 워크라고 생각합니다. 그것은 데이터 액세스 계층, 백그라운드 작업 스케줄링 및 MVC 모델을 가지고 있으므로 훨씬 더 무겁습니다. 어느 것을 선택해야합니까? HTTP 방식으로 가기로 결정했다면 다음 질문은 아마도 표준이 앱의 표준입니까? 표준 금형에 맞지 않는 미친 커스텀 로직을 작성하려고하고 HTTP 서버 계층 만 있으면 Netty를 사용하십시오.
그러나 나는 당신이 응용 프로그램이 그렇게 특별하지 않다고 생각하며 Spring이 제공 해야하는 많은 것들로부터 이익을 얻을 수 있습니다. 그러나 이는 Spring의 프레임 워크를 중심으로 앱을 구성하고 원하는 방식으로 작업을 수행해야한다는 것을 의미합니다. 이는 제품에 들어가기 전에 Spring에 대해 더 많이 배우는 것을 의미합니다. 일반적으로 프레임 워크는 다시 빨리 빠져 나올 수 있기 때문에 훌륭하지만 단점은 자신의 디자인을 수행하는 대신 금형에 맞추고 프레임 워크가 제대로 작동해야한다는 것입니다.
(*)-과거에는 내 게시물이 전 세계의 의견을 반영하지 않는다는 것이 지적되었으므로 기록을 세우고 Netty에 대한 경험이 제한적이라고 덧붙였습니다 (이전에 Play 프레임 워크를 사용했습니다) Netty) 또는 Spring (나는 그것에 대해서만 읽었습니다)을 기반으로합니다. 그래서 내가 말한 것을 한 알의 소금으로 가져 가십시오.