[ETC] [흰둥이와 백설이] DWR - Reverse Ajax part1

황제낙엽 2009.03.12 03:11 조회 수 : 31 추천:102

sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  
http://javaora.tistory.com/entry/DWR-Reverse-Ajax  Reverse Ajax 는 DWR 2.0의 가장 큰 새로운 특징이다. 이것은 사용자에게 웹서버로부터 브라우져로의 비동기적 데이터 전송을 가능하게 해준다.

  DWR은 웹브라우져로 데이터를 밀어넣는 3가지 방식을 지원한다. : Piggyback, Polling, Comet.

  Polling

  polling 은 문제해결을 위한 가장 간단한 해결책이다. 이것은 브라우져가 서버로 일정한 간격을 두고 (예를 들면 매 3초마다) 서버에 요청을 하게 만드는 것이다. 


  Comet

  Comet(일명 server push)은 브라우져의 정보 요청(request)에 매우 느리게 서버가 응답하는 것과 서버에 의한 스케쥴에 따른 지속적인 응답을 허용한다. Comet 에 대한 좀 더 상세한 정보는 위키페디아를 참조하기 바란다.(http://en.wikipedia.org/wiki/Comet_(programming))


  Piggyback

  piggyback 옵션을 사용하면 서버는 전송 할 업데이트 정보 가지고, 브라우져가 연결을 설정하기를 기다린다. 연결이 설정되면 업데이트 정보를 전송한다. 이 정보는 서버로의 응답과 함께 업데이트 된다.


  Comparison

  각각의 방법에 그 나름이 장점이 존재한다. Polling 은  구현하기 간편하지만 서버에 부하를 일으키기 쉽다. 대조적으로 Comet 은 프로그래밍 하기 복잡하지만 서버에겐 훨씬 쉬운 일이된다. Comet 은 또한 다음에 브라우져가 연결하기를 기다릴 필요가 없으므로 매우 낮은 지연시간을 갖는다. Polling 과 Comet 둘다 추가적인 네트워크 연결가능성이 요구된다. 그래서 실제로 제일 낮은 오버헤드(overhead)를 갖는 것은 Piggyback이다. 그러나 이는 매우 높은 지연시간을 같다.(브라우져가 접속하여 응답하기까지 기다려야 하므로)

  좋은 소식은 DWR은 세가지 모두를 사용하는 것을 허용한다는 것이며, Configuration의 구현체 부분만 변경하면 된다.

  Comet 연결(connection)은 거의 하지만 결코 영원하지는 않다.(거의 항상 연결되어 있다.) 그 이유는 여러가지지만 보통 정기적으로 재연결(reconnection)을 한다. Comet 과 Polling 은 마치 극단적인 스펙트럼 처럼 보일수 있다. 이를 위한 2가지 설정 가능한 파라미터가 있다. - connected time 과 disconnected time 이 그것이다. DWR은 이것들이 서버 부하의 관리를 도와주는 것을 관리 할 수 있다.


  Active and Passive Reverse Ajax

  DWR은 추가적인 부하(load)가 용인될만 경우 Comet과 Polling 을 사용하는 것을 설정 할 수 있으나 빠른 응답 시간을 필요로 한다. 이 모드를 Active Reverse Ajax 라 한다. DWR 의 기본 설정은 Passive Reverse Ajax 상태이며 이때는 오직 piggyback 전송 방식만 허용된다.

  
  Active Reverse Ajax Configuration

  Passive 모드(piggyback 만 사용 가능)의 Reverse Ajax 를 사용하기 위해선 별다른 설정이 필요 없다. 하지만 Active Reverse Ajax 를 사용가능하게 하기 위해서 아래 2단계의 설정이 필요하다.

  Step 1. web.xml 의 DWR 설정부분에 아래 내용을 추가 한다.

·미리보기 | 소스복사·
  1. <servlet>  
  2.   <servlet-name>dwr-invoker</servlet-name>  
  3.   <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>  
  4.   <init-param>  
  5.     <param-name>activeReverseAjaxEnabled</param-name>  
  6.     <param-value>true</param-value>  
  7.   </init-param>  
  8.   ...   
  9. </servlet>  

  Step 2. 웹페이지 내에서 Active Reverse Ajax 의 사용을 세팅한다. 페이지내에 아래 내용을 추가함으로서 Comet과 Polling 의 life cycle 이 시작된다.

dwr.engine.setActiveReverseAjax(true);


번호 제목 글쓴이 날짜 조회 수
41 GWT-yui-ext Demo 황제낙엽 2009.03.12 24
40 YUI 응용프로그램 만들기 (Writing Your First YUI Application) 황제낙엽 2009.03.12 32
39 MethodChain이란? 황제낙엽 2009.03.12 33
38 DWR2.x 와 Spring2.x에서 설정 황제낙엽 2009.03.12 15
37 [guni] DWR 사용시 Session 값 얻기 황제낙엽 2009.03.12 18
36 [guni] Spring + DWR 을 이용한 Form Submission처리... 황제낙엽 2009.03.12 9
35 [Whiteship's Note] Spring + Ajax with DWR (Revolution) file 황제낙엽 2009.03.12 68
34 [Whiteship's Note] Spring + Ajax with DWR (Coding) file 황제낙엽 2009.03.12 52
33 [Whiteship's Note] Spring + Ajax with DWR 황제낙엽 2009.03.12 24
32 [흰둥이와 백설이] DWR - Reverse Ajax part 2 : Configuring Reverse Ajax 황제낙엽 2009.03.12 39
» [흰둥이와 백설이] DWR - Reverse Ajax part1 황제낙엽 2009.03.12 31
30 [흰둥이와 백설이] DWR 사용을 위한 web.xml 설정 방법 황제낙엽 2009.03.12 52
29 [흰둥이와 백설이] Overview Of DWR - DWR : JAVA를 위한 쉬운 AJAX 황제낙엽 2009.03.12 18
28 Direct Web Remoting 황제낙엽 2009.03.12 28
27 자바스크립트 압축 황제낙엽 2009.03.11 17
26 Ajaxim (웹 인스턴트 메신저), DatePicker (슬라이딩 데이트), Starbox (별점추천 UI 라이브러리), Tablekit (테이블을 데이터 그리드로) 황제낙엽 2009.03.11 78
25 Prototype, Script.aculo.us 스크랩 황제낙엽 2009.03.11 73
24 [펌] 1. Dojo toolkit Example 황제낙엽 2009.03.11 15
23 [펌] 2. Dojo Event Model 황제낙엽 2009.03.11 17
22 [펌] 3. DOJO Built-in Widgets (달력) 황제낙엽 2009.03.11 8