-
iOS - URLSession과 URLSessionTaskProgramming/iOS 2022. 3. 9. 20:06
안녕하세요 BeePeach입니다!
오늘 공부해볼 내용은 URLSession과 Task입니다.
iOS에서 HTTP통신을 통해서 데이터를 가져올 때 가장 많이 사용하는 오픈소스 라이브러리는 Alamofire일 겁니다.
Alamofire도 내부적으로 URLSession을 이용합니다.
그래서 Alamofire를 사용하는 방법에 대해서 공부해보기 전에 URLSession에 대해서 공부해보려고 합니다.
작성하다 보니 이번 포스팅에서는 코드가 아닌 개념만 다루고 있습니다.
URLSession 사용 방법은 다음 포스팅에서 계속됩니다!
URL Loading System
표준 인터넷 프로토콜과 URL을 이용해서 서버와 통신하는 것을 URL Loading System이라고 합니다.
지난 포스팅에서 살펴본 것처럼 http와 같은 표준 프로토콜과 URL을 이용해서 리소스에 접근하는 것을 이 system에서 제공해 줍니다.
그리고 이 작업들은 async하게 동작합니다.
URLSession 인스턴스를 이용해서 서버에서 data를 가져오거나 다운로드, 업로드를 수행하는 URLSessionTask 인스턴스를 생성할 수 있습니다.
그리고 URLSessionConfiguration를 이용해서 Session이 캐시와 쿠키를 사용할 것인지 셀룰러 데이터를 사용할 것인지와 같은 설정을 해줄 수 있습니다.
URLSession
URLSession이란 네트워크 데이터 통신 작업들을 관리하는 객체입니다.
URLSession 클래스는 URL이 가리키는 리소스에 데이터를 다운로드하거나 업로드하는 API를 제공해줍니다.
정리해서 말하자면 URLSession은 URLSessionConfiguration으로 생성하고 Session을 이용해서 URLSessionTask를 생성해서 이를 이용하여 서버와 통신하는 작업들을 관리하는 객체입니다.
URLSession의 종류
URLSession의 종류에는 4가지가 있습니다.
- Shared Session
- Default
- Emphmeral
- Background
하나하나 간단하게 살펴보도록 하겠습니다.
Shared Session
Singleton으로 만들어진 Session입니다.
가장 간단하게 사용할 수 있는 Session이고 Configuration을 따로 하지 않고 사용합니다.
Session설정을 할 수는 없지만 간단하게 데이터 통신을 할 때 많이 사용합니다.
Default Session
SessionConfiguration을 이용해서 Session을 직접 설정할 수 있습니다.
Delegate를 설정해서 데이터 통신 진행상황을 확인할 수 있습니다.
서버로부터 받은 데이터를 메모리와 디스크에 저장합니다.
Ephemeral Session
Emphemeral이라는 뜻은 수명이 짧은 이라는 의미입니다.
Default Session과 유사하지만 캐시와 쿠키 그리고 인증정보를 디스크에 저장하지 않습니다.
프라이버시 모드를 생각하면 이해하기 쉽습니다.
Background Session
앱이 background에 들어간 상태에서도 download와 upload를 가능하게 하는 Session입니다.
URLSessionTask
Session객체를 통해서 SessionTask를 생성할 수 있다고 했죠??
SessionTask의 종류도 4가지가 있습니다.
- Data Task
- Upload Task
- Download Task
- Stream Task
Data Task
Data Task는 data를 NSData 형식으로 보내거나 받습니다.
주로 서버에서 데이터를 주고받을 때 사용합니다.
API를 통해서 데이터 통신을 할 때 가장 많이 사용할 것이기 때문에 잘 기억해주셔야 합니다.
Upload Task
Upload Task는 DataTask와 비슷하지만 업로드에 특화되어 있습니다.
file과 같은 형태를 업로드할 때도 사용합니다.
그리고 background upload를 지원합니다.
Download Task
Download Task는 file 형태의 데이터를 받을 때 사용합니다.
마찬가지로 background download를 지원합니다.
Stream Task
Stream Task는 RFC 6455에 정의된 WebSocket프로토콜을 이용해서 양방향의 TCP/IP 연결을 통해 메시지를 교환할 때 사용합니다.
이 포스팅에서 URLSession을 이용해서 날씨 데이터를 가져오는 예제까지 다뤄보려 했는데
포스팅이 길어져서 사용하는 방법은 다음 포스팅에서 다뤄보겠습니다.
728x90'Programming > iOS' 카테고리의 다른 글
iOS - SwiftUI를 이용해서 Preview 보기 (0) 2022.03.12 iOS - Project의 Storyboard 삭제하기 (0) 2022.03.12 iOS - URL과 ATS (0) 2022.03.06 CI/CD - 입문하기 쉬운 Bitrise 사용해보기 (0) 2022.03.03 iOS - Cell안에 delegate를 두 객체에 연결하는 방법? (0) 2022.02.16