Concurrency
- 네트워크 이해하기 전에, concurrency(동시성)를 알아보자
- Concurrency: 여러 개의 작업이 동시에 일어나게 보이게 하는 것
- 이것은 다른의미로는 어떤 작업들이 순서에 상관없이 동시에 수행될 수 있음을 얘기함
Thread
- 각각의 작업들은 Thread에서 실행됨
- Main-Thread : 화면 표시 및 사용자 인터랙션을 받는 작업 수행
- 데이터를 화면에 보여주기
- 버튼 클릭 이벤트 감지하기
- Bacground : Main-Thread 외에 작업들
- 네트워크에서 데이터를 다운받을 때나
- 디비에서 데이터를 읽어 온다던가
- Custom : 지정된 스레드를 통해서 작업할 때 사용
- 카메라를 통해서 들어온 영데이터 가공 시
- 오디오 데이터 변조시
Async vs Sync Task
- Async(비동기) vs Sync(동기) 작업의 차이
- 동기: 요청과 리턴이 같음
- 비동기: 요청과 리턴이 동시가 아님
Sync
Async
실제 사용에서
특히, 네트워크 사용시
HTTP
- 서버와 대화하는 방식 (통신 규약)
- 데이터 요청
- 데이터 응답
데이터 요청
- URL: 서버에 데이터를 요청하기 위해 입력하는 영문 주소
- 요청 메소드
- GET: 존재하는 자원에 대한 요청
- POST: 새로운 자원을 생성
- PUT: 존재하는 자원에 대한 변경
- DELETE: 존재하는 자원에 대한 삭제
데이터 응답
- status code
- 2xx: 성공
- 3xx: 리다이렉션 메시지
- 4xx: 클라이언트 에러
- 5xx: 서버 에러
- body(요청한 데이터들)
HTTP 요약
- 요청시, URL + Request Method가 필요
- 응답시, Status Code + Response Body (JSON)으로 처리