OkHttp
- Square 사에서 개발한 라이브러리
- 모바일 앱에서 사용하기에 최적화되어 있다.
- 단일 스레드 모델을 사용해서 비동기식으로 요청을 처리하는 게 특징이다.
- 이를 통해 네트워크 대역폭을 최대한 활용할 수 있고 성능이 좋다.
RestTemplate
- Spring Framework에서 지원하는 라이브러리이다.
- Java EE 애플리케이션 개발에 적합하다.
OkHttp vs RestTemplate
공통점
- 둘다 HTTP 클라이언트 라이브러리이다.
- RestFul API를 호출하는데 사용된다.
- 애플리케이션에서 HTTP 요청을 처리하고 응답을 분석하는데 사용 가능
차이점
- 성능 측면에서 OkHttp가 더 빠르고 최신 기술을 적극 활용한다.
- 개발자는 Spring Framework와의 연동성이 높기 때문에 RestTemplate 를 더 선호한다.
- 또한 RestTemplate 은 내장된 기능으로 인해 개발자가 쉽게 HTTP 요청 및 응답을 다룰 수 있다.
찾아볼 부분
Blocking I/O vs Non Blocking I/O
- 호출되는 I/O 함수가 바로 반환하는지 아니면 제어권을 가져가서 block하느냐의 차이에 따라 구분한다.
- Blocking I/O: I/O 작업이 진행되는 동안 유저 프로세스가 자신의 작업을 중단한채로 I/O가 끝날 때까지 대기하는 방식을 의미한다.
- I/O가 호출되면 제어권을 가져가서 애플리케이션이 멈춘다.
- Non Blocking I/O: A함수가 I/O 작을 호출했을 때, I/O 작업이 완료될 때까지 A함수의 작업을 중단하지 않고 I/O 호출에 대해 즉시 리턴하고 A함수가 이어서 다른 일을 수행하도록 하는 방식을 의미한다.
- I/O가 호출되면 결과를 즉시 반환하고 I/O가 완료될 때까지 대기하지 않는다. 제어권을 애플리케이션이 가지고 애플리케이션은 계속 동작한다.
- Non Blocking는 처리가 완료되지 않으면 에러를 회신하고 블록 상태로 만들지 않는 반면에 비동기 I/O는 처리를 바로 회신할 수 없을 때 처리가 완료되는 시점까지 백그라운드에서 대기하고 종료한 타이밍을 회시하는 차이가 있다.
Synchoronous vs ASynchoronous
- 호출되는 함수의 작업 완료 여부에 따라 이어지는 작업을 누가 처리하느냐에 따라 구분한다.
- synchoronous: 동기를 의미한다.
- 모든 요청, 응답이 일련의 순서를 따른다.
- Asynchoronous: 비동기
- 요청을 보냈을 때 응답 상태와 관련 없이 다음 동작을 수행한다.
- 작업 순서가 보장되지 않는다.
참고)
https://etloveguitar.tistory.com/140
'개발 일지' 카테고리의 다른 글
[12월 5주차] Vue.js 3 상위 컴포넌트 ↔ 하위 컴포넌트 데이터 전달 방법 (1) | 2023.12.31 |
---|