URL Loading System

GUNDY·2025년 5월 2일
0

iOS

목록 보기
2/4

Swift로 인터넷 작업을 수행하는 방법에 대한 이야기


Swift에서는 인터넷 작업을 어떻게 수행할까?

우리의 친절한 애플은 그 방법을 문서로 정리해뒀다.

URL Loading System

되도록 개발자는 공식문서를 먼저 찾아보는 게 좋다고 생각한다.

하지만 사실 영어로 된 문서를 읽는 것은 피곤한 작업이기 때문에 찍먹으로 간단히 보고 싶은 사람들을 위해 이 포스트를 남겨본다.

URL Loading System

표준 인터넷 프로토콜을 사용하여 URL과 상호 작용하고 서버와 통신합니다.

여기서 말하는 인터넷 프로토콜은 IP를 말하는 것일까?

No

IP라는 특정 프로토콜을 의미하는 게 아니라 인터넷에서 데이터를 주고받기 위해 사용되는 다양한 프로토콜들을 의미한다.

가장 친숙한 예시로는 HTTP/HTTPS가 있을 것 같다.

그런데 인터넷도 프로토콜도 URL도 들어는 봤지만 개념이 뭔지 잘 모르는 사람들도 있을 것 같다.

나도 비전공자라 처음 Swift로 인터넷 통신을 하는 기능을 구현할 때엔 CS적인 네트워크 관련 개념이 생소하긴 했는데, 시간이 지나고 보니 네트워크를 공부하면 이러한 URL 로딩 시스템을 더 깊이있게 이해할 수 있는 것 같다.

진입 장벽이 낮아지는 것은 덤.

혼자 공부하는 네트워크 유튜브 강의

비전공자에게 추천하는 네트워크 강의도 하나 놓고 간다. 나는 책을 샀지만 유튜브만 봐도 좋은 것 같다.

Overview

URL 로딩 시스템은 URL로 식별된 리소스에 대한 액세스를 제공합니다.

Foundation 프레임워크에서 제공하는 URL 로딩 시스템은 그 이름답게도 URL을 사용한다.

URL이란?
Uniform Resource Locators의 약자로, 웹에서 HTML 페이지, CSS 문서, 이미지 등 리소스의 위치를 나타내는 주소를 뜻한다.

인터넷 브라우저에 주소를 입력해서 특정 사이트에 가는 것도 URL을 사용해서 해당 사이트의 HTML 페이지 리소스를 받아 화면에 보여주는 것이다.

중요한 것은 URL을 사용해서 리소스를 받는 작업은 시간이 걸리는 작업이기 때문에 URL 로딩 시스템은 이러한 작업을 비동기적으로 수행한다.

그렇지 않았다면 iOS 앱은 인터넷을 쓸 때마다 앱이 멈춰서 작업이 완수되길 기다렸을 것이다.
빨리빨리의 대한민국에서는 용납할 수 없는 일.

리소스에 대한 액세스를 위해, 즉 상호작용하기 위해 URLSession이라는 타입의 인스턴스가 필요하다. 이 세션을 사용해 리소스 다운로드 같은 작업을 수행할 수 있는 URLSessionTask를 만들 수 있다.

URLSessionshared라는 싱글톤 객체도 제공하고 있고, 원한다면 직접 만들어서 사용할 수도 있다.

왜 싱글톤 객체가 있는데 따로 만들어서 씀?

하나의 세션으로 여러 작업을 만들어내서 수행할 수 있지만 다양한 설정으로 작업을 수행하고 싶을 때는 여러 세션이 필요할 수도 있다.

예를 들어, 웹 브라우저는 일반 브라우징과 비공개 브라우징을 위한 별도의 세션을 가질 수 있으며, 비공개 세션은 데이터를 캐시하지 않습니다.

애플의 예시인데, 설명을 들어보면 생각이 나는 것도 있을 것이다.

아무튼 이 URLSession 인스턴스를 만들기 위해서는 세션의 동작과 정책을 정의하는 URLSessionConfiguration 객체가 필요하다.

세 줄 요약
1. 네트워크 작업을 만들고 관리하는 URLSession
2. 리소스 다운로드 등의 작업인 URLSessionTask
3. 세션의 동작과 정책 등을 정의하는 URLSessionConfiguration


마무리

이 뒤에 URLSession 및 관련된 타입들에 대해 적을까 했는데, 너무 긴 글은 요즘 트렌드가 아닌 것 같아서 이만 줄여본다.

궁금하다면 이어질 URLSession 글과 URLSessionTask 글도 기대해달라.

아님 공식문서를 보는 것도...

그럼 이만

profile
개발자할건디?

0개의 댓글