회원가입 같은 로직에서 Ajax를 사용하는 이유를 알아보자.
첫번째 이유
요청에 대한 응답을 html이 아닌 Data(json)을 받기 위해서!
만약 브라우저가 회원가입을 요청했다고 하자,
요청을 받은 서버는 회원정보를 DB에 넣고, 브라우저에 응답을 보내줘야 하는데,
회원가입 성공을 하면 메인화면 html을 보내줄 수 있다.
근데 클라이언트가 항상 브라우저일 수는 없다!
예를 들어 앱의 경우 html을 받을 수 없다!
앱의 경우 그냥 정상을 의미하는 데이터를 보내줘서 이를 앱이 처리한다.
즉 앱과 웹의 원하는 응답이 다르다!
그러면 우리는 서버를 웹,앱 마다 새로 만들어줘야되는건가?
아니다! 우리는 그냥 데이터를 응답하는 서버를 만들거다.
그렇다면 브라우저가 어떻게 이를 인식하는가?
브라우저가 요청한 회원가입을 서버가 처리해 데이터를 브라우저에게 응답해주면,
브라우저는 바로 메인화면을 보여달라는 요청을 보내도록 한다.
그러면 서버는 html파일을 응답하고 브라우저는 그 파일을 표시하도록 작동한다.
앱은 그냥 데이터 받으면 자기가 메인화면을 띄울 수 있으므로
(즉 html파일을 요청하지 않아도 되므로)
즉시 메인화면으로 이동한다.
이렇게 앱과 웹에서 모두 데이터를 응답받을 수 있게 처리하는게 Ajax의 사용하는 이유다.
두번째 이유
비동기 통신을 하기 위해서(순서에 상관없이 처리)
순차적으로 작업을 진행할 경우, 시간이 오래걸리는 작업을 기다리느라(이를 peding이라함)
다른 작업들은 기다리기만 하면 상당히 답답할 것이다.
예를 들어 RAM과 HDD가 사용되는 작업(IO 등..)을 기다리느라
CPU가 필요한 작업이 아무것도 못하게 되는 상황은 비효율적이다.
Ajax는 작업을 순차적으로 진행하지 않는다.
CPU가 필요하지 않은 작업은 다른 파트(RAM, HDD 등..)에 넘긴다.
만약 CPU가 필요한 작업 중, 다른 파트의 작업이 필요한 경우
(다운로드 받은 파일을 화면에 띄우기 등..)
다른 파트에서 필요한 작업을 마무리 할 때까지 다른 작업을 하고 있거나, 대기하고 있는다.
이런 작업 형태를 비동기적 작업이라고 한다.