네트워크 통신이 이루어지는 2가지 방식
1) TCP / UDP 를 사용하는 소켓 방식의 연결성 통신
2) HTTP, HTTPS, SMTP등의 프로토콜을 이용한 비연결성 통신
[1. 소켓 방식의 연결 지향 통신]
소켓을 이용한 네트워크 통신 방식은 보통 저수준 (low level) 통신을 통하여 구현됨.
일단 앱과 서버가 연결되면 한쪽에서 명시적으로 끊을 때까지 지속해서 연결을 유지하는 방식
1) TCP 연결: 데이터 유실을 방지하고 완전한 전송을 보장하지만 상대적으로 덜 빠르다
2) UDT 연결: 데이터의 완전한 전송을 보장하지 않지만, 상대적으로 더 빠름.
[2. 비연결 지향 통신]
대표적으로 HTTP/HTTPS 프로토콜. 웹 서비스에 주로 사용된다.
비연결성 프로토콜은 요청이 들어오면 이에 맞는 응답을 보낸 후 바로 연결 종료함.
다시 요청하기 위해서는 새롭게 연결 맺어야 함.
웹 서비스 = 데이터만을 주고 받을 수 있도록 설계된 모듈(웹 페이지랑 다름)
웹 서비스는 아키텍쳐 구조애 따라 SOAP, RESTful 방식으로 나눈다.
데이터 타입에 따라서는 XML, JSON방식에 따라 나눈다.
*SOAP 방식
Simple Object Access Protocol
HTTP,HTTPS,SMTP등의 프로토콜을 통해 양쪽에서 XML형태의 메시지를 주고 받도록 구현된 프로토콜.
클라이언트-서버 구조의 메시지 패턴을 많이 사용
Envelope/Header/Body의 세가지 영역으로 구분.
Header- 선택사항. 반드시 포함하지 않아도 되지만, 일단 사용될 때에는 반복이나 보안 및 트랜잭션 정보로 하는 메타 정보 처리
body- 전달하고자 하는 핵심 내용
*RESTful 방식
WWW(world wide web)과 같은 분산 하이퍼 미디어 시스템을 위한 소프트웨어 아키텍쳐의 한 형식
REST 는 실질적인 네트워크 프로토콜은 아님.
단순히 네트워크 자원을 정의하고 자원에 대한 주소를 관리하는 방법.
REST란 웹 형식을 빌어 데이터를 전송하되, SOAP나 쿠키 등 별도 전송 프로토콜 없이 전송하기 위해 만들어진 간단한 형식의 인터페이스.
HTTP프로토콜을 바탕으로 필요한 데이터를 별도의 규약 없이 주고받기만 하면 된다.
더 단순화 하자면, 특정 웹페이지를 보기 위해 웹브라우저에 URL을 입력하는 것처럼, 데이터를 요청하는 URI를 네트워크를 통해 서버에 전달하면 서버에서는 그에 맞는 응답 데이터가 전송된다.
RESTful 시스템: 일반적으로 서버에게 요청하려는 정보를 URI를 통해서 나타낸다.
요청정보는 URI단위마다 슬래시/로 구분.
RESTful API구성을 위한 URI에는 정보의 분류 체계만 포함.
HTTP :action. GET(데이터 요청), POST(데이터 전송)
[데이터 구조와 특성]
XML 방식
:요청에 대한 응답 데이터를 XML포맷으로 제공하는 것.
SOAP, RESTful API 모두 XML방식으로 만들어진 결과를 제공할 수 있다.
JSON방식
XML방식:데이터 용량이 지나치게 커진다는 단점 -> 보완 -> 경량의 데이터 교환형식 :JSON
1) 집합 구조: 여러 속성을 정의하는 순서 없는 집합 - {키: 값, 키:값 ..} - JSON객체
2) 리스트 구조: 비슷한 객체가 반복 나열되는 순서화된 리스트 - [객체1, 객체2, 객체3, ... ] - JSON배열
1)JSON객체: 사전식 데이터 집합. {키:데이터} (키워드 - 내용) 한 쌍을 이룬다.
문자열을 표현할 때만 큰따옴표를 붙여준다. (큰따옴표- 더블쿼우팅, 작은따옴표 - 싱글쿼우팅quoting)
2)JSON배열: 여러가지 아이템 나열
[오픈 API와 공공 컨텐츠]
오픈 API: 일부 웹 사이트에서는 공개된 SOAP프로토콜이나 RESTful형식을 사용하여 공공콘텐츠 제공
공공 데이터 포털
서울 열린 데이터 광장
네이버 오픈 API
출처: 꼼꼼한 재은씨의 swift 기본편 p590~
'iOS > iOS Swift 개발 일기' 카테고리의 다른 글
iOS swift 재사용 매커니즘 (0) | 2022.05.29 |
---|---|
iOS swift REST API로부터 데이터를 읽어오기 (0) | 2022.05.29 |
iOS swift 셀프 사이징 셀 (0) | 2022.05.28 |
iOS swift 테이블 뷰의 행 높이를 결정하는 방식 (0) | 2022.05.28 |
iOS swift 이미지 객체로 인한 메모리 점유가 걱정될 때 (0) | 2022.05.28 |