웹 애플리케이션 개발자들에게 있어 데스크탑 애플리케이션에서나 볼 수 있는 풍부한 인터페이스는 항상 부러움의 대상이다. 액티브X, 플래시, 자바 애플릿 등을 이용하여 HTTP와 HTML의 한계를 넘어선 유저 인터페이스를 구현할 수 있지만 플랫폼의 제한, 플러그인 형식으로 인한 설치문제 등이 있다. 하지만 여기서 소개할 AJAX는 전혀 새로운 기술이 아닌 지금까지 웹에서 널리 쓰여 왔던 자바스크립트, DHTML 등의 기존 기술들을 모아 풍부한 유저 인터페이스를 구현할 수 있도록 정립한 기술 집합체로 최근 관심이 모아지고 있다.
HTTP는 네트워크에서 발생하는 모든 웹 요청과 응답을 처리할 수 있는 웹 표준 프로토콜로 완전히 자리 잡았다. 하지만 HTTP는 비연결성 프로토콜로 기본적으로 요청과 요청 사이에 연관성이 없고 웹 서버에 보낸 요청에 대한 응답에 대해서 각각의 웹 문서를 매번 다시 렌더링하여 리프레시해야 하는 단점이 있다. 로딩이 끝나 렌더링이 끝난 웹 페이지를 DHTML을 이용하여 동적으로 레이아웃이나 스타일을 재구성할 수도 있지만 재구성에 필요한 데이터는 사용자의 입력 또는 페이지를 로딩할 당시 서버에서 모든 데이터를 미리 읽어와야만 한다. 하지만 사용자가 어떤 데이터를 입력할지 모르는 상황이고 그렇다고 해서 모든 경우의 수에 해당하는 데이터를 브라우저로 로딩시킬 수도 없다.
결국 웹 애플리케이션이 클라이언트와 상호작용하기 위해서는 웹 서버와의 통신이 불가피하고 웹 서버와의 통신은 매번 웹 페이지가 새롭게 리프레시된다는 것을 의미한다. 클라이언트와의 상호작용 하나 하나에 대해 웹 페이지가 매번 리프레시된다는 것은 응답성(responsiveness), 사용성(usability)의 저하를 의미한다. 웹 애플리케이션 개발자의 입장에서는 로컬PC에서 작동하는 데스크탑 애플리케이션의 빠른 응답성과 편리한 사용성이 부럽지 않을 수가 없다. 이러한 핸디캡을 극복하기 위해 이미 웹에서는 액티브X, 자바 애플릿, 플래시 등의 기술이 사용되고 있다. 이들 기술들은 간단한 브라우저 플러그인으로 작동하며 HTML만으로는 구현할 수 없는 인터랙티브한 웹 페이지를 표현할 수 있도록 해주어 데스크탑 애플리케이션 못지않은 사용성과 응답성을 보여준다.
최근 들어 이러한 플러그인들의 도움없이 브라우저 자체만 가지고 인터랙티브하고 응답성, 사용성을 높일 수 있는 AJAX(Asynchro nous Javascript + XML)가 주목을 받고 있다. 이미 AJAX는 구글 맵(http://maps.google.com), Orkut(http://www.orkut.com), Google Suggest(http://www.google.com/webhp?complete =1&hl=en), Gmail(http://www.gmail.com), A9(http:// a9.com), Flickr(http://www.flickr.com) 등에서 선보인 바 있으며 AJAX를 사용하고 있는 웹 사이트가 늘어나고 있는 추세이다.
구글 맵에서는 웹 페이지를 스크롤하거나 확대, 축소를 하게 되면 현재 페이지에 없는 부분의 지도 이미지를 페이지 리로딩없이 읽어서 변화된 부분만 채워준다. Orkut에서는 친구들에 대한 평점을 하트, 또는 별, 얼음의 개수로 표현할 수 있는데, 클릭하는 즉시 페이지 리로딩없이 바로 친구들에 대한 평점이 반영된다. Gmail에서는 메일에 별마크 붙이기를 해보면 페이지를 리로딩하지 않고 별을 붙이거나 없애거나 할 수 있고, 메일을 보낼 때 주소록에 등록된 사람의 이름 또는 주소로 데스크탑 웹메일 클라이언트에서나 볼 수 있는 자동 완성도 볼 수 있다. Flickr에서는 그림 제목이나 설명 부분을 클릭하면 바로 편집상태로 변화되고 새로운 제목이나 설명을 입력하고 저장 버튼을 누르면 바로 변경이 된다. 이 모든 게 웹페이지 전체를 리로딩하지 않고 일부만을 비동기적으로 변화시키는 AJAX를 이용한 것이다.






46661
40
81










댓글을 달아 주세요