IOS application/Networking

7. URLSession 개념

개발자킹콩 2021. 4. 18. 15:34

 

URLSession 개념

 

앱과 서버간의 데이터를 주고 받을 때는 HTTP라는 통신규약으로 주고 받는다고 했다.

실제 IOS 앱에서는 HTTP를 이용한 Networking를 어떻게 할까?? —> URLSession

 

 

여기서 헷갈릴 수 있으니 한번 더 강조하자면,

  • IOS에서 네트워킹을 하기 위한 클래스는 URLSession이다.
  • URLSession을 통해 네트워킹을 하려면 서로간의 약속이 되어있어야 하는데 이러한 통신 규약이 HTTP이다.
  • 네트워킹을 할 때 효율적으로 네트워킹을 하기 위해 동시성이라는 개념을 이용하는데, 이때 사용하는 것이 GCD 이다.

 

 

 


 

 

 

URLSession API

 

 

IOS에서 네트워킹을 하기 위해서는 URLSession이 필요하다.

URLSession은 URLSessionConfiguration을 이용해서 생성을 하게 된다.

 

URLSession은 여러 URLSessionTask를 만들 수 있다.

이 여러 URLSessionTask를 통해서 실제 서버와의 통신을 하는 것이다.

 

URLSession Delegate를 통해서 Networking 중간 과정을 확인해 볼 수 있다.

중간과정 확인은 필수는 아니며 필요에 따라 지정하면 된다.

 

 

 

 


 

 

 

 

그렇다면 URLSessionConfiguration을 살펴보자

 

 

 

 

 

URLSessionConfiguration을 생성할 때는 URLSession의 정책에 따라서 Default, Ephemeral, Background 3가지 타입으로 만들 수 있다.

 

  1. default는 기본 통신을 할 때 사용하면 된다.
  2. Ephemeral(수명이 짧은)은 쿠키나 캐시 같은 것을 저장하지 않게 정책을 가져갈 때 사용한다. (쉽게 설명하면 크롬, 사바리에서 이그니토, private 기능, 시크릿 기능 이라고 생각하면 된다.
  3. Background는 앱이 백그라운드에 있을 때, 컨텐츠를 다운로드, 업로드 할 때 사용하면 된다.

 

강의에서는 대부분 Default로 이루어 질것이다. 

이 네트워킹 자체가 어떻게 이루어지는지에 대한 설정이다.

 

 

 

 


 

 

 

 

URLSessionTask

 

실제로 URLSessionTask를 통해서 실제 Server와 통신이 이루어진다.

URLSessionTask의 경우에도 작업에 따라 크게 3가지로 나누어 진다.

 

 

 

 

 

 

  1. DataTask: 기본적인 데이터를 받는 작업이면 DataTask를 사용하자. URLSessionDataTask의 경우에는 Response 데이터를 메모리 상에서 처리하게 된다. 그래서 간단한 데이터 받을 때 사용한다. 그리고 background session에 대한 지원이 안된다. 그래서 앱이 백그라운드에 있을 때 URLSessionDataTask를 통해서 서버를 통해 데이터를 받아올 수 없다.
  2. UploadTask: 파일을 업로드 할때 사용한다. 여기서 좀더 편하게 업로드 하도록 request body를 제공한다.
  3. DownloadTask: 파일을 다운받아 디스크에 쓸때 사용한다. 

 

 

 

 

 


 

 

 

정리하자.

 

  1. IOS에서 Networking을 할때는 URLSession을 통해서 한다.
  2. 그 URLSession을 만들려면 URLSessionConfiguration을 통해서 생성해야한다. 
  3. 그렇게 생성된 URLSession에서 실제로 네트워킹 작업을 하기 위해서는 URLSessionTask를 통해서 수행한다.

 

 

 

 

 

 

 

 

 

'IOS application > Networking' 카테고리의 다른 글

9. URLSession 실습 2  (0) 2021.04.20
8. URLSession 실습1  (0) 2021.04.18
6. GCD 실습  (0) 2021.04.17
5. DispatchQueue는 어떻게 사용할까?  (0) 2021.04.16
4. GCD (Grand Central Dispatch)  (0) 2021.04.15