2007.04.11 19:01

Five Ajax Anti Pattern

http://www-128.ibm.com/developerworks/web/library/x-ajaxxml3/index.html 에 있는 글을 간단히 정리했다. 제목은 “Ajax에서 사용하면 안될 패턴 5가지” 쯤 될 것 같다. 설명은 이해하기 쉽도록 따로 달았지만, 해당 코드와 함께 보려면 원래 글을 읽어볼 것을 권장한다.

#불필요한 타이머  사용
window.setInterval()  코드를 사용할 때 주의하라. 위 링크에 간단한 예제가 있는데, setInterval 은 내가 실행한 코드의 실행이 완료되었느냐에 상관없이 무조건 실행해버린다. 간격을 1초라고 정했는데, 어떤 이유로 코드 실행이 0.5초, 2초, 0.6초가 걸렸다고 하면…. 결과는 정말로 내가 원했던 그것일까?

# 콜백에서 반환 결과를  체크하지 않는 것
XHR이 항상 올바른 결과를 반환할 것이라고 생각한다면 큰 오산! 반드시 체크해야 한다(관련 내용을 제공하는 프레임웍을 사용중이라면 생략해도 무방)

# HTML이 더 좋은 방법인데도 XML을 고집한다
“난 순수하니까 HTML을 사용하지 않겠어”라는 생각은 금물. 때로는 XML을 파싱하고 가공하는 것보다 HTML과 innerHTML을 다루는 것이 훨씬 더 간단할 수도 있다.

# JSON을 사용할 일을 XML로 고집한다
어차피 JavaScript로 가공할 거라면 XML보다 JSON이 더 좋다. eval() 한번이면 텍스트가 금새 JavaScript 데이터로 변환된다. 영리한 개발자들은 이미 XML대신 JSON을 많이 사용하고 있다.(원문에는 JSON대신 Javascript code라는 표현으로 나와있었음)

# 서버에서 심각하게 많은 작업을 처리한다
밸런싱의 문제는 항상 있는 것이긴 하지만, 서버에 너무 많은 부담을 지우지는 말자.


덧글
  공대여자   07-04-08 02:49  
간단채팅에서 왜 JSON안쓰냐고 막 따지시는 분이 계시던데,
XML이 나쁜게 아닙니다. 개발자가 XML을 더 익숙하게 다루거나,
JavaScript 만 사용하는게 아니라면 XML로 만드는게 훨씬좋죠.
(물론 처리 속도 같은건 따로 생각하고.)
실제 간단 채팅은 UI를 FLASH로도 만들었는데...
(뭐 이야기 할때는 아직 안만들었지만, 만들꺼라고 말해도...)
     
   행복한고니   07-04-08 03:17  
JSON을 안 썼다고 따질만한 사항은 아니지만.. (만드는 사람 마음인데 뭐...)

JavaScript만 사용하는게 아니라고 해서 XML이 훨씬 좋다는 이유는 잘 모르겠습니다.
사용해보면 "JavaScript와 함께 이용하는 단순한 데이터" 에는 JSON 만큼 편한게 없는 것 같더군요.

XML도 물론 장점이 있습니다만, DTD를 통한 엄격한 구조 체크, XSLT와의 연동, 다양한 결과물 산출, 보다 복잡한 데이터 형태 구성 등등의 장점이 필요하지 않다면 XML로 만드는 것보다는 JSON 형태가 더 간단하고 데이터의 양이 1byte라도 줄기 때문에 더 좋습니다.

또한 대중적인 언어에는 이미 JSON 라이브러리가 있습니다. Flash를 비롯, C, Java, PHP 등등 다 있으니 XML의 큰 장점인 "호환성" 역시 JSON이 뒤쳐지진 않습니다. 덧붙여서 JSON에서는 XML에서 표현하기 힘든 Number 타입도 표현이 가능하죠. :)
          
   명랑폐인   07-04-08 16:14  
XML이 초기 기대했던것보다 그 역활이 크게 늘지 않았다고 합니다. xml 은 실제로 사람보다는 기계(머신)이 이해하기 편한 언어입니다. xml 보다는 json이 사람이 보기에 편하죠.
xml로 된 설정파일들 보면 골이 아파 옵니다. j2ee에서도 어노테이션을 통해서 xml 파일은 자동 생성 변환되는 형태로 가고 있구요.(그만큼 xml은 사람이 이해해서 자유자재로 쓸만한 언어는 아니라는 거겠죠.)

프로그래밍 하는 입장에서 사람이 이해하기 편한게 좋은것 같습니다.
               
   낭망백수   07-04-08 19:34  
저는 XML 이 보기에 더 편하더군요.
JSP 때문에 첨 XML 을 실무적으로 다루기 시작하였고,
SOAP 때문에 WSDL 찬찬히 살펴보게 되면서...
이젠 자바 빌드때문에 ANT에 관심갖다보니
XML 이 훨씬 다양한 내용에 대해 일맥상통한 폼을 갖고 있다는 것에 감사하곤 합니다.

뭘 담고 있느냐 혹은 어디에 익숙하느냐에 따라서 다를 것 같다는 말씀이죠.

역시, JSON 의 강점은 Javascript 에서 바로 사용할 수 있다... 정도일 듯 합니다.

행복한고니//
요약해 주신 것 감사드립니다.

꾸벅~!
   글새미   07-04-09 11:25  
각각의 장점과 원칙을 알고 또한 그것을 사용할 줄 안다면 되는 것 같습니다.
문제는 각 상황에 맞게 짜는 게 더 났지 않나 싶습니다.
 사실 XML파싱하고 DOM으로 생성하는 것을 W3G에서 권장하고 있습니다만
Gleb Lebedev 라는 사람이 createElement 와 innerHTML 성능 테스트를 한 결과 처럼
innerHTML이 속도면에서는 훨씬 더 빠릅니다.(참조:http://ajaxian.com/archives/benchmark-dom-vs-innerhtml)
또한 사용하기도 편하죠. 하지만 과도한 문자열 삽입 등의 퍼포먼스 저하가 우려되는 문제가 있기도 하죠.

 제 개인적인 생각은 익숙한 것도 좋지만, 각 상황에 맞게 개발되고, 짜여져야 한다고 생각합니다.
익숙한 것에만 머물러 있지 않고, 상황에 따라 능동적으로 대처하기 위해 다양한 도구를 알고 다루며, 그것에
대해 심도있게 고민하고, 자기껏으로 소화해야하지 않나 싶습니다.
 JSON을 쓰는 게 편하기는 하지만, 그것을 사용하기 이전에 XML과 DOM에 대해 숙지하고, 알고나서
사용하는 게, 더 났지 않을까요?
   신나군   07-04-09 15:42  
저는 text로만 처리 합니다.

성공적으로 처리되었을경우
_ok|간단한 값

성공하고 html을 뿌려야 할경우
ob_start();
$data = ob_get_contents();
ob_end_clean();
print $data;

처리에 실패했을경우
_error|에러코드

페이지 전체가 ajax로 꾸며져 있진 않아서..이렇게 처리해도 큰 문제는 없던데요~
코멘트 같은 경우는 이렇게 처리하고 있습니다.
너무 무식한 방법인가요? =ㅂ=;;
   칼솜   07-04-09 20:47  
실시간 검색어 같은 경우는 XML로 뽑아와야 좀 편하더군요.
나머지는 html로 뽑아와도 별 무리는 없습니다. (저는요 ㅡㅡ)
행복한 고니님께서 핵심적인 부분에 댓글을 주셔서 도움 많이 되었습니다 ^^


출처 : phpschool
Trackback 1 Comment 0