본문 바로가기

   
Programming/Ajax

Ajax란 무엇인가

반응형

Ajax란 무엇인가

Ajax라는 말은 2005년 2월 18일에 Adaptive Path라는 회사에 일원이 올렸던 블로그 글하나가 계기가 되어 수식간에 세계로 퍼졌다고 합니다.


얼마 안되 전세계 웹 개발자들이 Ajax에 뜨거운 관심을 보였고 구글이 선도적으로 Ajax 채택으로 많은 개발자들이 구글 사이트에 쓰인 기술을 분석하여, 자바, PHP,Perl 등을 통해 Ajax 관련 툴과 실험사이트가 탄생 했습니다.


Ajax의 핵심은 HTTP 클라이언트를 이용합니다. 인터넷을 대표하는 프로토콜인 HTTP가 기본이 되기 때문에 응용 분야가 매우 넓습니다. 


Ajax는  Asynchronous JavaScript And XMl(비동기 자바 스크립트와 XML의 약자) Ajax에서 XML은 필수가 아니며 TEXT 나 JSON을 사용해도 됩니다.

XML이 굳이 아니어도 상관 없는데 이름은 그렇게 되어있네요.


Ajax의 첫글자 A는 Asynchronous 비동기를 뜻한다.

비동기라는 의미는 서버에 응답을 기다리지 않아도 된다는 의미입니다.


기본적으로 웹프로그램은 사용자가 서버에 요청을 보내면 응답이 올때까지 기다려야 합니다.


Ajax는 일방적으로 비동기 응답을 콜백(callback)으로 수신합니다. Ajax에서 readyState 값이 4라는 의미는 응답을 완전히 받은 상태일때 콜백이 일어나도록 한다고 되어있습니다.


정리 하자면 브라우저(사용자가 인터넷을 이용) -> 로그인시 서버에서 체크를 해봄니다. 그러면 이결과를 다시 브라우저에게 전달 -> 서버에 답변이 올때까지 대기........ 이때 인터넷 홈페이지는 페이지가 로딩되고 있죠 새로고침 하는것처럼 ajax는 이과정 없이 바로 답을 가져올수 있습니다. 페이지 리로딩도 없이 결과를 가져올수 있습니다.




Ajax의 장점과 단점

Ajax는 브라우저에 기본 내장되있는 JavaScript와 HTTP통신 기능을 사용하여 사용자의 페이지 전체를 리로드 하는일 없이 서버와 데이터를 송수신 할수 있습니다. 


장점

1. 페이지 이동 없이 고속으로 화면을 전환

html에 폼 버튼을 눌러 서버에 데이터를 보내면 그것을 받은 서버는 새로운 페이지를 브라우저에 전달하여 완전한 페이지가 됩니다.


하지만 Ajax는 페이지 전환 없이 필요한 부분만 데이터 송수신만을 자유롭게 몇번이고 할수 있습니다.

필요한 경우만 최소한의 데이터만을 서버와 주고 받을수 있어 효율적이고 빠르게 페이이지를 전환할수 있습니다.


2. 서버 처리를 기다리지 않고 비동기 요청이 가능

html에 폼 송신 버튼을 누르면 응답이 돌아올 때까지 보통 브라우저는 다음 작업을 할수 없는 상태이다.

이것을 동기 통신이라고 한다.


하지만 Ajax를 사용하면 비동기로 통신을 할수가 있다. 한번 전송을 보냈어도 인터넷을 사용하는 사람이 서버로 응답을 기다리지 않아도 다음 작업을 할수 있다는 장점이 있다.


3. PHP, ASP, JSP, .NET 등 서버측 처리를 각 PC에 분산 할수 있다.

위언어 처럼 대표적인 웹의 서버측 언어는 서버가 해당 요청을 분석하고 해석한 다음 HTML을 다시 브라우저에게 전달해 줍니다. 

Ajax는 최소의 데이터만 브라우저에 전달하려고 JavaScript 측에서 HTML과 벡터 그래픽도 작성할 수 있기 때문에 서버 작업을 어느정도 부담해줍니다.

모든 사용자가 붙었을때 모든 작업을 서버에서 감당하지 않고 일정부분을 클라이언트에서 가능 한부분은 Javascript를 통해 클라이언트에 일정부분 맡길수 있는 장점이 있다.


브라우저는 html, xhtml 같은 마크업 언어로 받는것이 일반적이다.

그에 반해 Ajax로는 수신 할수 있는 데이터는 텍스트 데이터로도 수신이 가능 하기 때문에 디비에서 받은 값을 조작하여 돌려주지 않아도 되기 때문에 전송량을 줄일수 있다.


4. Ajax 개발은 특별한 툴이 필요하지 않다.

브라우저에서 기본적으로 제공되는 Javascript로 구현 가능하기 때문에 개발하고 사용하는데 특별한 툴이 필요하 지 않다는 장점이 있다.



단점

1. 크로스 브라우저(익스플로러, 크롬, 파이어폭스, 사파리, 오페라등)에 완벽한 기동

브라우저에 내장된 Javascript에 의존하는것은 다양한 브라우저 간에 완전히 동일시 처리가 되지 않을수 있는 단점이 있다.

물론 ECMA나 W3C 표준에 브라우저가 많지만  모든 브라우저에서 완벽한 가동을 보이긴 어려울수 있으므로 유의 해야한다.


브라우저에서 Javascript 나 XMLHttpRequest 응답을 처리할수 없는 브라우저도 있으므로 그에대한 보안이 필요하다.


2. Javascript 언어는 오픈 소스이므로 차별화가 어렵다.

Javascript언어는 클라이언트측이므로 오픈 소스다. 


3. HTTP 클라이언트의 기능 한정

익스플로는 크로스 도메인 시큐리티(cross domain security) 모델이 채용 되어 있다.  이기능은 동일한 웹사이트로부터 데이터에 대해 여러개의 창이 열려 있을경우 보안상 클라이언트의 접근에 도메인을 사용하여 관리하는 기능이다. 요청 대상 url은 요청 하는 페이지와 같은 도메인에 있지 않으면 안된다는 뜻이다.


4. 보안상 주의

아무래도 페이지 이동 없이 비동기로 서버와 호출 하기 때문에 Ajax로 수신하는 데이터가 누군가 데이터를 조작하여 응답 데이터를 보낼수 있으므로 모니터링이 필요하고 접근 하지 못하도록 필터를 해야 할것이다.


5. 작업 처리 되고 있는 것에 대한 안내가 필요

아무래도 동기식 방식으로 호출할땐 페이지가 결과를 보낼때까지 사용자는 기다리면 되지만 Ajax로 호출할떄는 작업이 진행되고 있음에도 다른 작업을 진행할수 있다. 그러므로 Ajax로 데이터를 처리할때는 현재 데이터가 처리중이라면 처리중 메시지를 뛰우는등 작업 처리되는 과정을 사용자에게 보여야 작업이 처리 될것이다.


6. AJax는 서버측 일을 클라이언트에게 일정부분 주지만 역효과로 요청이 많으면 서버 부하가 생길수 있다.

서버측 부하가 없게 하려면 데이터 전송량, 요청회수, 서버 부하등 종합적인 진단과 튜닝이 필요하다.

반응형