본문 바로가기

학습 노트/iOS (2021)

207. URL Loading System

URL Loading System


iOS는 URL을 사용해 서버와 통신한다.
이를 가능하게 하는 URL Loading System은 서버연동, 다운로드, 업로드에 필요한 다양한 API를 제공한다.

URL Session

URL Session은 네트워크 연결 설정과 요청, 응답을 처리하는 역할을 한다.

  • Shared Session
    단순한 네트워크 요청
    기본값을 사용하며, Completion Handler를 사용해 완료값을 반환한다.
    Background 전송을 지원하지 않는다.
  • Default Session
    직접 Session을 구성할 때 사용한다.
    Delegate를 사용해 세부적인 제어가 가능하다.
    Disk Memory Cache에 완료값을 저장한다.
  • Ephemeral Session
    Default Session과 유사한 기능을 한다.
    Cache, Cookie의 사용으로 인증 정보를 Disk에 저장하지 않는다.
    주로 Private Browsing에 사용한다.
  • Background Session
    Background 전송을 구현할 때 사용한다.
    App 실행 여부와 관계 없이 파일을 업로드하고, 다운로드 할 수 있다.

Shared Session을 제외한 모든 Session은 Session Configuration 객체에 정의돼있다.

 

Task

URL Session을 통해 전달하는 개별 요청을 의미한다.

  • Data Task
    API 서버와 통신할 때 적합하다.
    사용 빈도가 가장 많다.
  • Upload Task, Download Task
    파일 전송에 사용한다.
    Background 전송을 지원한다.
  • Stream Task
    채팅 등의 TCP 프로그램에 적합하다.

URL Session이 제공하는 메서드를 사용해 원하는 Task를 생성 가능하다.
이 때 생성되는 Task는 바로 동작하지 않고, Resume() 메서드를 별도로 호출해야 동작한다.

이렇게 URL Session과 Task로 생성된 서버에서 전달 된 Data를 처리하는 방식에는 두 가지가 존재한다.

  • Completion Handler
    Task가 종료되면 한 번만 호출된다.
    서버에서는 Completion Handler로 단 한 번만 Data를 전달한다.
  • Session Delegate
    Task가 발생시키는 모든 이벤트에 세부적으로 대응해야 할 때 사용한다.

이 두가지 방식은 중복해 사용할 수 없다.

'학습 노트 > iOS (2021)' 카테고리의 다른 글

209. URL Session Delegate  (0) 2022.08.23
208. Data Task  (0) 2022.08.22
205~ 206. JSON  (0) 2022.07.13
204. App Transport Security (ATS)  (0) 2022.07.08
203. Display Web Contents  (0) 2022.07.06