아무튼, 오늘도 배운다.

ajax 에관한 본문

오늘의 일상(Diary)/일상다반사

ajax 에관한

아무튼씨 2007. 1. 24. 23:56
반응형
Ajax(Asynchronous JavaScript + XML)

'Ajax'란 이름은 2005년 2월 18일에 Adaptive Path사의 제시 제임스 가렛(Jesse James Garrett)이 쓴 블로그 형식의 칼럼 "Ajax: A New Approach to Web Applications"에 처음 등장, 이후 세상에 처음 Ajax라는 말이 알려지기 시작했다.
내용이 그리 길지 않으니, 반드시 일독하길 바란다.

Ajax는 'Asynchronous JavaScript + XML'을 줄인말로써, "서버 처리를 기다리지 않고 비동기(Asynchronous)요청이 가능하다"란 의미로 이해하면되겠다.
여기에서, JavaScript And XML이 아닌, plus로 되어 있는건 제임스 가렛의 다른 의도가 있는걸까, 단지 귀찮아서 '+'로 표시했을까? 아직 알수 없다. --;;

동기/비동기 통신 매커니즘

  • 기존동기통신 방식(classic web application model - synchronous) 에 대해선 잘 알고 있으리라 생각된다.
    Browser에서 user에 의해 request가 발생하면, server에서 요청을 처리한 후 reponse를 돌려주고, 이 결과를 Browser에 display하는 방식으로써, 화면이 깜빡이며 처리결과를 출력하게되는데 화면전환을 하지않도록 하기 위해 대체로 <iframe/>을 많이 사용하는 추세이다.
  • Ajax비동기 통신 방식(Ajax web application model - asynchronous)
    Browser에서 일어난 input이란 event에 대해, Ajax Engine이 요청을 Catch해서 server로 request를 전달해주고, server가 처리한 response를 보내주면 Ajax Engine이 받아 Browser로 출력해주는 방식이다. 이때, Ajax Engine이 서버와 통신하는 요소기술로 javascipt사용되기때문에 화면전환이 없는것이다.

이 그림에서 개인적으론 이해가 안되는 부분이 있었다.
처음 event(input)가 발생하고 server에서 요청을 처리중인데, Ajax Engine은 이미 Browser에게 무언가를 display 해버린것이다.
헉, 그렇담 Ajax는 서버에서 데이터 추출을 다 하기도 전에 Browser에 display를 먼저 해주는 놀라운 기능을 갖고 있는것인가...?
아마도 그건 아닐거고, 이런 상황을 생각해볼순 있겠다.

combo box에서 어떠한 값을 선택(click event발생)했을때 Ajax Engine이 서버의 어떠한 정보를 가져오도록한 경우, 서버측에서는 결과를 추출해내기 위해 무언가 작업을 하고 있을것이다. 이때, combo box옆에 input text field를 나타나게 하는것도 같이 작업하게 했다면, 서버에서 데이터가 오기 전에 input text field는 이미 화면에 display되어 있는것이다.
만약, 이 그림이 그런걸 의미하는게 아니라면... 훔, 댓글 달아주시라~~

기존 Web App. model 은 user가 'HTTP Request'를 발생시키면 서버에서 처리한 후, HTML+CSS data의 형태로 Browser에 return해주어 화면에 display 하게하는 반면,
Ajax Web App. model 은 user가 발생시킨 event가 javascript를 call하면, Ajax Engine이 이를 catch하여 서버측에 HTTP request를 보내고, 서버는 결과를 XML data형태로 만들어 Ajax Engine에게 보내준다. 그러면 Ajax Engine은 이 데이터에 HTML+CSS를 붙여 화면에 display하는 것이다.
이때, 결과를 반드시 XML data만 사용하는건 아니고, text/csv/json의 형태로도 가능하다.

장점

  • 페이지 이동없이 고속으로 화면을 전환할 수 있다.
  • 서버 처리를 기다리지 않고, 비동기 요청이 가능하다.
  • 수신하는 데이터 량을 줄일 수 있고, 클라이언트에게 처리를 위임할 수도 있다.

단점

  • Ajax를 쓸 수 없는 브라우저에 대한 문제가 있다.
  • Http클라이언트의 기능이 한정되어 있다.
  • 페이지 이동없는 통신으로 인한 보안상의 문제
  • 지원하는 Charset이 한정되어 있다.
  • 스크립트로 작성되므로 Debugging이 용이하지 않다.
  • 요청을 남발하면 역으로 서버 부하가 늘 수 있음.

- 관심 있는 분들은 출처 페이지로 가서 더 보세요...^^;

반응형

'오늘의 일상(Diary) > 일상다반사' 카테고리의 다른 글

신권..  (0) 2007.01.25
또다른 Ajax 이야기  (0) 2007.01.25
google에 대한 블로그  (2) 2007.01.24
나.....!!!  (0) 2007.01.22
블로그?  (0) 2007.01.22