ASP.NET AJAX #2 , 비동기 통신 레이어의 이해 [IT] .NET Framework

본격적인 ASP.NET AJAX를 응용해보기 전에, AJAX 그리고 ASP.NET AJAX의 특징에 대해 한번 짚어보는 시간이 필요할 것 같다. 물론 이전부터 이야기한 것 처럼 기반지식을 아무것도 몰라도 ASP.NET AJAX를 사용하는데는 아무런 지장이 없다. 하지만 보다 탄탄한 기초 원리와 기본 지식을 이해함으로써 차후 실전 프로젝트에서 보다 유연한 구현을 할 수 있도록 하는 것도 의미가 있을 것이라 생각된다.

(참고: 본 포스팅은 http://ajax.asp.net/docs/overview/AsynchronousLayerOverview.aspx아티클의 내용을 기초로 정리해 보았다)

비동기 통신 레이어란?

ASP.NET AJAX의 비동기 통신 레이어는 JavaScript를 이용하여 서버측의 다양한 메소드를 호출할 수 있도록 해주는 클라이언트와 서버측의 레이어를 말한다. 이전 포스팅에서 언급했던 것처럼 각 브라우저에 내장된 XMLHTTP 객체를 사용하며, 크로스 브라우징을 지원하기 위한 모든 절차는 내부적으로 이미 구현이 되어 있다. 직접 객체를 선언하여 비동기 통신을 구현할때 브라우저를 확인하고 그에따른 각각의 객체를 선언해야 하는 불편함을 해소시켰다.


그림에서 보여지는 것처럼 비동기 통신 레이어는 클라이언트와 서버측에 모두 위치하고 있다. 이 레이어의 뒷편에 위치한 요소들은 그동안 우리가 만들어오던 전형적인 스타일의 웹 어플리케이션 요소들이다. MVC 패턴을 이해하고 있다면 어렵지 않게 그림을 이해할 수 있을 것이라고 생각한다. (참고 : AJAX와 MVC패턴)


< 클라이언트측 비동기 통신 레이어의 요소 >
  • 메소드 프록시 객체 :  Web Service, Page Method, Profile, Authentication
  • HTTP 객체 : WebRequest, WebRequestManager
  • 데이터 관련 객체 : XMLHttpExecutor, XMLHttp, JSON Serialization
< 서버측 비동기 통신 레이어의 요소 >
  • 메소드 객체 : Web Services, Page Methods, Authentication Service, Profile Service
  • HTTP 객체 : HTTP Handler
  • 데이터 관련 객체 : XML Serialization, JSON Serialization

ASP.NET AJAX의 구현 모델

ASP.NET AJAX는 비동기 통신 레이어의 각 요소들을 조합하여 AJAX 스타일의 웹 어플리케이션 구현을 가능하게 해준다. 클라이언트측과 서버측의 프록시 객체를 유심히 보자. MVC 패턴을 이용할 때 가장 흔히 사용되는 Web Service부터 일반적으로 비하인드 코드에서 생성하는 다양한 일반 메소드. 그리고 프로파일과 인증 서비스까지 기술되어 있음을 알 수 있다. 이 이야기는 서버측에 코딩되어 있는 다양한 메소드들을 비동기 통신의 대상으로 삼을 수 있다는 것으로 해석하면 된다.

이후에 예제를 통하여 보여주겠지만 ASP.NET AJAX는 기존에 만들어둔 웹어플리케이션을 간단한 Config 설정과 서버 컨트롤의 사용을 통하여 거의 수정없이 AJAX 스타일의 어플리케이션으로 컨버팅할 수 있도록 해준다. 우리가 해야할 일은 단지, 개발되어 있는 웹어플리케이션에서 어떤 부분(언급한 다양한 메소드 객체들)에 비동기 통신을 적용할 것인가를 고민하는 것 뿐이다.

JSON Serialization

AJAX 스타일의 웹어플리케이션을 개발할 때 주의해야 할 점중 하나는 데이터 소통량이다. AJAX가 각광받게 된 것은 이미 많이들 알고 있는 것처럼 페이지 전체를 다시 내려받지 않고 필요한 부분만 Update 해줄 수 있다는 점이 가장 큰 장점으로 부각되었기 때문이다. 하지만 여기서 간과하기 쉬운 것은, SOAP으로 대표되는 순수 XML로 데이터를 비동기 통신할 때 데이터의 크기이다. 비동기 통신도 좋지만 데이터가 너무 커져버리면 AJAX 스타일 프로그래밍의 장점이 반감되어 버릴 수 있기 때문이다.

이런 점을 MS에서는 놓치지 않았다. ASP.NET AJAX는 특별히 지정하지 않는한 JSON(JavaScript Object Notation)을 사용하여 데이터 소통량을 최소한으로 줄이도록 해주고 있다. 물론 외부의 RSS나 XML를 연동시킬 때는 일반적인 SOAP을 이용할 수 있도록 배려하고 있다(예를들어 웹서비스의 어트리뷰트로 [ScriptMethod(ResponseFormat.Xml)] 를 선언해주는 것만으로 JSON대신 XML을 사용할 수 있다)

- NoPD -

핑백

  • 20001030 : AJAX, JSON and XML 2009-09-21 00:50:28 #

    ... ;자료 출처 http://www.asp.net/ajax/documentation/live/overview/AsynchronousLayerOverview.aspx http://nopd.egloos.com/3015900 AJAX 1.0 Extension에서 JSON ? – JSON Serialization 앞에서 살펴보았듯이 통신에 사용하는 데이터를 XML 포맷으로 사용 ... more