📍 소켓 연결
- 소켓: 두 프로그램 사이에 일어나는 한쪽의 앤드포인트
- 클라이언트 & 서버가 특정 포트를 통해 연결 유지 (동영상 스트리밍, 온라인 게임)
📍 http 연결
- 80번 포트를 사용해 정보를 주고받는 프로토콜
- 클라이언트가 서버에 헤더/바디로 이루어진 메세지 요청(request)
- 서버가 처리하여 응답(response)반환
- connectionless : 통신이 필요할때만 연결 / stateless: 클라이언트가 서버를 기억해야하면 쿠키,세션으로 구분
📍 Rest Api
http기반으로 필요한 자원에 접근하는 네트워트 아키텍쳐
- 클라이언트와 서버의 분리
- 무상태(Stateless)
- 캐시 처리가 가능해야 함
- 시스템이 계층화(Layered) 되어있어야 함
- 일관성 있는 인터페이스
📍 Android에서 Http 통신
- httpClient > HttpUrlConnection > Volley(2013 출시) > 최근 OkHttp 발표
Retrofit
- OkHttp : Retrofit
- squareup에서 발표한 라이브러리
- 인터페이스 생성 > 인스턴스 > 동기/비동기적 구성
- Ktor : 코틀린을 통해 비동기 서버를 구축
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
GitHubService service = retrofit.create(GitHubService.class);
Call<List<Repo>> repos = service.listRepos("octocat");
Volley vs Retrofit -> Retrofit 코드 가독성이 더 좋음..!
구글의 권장 앱 아키텍처에서는 HTTP 통신에 Volley가 아닌 Retrofit을 추천하고 있다
출처 : 냉동코더의 기술블로그