티스토리 뷰

Alamofire는 URLSession 기반의 네트워크 통신 라이브러리입니다.

Alamofire를 사용하는 이유는 코드의 가독성과 사용성입니다.

URLSession 기반 라이브러리 답게, request뿐 아니라 download, upload 등의 기능을 모두 사용할 수 있습니다.

 

일단.. 네트워크통신을 해보겠습니다..!!

간단히 이미지만 가져오는 로직을 구현하려 하는데.. 엥? url하나만 넣었는데 알겠다고..

잘 가져오는데 문제는! 네트워크작업인데 메인 쓰레드에서 하고 있다는 것..?

왜지... URLSession에서는 자동으로 백그라운드 쓰레드가 실행하도록 하는데..

 

Alamofire코드를 살펴보겠습니다~

 

1. AF ?

먼저 사용하는 방식에서도 알 수 있듯 AF는 싱글톤입니다.

Public let AF = Session.default로 구현되어있네요.

Session이 핵심로직을 품고 있습니다.

Alamofire 내부

2. rootQueue

역시 내부의 session을 사용하여 네트워크 통신을 합니다.

기존 URLSession에서 네트워크 통신을 위해 URLRequest, Header 등 을 설정하는 과정을 Alamofire에서 간편하게 만들어준 것이죠.

방금 메인 쓰레드에서 작업이 된 이유가 rootQueue, requestQueue변수에 있을 듯 합니다.

기본으론 응닶을 처리하는 탈출클로져가 main에서 실행된다고 되어 있네요...

 

응답값을 가져온 후 바로 UI를 변경하는 경우 편하기 위해 Alamofire에서 의도한걸까요?

그것보단 Thread-Safety 때문에 그런 것 같습니다. -> 경쟁상태방지!!

루트큐가 메인큐라면, 메인큐를 사용 (시리얼큐) 그 외 다른 큐라면 우리가 시리얼큐 하나 생성해줄께! 여기서 작업될거야.

 

3. URLRequest?

URLSession에서 요청에 필요한 정보를 담는 URLRequest객체를 만들었고, 이를 다시 URLSession에 담았습니다.

이러한 코드들을 간편하게 만들어줬다!

요청함수입니다.

URLConvertible은 url변수가 명시되어 있는 protocol이며 내부에서 RequestConvertible 객체에 받은 값들을 담아 인스턴스를 생성하고, 이를 통하여 요청합니다.

convertible외에 모두 옵셔널변수이기에 값을 넣지 않아도 첫번째 사진과 같이 요청이 가능했습니다.

 

경쟁상태 예방에 신경써주었고, 기본 큐가 메인이였던 이유를 알고 나니 ..

 

느낀점 : "오... Alamofire.. 섬세하구나.. 사람들이 많이 사용하는 이유가 있군.."

 

감사합니다!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함