2009-10-17 5 views
0

ASP.NET AJAX로 작성된 것과 같은 AJAX 응용 프로그램에서 클라이언트에 서버에 발생한 이벤트를 알리는 방법은 무엇입니까? Gmail과 같은 애플리케이션을 의미했습니다. Gmail은 새 이메일이 도착할 때마다 클라이언트에게 알려줍니다. 저는 ASP.NET AJAX에서 UpdatePanel을 사용하여 어떻게 수행하는지 매우 흥미 롭습니다. 나는 UpdatePanel이 Triggers 속성을 가지고 있다는 것을 알고 있지만, 그것은 오직 내 자신의 클래스의 이벤트가 아닌 Controls 이벤트에서만 작동합니다.AJAX 응용 프로그램이 클라이언트에 서버에 발생한 이벤트를 알리는 방법은 무엇입니까?

답변

1

Ajax 응용 프로그램은 서버 상태를 지속적으로 확인하여이 효과를 얻습니다. 그들은 항상 클라이언트로 작동하고 서버로부터 요청을 수신 할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다.하지만 서버에 지속적으로 연결되어 있기 때문에 성능 및 대역폭이 소모됩니까? –

+0

정확히 말하면 서버에 지속적으로 연결되어 있지는 않지만 (요청이있을 때마다 연결이 끊어짐) 서버에 지속적으로 요청해야합니다 (예 : 매 10 초마다).나는 아약스 메시지가 대개 아주 작기 때문에 대역폭에 성능상의 불이익이있을 수 있다고 생각하지 않는다. (일반적으로 응답은 xml이고 길이는 약 킬로바이트이다.) 유일한 문제는 사용중인 폴링 모델입니다. 새 메시지가 없을지라도 폴링 중입니다. 예를 들어 이중 통신 확인을 원한다면 자바 애플릿. – empi

0

응용 프로그램에서 AJAX를 사용하면 통신 모델에 새 레이어가 추가됩니다. 고전적인 웹 응용 프로그램에서 클라이언트 (브라우저)와 웹 서버 간의 통신은 HTTP 요청을 사용하여 직접 수행되었습니다.

방문자가 페이지를 요청하면 서버는 전체 HTML 및 CSS 코드를 한 번에 보냅니다. 방문자가 양식을 채우고 제출하면 서버는 정보를 처리하고 페이지를 다시 작성합니다. 그런 다음 전체 페이지를 클라이언트로 다시 보냅니다. 등등.

AJAX를 사용할 때 페이지는 처음 요청되었을 때 한 번만로드됩니다. 페이지를 구성하는 HTML 및 CSS 코드 외에 일부 JavaScript 파일 인 AJAX 엔진도 다운로드됩니다. 그러면 서버에 대한 모든 데이터 요청이 JavaScript 호출로이 엔진에 전송됩니다. 그런 다음 AJAX 엔진은 웹 서버에서 정보를 비동기 적으로 요청합니다. 따라서 사용자가 필요하기 때문에 작은 페이지 비트 만 요청되고 브라우저로 전송됩니다. 그런 다음 엔진은 전체 페이지를 다시로드하지 않고 정보를 표시합니다. 이렇게하면 전체 페이지가 아닌 클라이언트와 서버간에 필요한 정보 만 전달되기 때문에 반응이 훨씬 빠른 인터페이스로 이어집니다. 이렇게하면 정보가 즉시 표시되어 웹 응용 프로그램을 바탕 화면 친밀도에 더 가깝게 느낄 수 있습니다.

AJAX 통신 모델 :

더 나은 클라이언트 (브라우저)와 원격 서버뿐만 아니라 고전과 AJAX 구동 애플리케이션 사이의 차이 사이의 통신을 설명하기 위해, 아래의 그림을 살펴 도 그림 1 : 클래식 AJAX 통신 모델 서버와 통신 AJAX 방식의 중심 alt text http://www.interaktonline.com/img/art/AJAX/ajax_comm_model_gif.gif?0.33986484845155046

는 AJAX 엔진있다. 이것은 XMLHttpRequest 객체를 인스턴스화하고 사용하는 JavaScript 코드에 불과합니다. 이것은 전체 페이지를 새로 고치지 않고도 서버로 HTTP 요청을 보내고받으며 처리 할 수있는 JavaScript 객체입니다.

AJAX 기반 애플리케이션에서 사용자가 중단하지 않고도 데이터에 대한 HTTP 요청을 백그라운드에서 완벽하게 수행 할 수 있습니다. 즉, 필요한 페이지 섹션이 서버에서 수신되는 동안 사용자는 응용 프로그램을 계속 사용하고 사용할 수 있습니다. XMLHttpRequest 객체는 Internet Explorer에서 ActiveX 객체로 구현되었으며 이후에 대부분의 최신 브라우저 (FireFox, Safari)에서 기본 JavaScript 객체가되었습니다.

모든 종류의 모델에 추가 레이어를 추가하면 응답 시간이 늘어나지 만 이는 예외입니다. 이 새로운 레이어 (AJAX 엔진)를 사용하면 응답 시간이 단축되고 사용자 인터페이스가 응용 프로그램 로직에 훨씬 더 많이 연결되어있는 것처럼 보입니다. 더욱이, 사용자는 더 이상 페이지가 로딩 될 때까지 기다릴 필요가 없다.

관련 문제