ASP.NET "Atlas" Server Controls(1)

2006/08/22 14:30

ASP.NET "Atlas" Server Controls가 무엇인지..? 그리고 ScriptManger 컨트롤이 무엇인지에 대해서는 이전 게시물(ASP.NET "Atlas" Sample Program #1)을 참고하기 바랍니다..

앞선 게시물에서 언급했습니다만.. ASP.NET "Atlas" Server Controls에는 다음과 같은 Controls & UI가 존재합니다.

(1) ScriptManager
(2) UpdatePanels
(3) Trigger

(4) Extenders
(5) Time Control


1. UpdatePanels
일반적인 ASP.NET 2.0 응용 프로그램에서, postback이 발생하면, 그 페이지 전체가 새로 렌더링됩니다. 페이지가 렌더링 되면 브라우저에서는 깜빡이는 현상이 발생하죠. postback이 진행되는 동안 서버에서는 페이지의 생명주기가 진행됩니다. 이것은 결국에 poskback을 발생시키고 이벤트 핸들러를 실행시키는 컨트롤 이벤트가 일어난 것을 말합니다.(예를 들어, 버튼 컨트롤의 클릭 핸들러 같은... )

ASP.NET "Atlas"의 UpdatePanel 컨트롤은 이러한 전체 페이지의 새로고침을 제거했습니다. (오우-_-) UpdatePanel 컨트롤은 페이지의 어떠한 부분을 담당(mark)하는데 사용되어 집니다. (그 어떠한 부분은 postback이 발생했을 때, 업데이트가 이루어질 부분..) 그러나, 그 부분은 UpdatePanel 컨트롤을 사용하게 되면, 클라이언트에서 전통적인 postback이 발생하지 않습니다. (즉, 페이지 전체가 새로고침 되지 않다는 것이죠.)

반면에 서버에서 페이지는 여전히 postback을 다루고 있으며, 정상적으로 작동하고 있습니다. (이벤트 핸들러를 발생시키는 것처럼) 하지만! 페이지의 렌더링 마지막 까지 오직 생성된 UpdatePanel 컨트롤에 의해 정의된 부분만 포스트백이 일어나는 것이죠~ (그렇군요..-_-) 이것을 부분적 렌더링이라고 합니다.

예제 코드 보기..


UpdatePanel 컨트롤은 ScriptManager 컨트롤(클라이언트의 ASP.NET "Atlas" script와 관련된 참조들과 부분적 렌더링 모델을 관리하기 위해..)을 필요로 합니다. ScriptManager 컨트롤은 부분적 페이지 업뎃을 관리하며, 오직 UpdatePanel 컨트롤과 거기에 속한 녀석들에 대한 렌더링만 허용합니다.

UpdatePanel 컨트롤은 컨텐츠를 위한 컨테이너(일반적으로 ASP.NET Server 컨트롤들)로 동작하는 ContentTamplate란 element를 포함하고 있습니다. ContentTemplate은 부분적으로 업뎃이 될 부분을 <ContentTemplate>란 태크로 감싸야합니다.

Mode 속성은 UpdatePanel 컨트롤이 자신에 속한 컨텐츠를 갱신할 때를 명시합니다. 만약, Mode 속성이 Always로 설정한다면, UpdatePanel에 속한 컨텐츠가 모든 postback 상황마다 갱신됩니다. 하지만, Mode 속성이 Conditional로 설정한다면, UpdatePanel은 서버 기반의 하나 또는 그 이상의 Triggers(또 다른 Server Controls 중 하나)에 의해 렌더링됩니다. (마치, 어떠한 특정 속성의 값이 변화하였다던지, 특정한 이벤트가 발생했을 때와 같이...)

UpdatePanel컨트롤과 함께 Trigger를 사용하기..

앞서 언급한 바와 같이 UpdatePanel컨트롤의 Mode 속성이 Conditional로 설정되어 있다면, 패널은 오직 Triggers에 대한 응답으로만 렌더링됩니다. UpdatePanel 컨트롤은 Triggers의 collection(한글로 바꾸자니 개념이 좀 애매해서.. 그냥 Triggers들의 멤버들 정도로..) 들을 포함합니다. Triggers에는 2가지 형태가 있습니다.

(a) ControlEventTrigger - 이 녀석은 페이지의 임의의 컨트롤(ControlID)에서 발생시키는 어떤 특정한 이벤트(EventName)와 연관되어 정의됩니다. 즉, 연관된 컨트롤에서 어떤 이벤트가 발생하면, 이 녀석은 "빵!"하고 UpdatePanel 컨트롤에 알려줍니다. 그러면 UpdatePanel 컨트롤은 서버의 페이지 부분에서 부분적으로 렌더링해야할 부분을 렌더링하게 될 것입니다.

예제 코드는 다음과 같습니당.

예제 코드 보기..


(b) ControlValueTrigger - 이 녀석은 페이지의 임의의 컨트롤(ControlID)의 특정한 속성(PropertyName)과 연관되어 정의됩니다. 즉, 연관된 컨트롤에서 그 특정한 속성의 값이 변할 경우, 이 녀석은 "빵!"하고 UpdatePanel 컨트롤에 알려줍니다. 그러면 UpdatePanel의 컨텐츠들은 postback이 진행되는 동안 새로 갱신될 것입니다.

예제 코드는 다음과 같습니당.

예제 코드 보기..


요약 정리.

이번 시간은 UpdatePanel 컨트롤과 Triggers란 녀석에 대해서 알아보았습니다. UpdatePanel 컨트롤은 자신의 태그 내에 포함된 컨텐츠들만 부분적으로 갱신을 가능하게 해주는 녀석입니다.(물론, ScriptManager에서 미리 정의해두어야 하지만.. 자세한 내용은 이전 글을 찾아보세요.)

UpdatePanel 컨트롤의 처리 방법에는 크게 2가지, ModeAlways일 때와 Conditional 일 때, 2가지가 있는데, Always일 때는, postback이 발생할 때 마다 UpdatePanel의 컨텐츠들도 갱신하게 하였습니다.

반면에, Conditional일 때는 Triggers에 따라서 반응하게 하였죠! 어떤 컨트롤의 이벤트가 발생했을 때를 감지하여, UpdatePanel의 컨텐츠들을 갱신할 것인가?! 아니면! 어떤 컨트롤의 속성 값이 바뀌었을 대를 감지하여, UpdatePanel의 컨텐츠들을 갱신할 것인가로 구분되었습니다!

이 차이는 명확하게 알고 써야겠죠~

예제 소스 다운로드:
http://www.nohungry.net/Data/UpdatePanelControl.zip

출처:
(1) http://atlas.asp.net/docs/atlas/doc/controls/default.aspx#updatepanel

P.S.
이전 글에도 밝혔지만 오번역이 있을 수도 있으니, 보다 자세한 내용을 알고 싶으시다면 출처에 링크된 원문을 읽어보시기 바랍니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Trackback

Trackback Address :: http://www.nohungry.net/tt1/trackback/20

Comments

  1. NOhungry 2006/08/23 09:55

    근데 내가 쓴 글이지만.. 정말 읽기 싫다.ㅋㅋ

    perm. |  mod/del. |  reply.
  2. acaran 2006/08/23 11:04

    머리가 아파오는 이 느낌-_-

    하지만 이 글들은 누군가 검색엔진에서 ATLAS 등의 한글 문서를 검색할때 누군가에게 분명 유용하게 쓰일것이네-_-;;

    perm. |  mod/del. |  reply.

What's on your mind?

댓글 입력 폼
[로그인][오픈아이디란?]

Atlas 프로그래밍 Sample #1

2006/08/22 09:26

1. 준비물
MicroSoft Visual Studio.NET 2005
Atlas Framework(http://atlas.asp.net/default.aspx?tabid=47&subtabid=471)

상콤한 정신 상태
영어에 대한 강인한 내구성(영어로 말한다고 정신이 혼미해지면 힘듭니다. 버터야 해요.)

2. 본 내용


3. Atlas 코드에 대한 설명
동영상에 등장하는 프로그램의 코드들을 보면, Atlas에 대한 부분이 등장합니다. 물론, 동영상에 등장하는 강사(?)가 매우 친절하게도 영어로 설명해줍니다만.. 사실 왜 저 코드들을 써야되는지에 대한 설명은 skip하는 경향도 있고.. 못 알아 듣는 부분도 있기에.. (사실, 이게 크죠-_-)

Atlas는 프로그래머에게 크게 2가지 측면의 Control과 User Interface를 지원합니다.
(1) ASP.NET "Atlas" Client-side Controls
(2) ASP.NET "Atlas" Server Controls


이 두가지는 네임에서 느낌이 오시겠지만.. 서버와 클라이언트 중 어디를 기반으로 컨트롤이 수행되느냐로 구분됩니다.

동영상에 등장하는 프로그램의 경우, Server Controls로만 구현되었기 때문에, 이번엔 Server Controls에 대해서만 설명하도록 하겠습니다.

● ASP.NET "Atlas" Server Control
Atlas에 포함된 Server Control을 사용하면 페이지를 다시 게시할 때(새로 고침과 같은..) 일시적으로 상호 작용(interact)이 중단되는 것을 방지할 수 있습니다. 다시 말하면, 서버 컨트롤이 백그라운드에서 렌더링을 업뎃하는 동안 사용자는 웹 페이지와 상호 작용할 수 있습니다.

ScriptManager - Atlas 기능을 사용할 모든 페이지에 포함되어야 합니다.
ScriptManager 컨트롤은 클라이언트에서 서버로의 다시 게시 동작을 변경하며 두 번째 컨트롤인 UpdatePanel 컨트롤은 변경 작업을 위해 서버에서 페이지의 수명 주기를 관리합니다.

ScriptManager 컨트롤클라이언트로 보내는 JavaScript를 제어하는 역할을 하는데, 서버 컨트롤은 클라이언트에 JavaScript를 제공할 수 있으며 이 동작을 제어하기 위해 ScriptManager 컨트롤을 이용합니다.

ScriptManager 컨트롤UpdatePanel 컨트롤과 같이 부분적인 페이지 렌더링을 관리하기 위한 많은 일들에 대해서도  책임을 집니다. UpdatePanel 컨트롤은 부분적인 렌더링 요청을 찾고, 그것이 렌더링 되어야 하는지 결정하기 위해서 ScriptManager 컨트롤과 상호 작용(interact)을 합니다.

Show Sample Code..


ScriptManager 컨트롤EnableScriptComponents 속성true일 경우, ScriptManager 컨트롤은 ASP.NET에 .js 라이브러리를 참조할 것을 알립니다. (이 때, 라이브러리는 단지 JavaScript 형태 뿐만 아니라, 클라이언트 UI 컴포넌트들과 행동(behaviors) 등에 대한 정의도 포함합니다.)

반면에 ScriptManager 컨트롤EnableScriptComponents 속성false(default 입니다.)일 경우, 페이지는 runtime 라이브러리만 참조합니다. 이것은 페이지에서 UI 컴포넌트들이나 행동(behaviors)을 다운로드 할 필요가 없는 경우에 대해 보다 경량화(lightweight)와 최적화(optimum)를 가능하게 합니다.

EnablePartialRendering 속성ScriptManager 컨트롤이 부분적 페이지 렌더링을 어떻게 할 것인지를 결정하게 합니다. 만약 이 속성이 true로 설정되면, ScriptManager 컨트롤은 UpdatePanel 컨트롤과 함게 웹 페이지에서 부분적 렌더링을 생성하고 제어하기 위해 많은 연산을 수행하게 됩니다.

반면에 이 속성이 false로 설정되면, 부분적 페이지 렌더링은 disable시키고, 오직 일반적인 postback만 지원하게 됩니다.

Service 속성은 클라이언트에서 위임된 JavaScript의 collection에 대해 설정합니다.
Script 속성은 ScriptReference 컨트롤의 collection에 대해 설정합니다.


출처:
(1) http://download.microsoft.com/download/8/5/8/85803fdd-fe9a-4783-ab37-e0c565172ffd/asp_net_atlas.wmv
(2) http://atlas.asp.net/docs/atlas/doc/controls/default.aspx#scriptmanager

P.S.
1. 화면이 작다면... 출처 주소를 눌러.. 큰 화면으로 보길 권장합니다.

2. 오번역이 존재할 수 있으므로, 출처의 ASP.NET "Atlas" 페이지의 원문을 참조하기 바랍니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Trackback

Trackback Address :: http://www.nohungry.net/tt1/trackback/19

Comments

  1. acaran 2006/08/22 11:01

    뭔지 자세히는 모르지만 자네 요새 무진장 뽀대나는거 하는구려~

    perm. |  mod/del. |  reply.
  2. NOhungry 2006/08/22 13:31

    acaran// 그러나 정작 내가 아는게 전혀 없다오~ㅠㅠ

    perm. |  mod/del. |  reply.

What's on your mind?

댓글 입력 폼
[로그인][오픈아이디란?]