login register Sysop! about ME  
qrcode
    최초 작성일 :    2004년 01월 12일
  최종 수정일 :    2005년 02월 11일
  작성자 :    Dukyoung (김덕영)
  편집자 :    Taeyo (김 태영)
  읽음수 :    49,220

강좌 목록으로 돌아가기

필자의 잡담~

2005년의 새해가 밝았습니다. 새해 복 많이 받으세요~. (-_-)(_ _)(-_-)
새해가 시작된지 벌써 열흘이 지났는데요. 모두들 새해 계획대로 잘 실천하고 계신가요?
모두들 첫 날 세운 결심대로 흔들리지 말고 꾸준히 노력하자구요. 파이팅!!
지난 시간에 우리는 ASP 에서 사용자(클라이언트) 들에게 정보를 입력받는 여러가지 방법에 대해서 생각해 보았습니다. HTML 의 콘트롤들을 이용하여 사용자들에게 정보를 입력 받고, 그 내용을 ASP 페이지에서 확인해 보았었지요. (너무 오래되어서 다 까먹으셨다고요? ㅜ.ㅜ)

자, 그럼 오늘은 ASP 에서 주로 사용되는 개체들에 대해서 생각해 보고자 합니다.
(이것을 유식한 말로 ASP 개체 모델이라고 합니다.)

'ASP 개체 모델' 이라.. 웬지 무언가 복잡해질 것 같은 예감이 드시나요?
개념적인 이야기가 많이 나올것 같기는 하지만 너무 겁먹으실 필요는 없습니다.

지난 강좌에서 우리는 사용자들에게 여러가지의 방법으로 정보를 입력 받아
그 내용을 화면에 출력해주는 방법을 살펴 보았습니다.
입력받은 정보를 화면에 출력할 때 어떻게 했는지 혹시 기억하시나요?
네. 우리는 Response.Write 라는 함수를 사용해서 그 정보를 화면에 출력했었습니다.

Response.Write 라는 함수가 어떻게 만들어졌으며, 왜 작동하는지는 잘 모르겠지만
어쨌든 우리는 Response.Write 라는 함수를 쓰면 우리가 원하는 내용이
화면(웹브라우저)에 고스란히 출력된다는 사실을 알게 되었습니다.
우리가 만들지 않았지만 그냥 사용하기만 하면 된다고 하니.. 참 편리하지 않습니까?

그렇다면 공짜 좋아하는 우리들은 또 다른 궁금증이 생길 법도 합니다.
그렇다면 이것 이외에도 또 이용할만한 다른 기능들은 없을까? 하고 말이지요.

네. 물론 있습니다.
ASP 에서는 프로그램을 짜는 사람들이 쉽게 프로그래밍을 할 수 있게 하기 위하여
여러가지 기능들을 이미 만들어 놓고, 그것들을 사용하라고 권장하고 있습니다.
그리고 이 기능들을 종류별로 묶어서 7가지 '개체' 를 만들어 놓았습니다.
이것을 바로 'ASP 개체 모델' 이라고 부르는 것입니다.

오늘 강좌에서는 바로 그 'ASP 개체 모델' 에 대해서 살펴보고자 하는 것입니다.
ASP 에서 사용되는 7가지의 개체 모두를 한번에 자세하게 설명드리긴 어렵고요.
오늘은 어떤 개체들이 있으며, 무슨 역할을 하는지에 대해서만 살펴보도록 하겠습니다.

ASP 개체 모델에는 다음과 같은 개체들이 있습니다.

1. Request 개체
2. Response 개체
3. Application 개체
4. Session 개체
5. Server 개체
6. ObjectContext 개체
7. ASPError 개체

어떻습니까? 어디서 좀 본듯한 개체들도 있고, 생전 처음보는 개체들도 있을 법 하군요.
자, 그렇다면 이제부터 각각의 개체들에 대해서 간략하게 알아보도록 하겠습니다.

Active Server Pages 개체 모델
1. Request 개체
Request 의 사전적인 뜻은 '요청하다, 요구하다' 입니다.
만약 어떤 클라이언트(사용자)가 웹 브라우저를 열고 주소창에 제 사이트 URL 인
'http://www.dukyoung.net' 을 입력하고 엔터를 눌렀다고 한다면 이 사용자는
제 사이트의 웹서버에 '니네 사이트 페이지를 보여줘' 라는 요청을 한 것입니다.

Request 개체는 이처럼 클라이언트가 웹서버에 전달한 정보를 검색할 때 사용되는 개체인데요. 이 개체를 이용하면 다음과 같은 작업들이 가능합니다.

1. 클라이언트가 URL 의 뒤에 추가한 정보를 저장한다. (GET 방식)
2. 클라이언트가 FORM 태그를 이용해 전달한 정보를 저장한다. (GET, POST 방식)
3. 클라이언트에서 전달한 쿠키 값을 저장한다.
4. 클라이언트에서 전달한 보안 코드를 저장한다.
5. 웹서버 자체에 대한 일반 정보(HTTP 서버 변수)를 저장할 수 있다.

3번 항목에서 쿠키라는 생소한 용어가 나왔는데.. 이것은 먹는 쿠키가 아닙니다. -_-a
여기서 말하는 쿠키란, '클라이언트에게 저장되는 특정한 정보'를 의미합니다.
일단 이정도만 알아두시고.. 자세한 내용은 나중에 자세히 다루도록 하겠습니다.

그나저나 Request 개체에 대해서 이렇게 풀어 쓰니까 좀 난해해 보이는군요.
요약하면 '클라이언트가 전달한 정보를 검색할 때 주로 사용하는 개체' 가 되겠습니다.
2. Response 개체
Response 의 사전적인 의미는 '응답하다' 입니다. (Request 와 상대적 개념)
즉 Response 개체는 서버가 클라이언트에게 응답할 때 사용되는 개체인데요.
이 개체를 이용하여 다음과 같은 작업들을 할 수 있습니다.

1. 클라이언트로 전달되는 페이지에 정보를 추가한다.
2. 클라이언트에 쿠키를 만들기 위해 클라이언트의 웹브라우저에 정보를 전달한다.
3. 요청한 페이지가 아닌 전혀 다른 페이지로 이동(재지향)시킨다.
4. 페이지 생성과 동시에 정보를 전달할지, 생성된 다음 정보를 전달할지를 결정한다.
5. 페이지의 속성(HTML 헤더, 타입)들을 제어하고 변경한다.

결국 Response 개체라는 녀석은 '웹서버에서 클라이언트로 정보를 어떤 방식으로
보여줄지를 결정하는 개체
' 라고 생각하시면 되겠습니다.
3. Application 개체
Application(어플리케이션) 이란 상당히 개념적인 단어입니다.
굳이 말로 풀어 설명하자면 '하나의 프로그램 전체' 라고 하면 될까요?

Application 의 개념을 설명하기 위해 예를 한자기 들어보겠습니다.
제가 컴퓨터 게임인 피카츄 배구를 시작했다고 가정하겠습니다. (무지 재밌습니다.)
이렇게 게임이 새로 시작되었을 때 '게임 Application이 실행되었다' 라고 표현합니다.
열심히 게임에 몰두하고 있을 즈음, 옆에서 시큰둥하게 지켜보던 우리 형이
'저리루 가봐, 나도 하자' 라고 하면서 2인용 버튼을 클릭했습니다.

자, 그럼 퀴즈입니다. 이때 이 '게임 Application' 은 실행된 것일까요?
물론 아닙니다. 이미 게임은 진행중이므로 사용하는 인원이 한명 증가한 것 뿐이지
'게임 Application' 이 새롭게 시작된 것은 아니라는 말씀입니다.

열심히 싸우다가 결국 제가 형에게 아쉽게 지고 말았습니다.
그래서 패자는 말없이 떠나고 형은 계속 1인용 게임을 즐기고 있습니다.

자, 그렇다면 지금 이 경우 'Application이 종료되었다' 라고 말할 수 있을까요?
네, 이것도 물론 아닙니다. 아직 게임 프로그램이 종료되지 않았기 때문입니다.
저희 형이 혼자서 하던 게임을 끝내고 그 게임의 창을 완전히 종료했을 때,
그제서야 '게임 Application 이 종료' 되는 것입니다.

즉, 게임이 처음 시작되었을 때가 'Application 이 시작된 때' 이고,
창을 닫아서 게임이 완전히 종료되었을 때가 'Application 이 종료된 때' 입니다.

웹사이트에서도 이 내용은 마찬가지 방식으로 적용됩니다.
누군가가 처음 웹서버에 접근했을 때, 해당 '웹서버 Application' 이 작동하게 됩니다.
그리고 중간에 여러 사람들 - 셀 수 없이 많은 사람들 - 이 웹서버에 접근하겠지만,
이때마다 Application이 실행되는 것은 아닙니다. 처음 한번만 실행되는 것이지요.
모든 사람들이 웹서버에서 빠져나가면, 그제서야 Application이 종료가 됩니다.
(사실 바로 종료되는 것은 아닙니다만.. 일단은 그렇게 알아두셔도 됩니다.)

Application 개체는 이처럼 웹 어플리케이션이 시작하거나 종료할 때,
지정된 특정한 작업을 수행하기 위해 주로 사용되는 개체입니다.

또한 Application 개체는 어플리케이션의 모든 영역에 걸쳐 있는 특성 까닭에
해당 사이트에 접속해 있는 모든 사용자들이 접근할 수 있는 상태 정보를
- 이것을 전역 변수라고 합니다 - 저장할 때도 유용하게 사용됩니다.
4. Session 개체
우리는 바로 위 3번 항목에서, Application 개체는 클라이언트들이 공통으로
사용하는 정보를 보관하는 역할을 하는 개체라는 사실을 알았습니다.
그렇다면 센스 있는 분들은 이런 질문을 하실 지도 모르겠습니다.
'공통으로 사용하는 정보라면 Application 개체를 이용하여 저장하면 된다고 하고...
그렇다면 방문자마다 각각 다른 정보를 저장하고 싶으면 어떻게 하지?' 라고 말이지요.

물론 좀전에 배운 Application 개체를 굳이 이용하여, 방문자가 증가할 때마다
Application 레벨의 변수(전역 변수)를 추가해 주는 방법도 있을 수 있습니다.

하지만 이 경우 방문자가 늘어날수록 어마어마한 양의 전역 변수가 쌓이게 될 것이고,
각 사용자를 위한 전역 변수를 추가하기 위해 복잡한 코드가 추가되어야 할 것이며,
사용자가 그 사이트를 떠나버리는 경우, 해당 사용자와 관련된 전역 변수를 찾아
그 변수들을 삭제해 주어야 하는 과정도 있어야할 것입니다.
(뭔지는 몰라도 하여튼.. 그렇게 해서는 안되겠구나~ 싶어지지 않나요? ^^)

그래서 ASP 에서는 '각 방문자들을 위한 개인적인 정보 저장 공간' 을 제공합니다.
이 공간을 담당하는 개체가 바로 Session 개체인 것입니다.

이 Session 개체는 매우 유용하게 사용됩니다.
여러분께서 메일이나 동호회 사이트로 가시면 가장 먼저 무엇을 하시나요?
그렇습니다. 여러분은 스스로를 증명하기 위해 가장 먼저 '로그인' 을 하게 됩니다.
이때 우리가 입력한 아이디와 정보가 서버에 있는 Session 개체에 저장되기 때문에,
페이지를 이동할 때마다 로그인 할 필요 없이, 처음 단 한번만의 로그인 만으로
해당 웹 사이트를 여러분 마음대로 돌아다닐 수 있는 것입니다.

('어라? 요즘은 Session 안쓰고 쿠키 쓰는데?' 라고 하시는 분이 계실지도 모르겠네요.
물론 그렇습니다. 하지만 이것은 Session 개체의 역할 설명을 위한 것이니까요.
'그래그래~' 하시며 고개 한번 끄덕이고 넘어가 주시면 감사하겠습니다. ^^)
5. Server 개체
Server 개체는 '서버 상에서 특정한 작업들을 실행하는' 개체라고 할 수 있습니다.
개체의 이름에서 느껴지듯이 이 개체는, 클라이언트와는 별 상관 없이
웹서버의, 웹서버에 의한, 웹서버를 위한 작업을 하는 개체가 되겠습니다.

그렇다면 이 Server 개체는 도대체 어떤 작업들을 하는 걸까요?
Server 개체가 하는 작업들을 요약해 보면 다음과 같습니다.

1. 페이지가 너무 오래 뜨지 않는 경우를 대비, 한계 시간을 설정한다.
2. 사용자가 전달한 문자열을 HTML 형식으로 변경한다.
3. 사용자가 전달한 문자열을 올바른 URL 문자열의 형식으로 변경한다.
4. 가상 경로(URL)를 서버 컴퓨터의 실제 경로로 변경한다.
5. 다른 페이지로 이동하여 실행 경로를 변경한다.
6. CreateObject 라는 메소드를 사용하여 컴포넌트의 인스턴스를 생성한다.

무슨 뜻인지 잘 이해가 안가더라도 너무 신경쓰지 마시고 그냥 보시기 바랍니다.
여기에 대한 자세한 내용은 Server 개체를 자세하게 다룰 때 말씀드리도록 하겠습니다.
6. ObjectContext 개체
이 개체를 말씀드리려면 '트랜잭션(Transaction)' 의 개념을 이해하셔야 하는데요.
트랜잭션이란 쉽게 말씀드리자면 '전부 아니면 전무' 의 작업 단위입니다.
(영어 좋아하시는 분들은 이것을 'All or Nothing' 이라고 하더군요.)

트랜잭션을 설명하기 위해 가장 많이 예로 사용하는 것이 바로 은행인데요.
예를 들어보면 이렇습니다. 아래의 그림을 봐 주시기 바랍니다.


제가, 저희 형에게 만원을 인터넷 뱅킹으로 보낸다고 가정해 보겠습니다.
제가 만원을 선택하고 '계좌이체' 버튼을 클릭하면, 제 계좌에서는 만원이 빠져 나가고
그 순간 저희 형 계좌에는 만원이 입금 되어야 할 것입니다.
그런데 만약 은행의 인터넷 뱅킹 시스템에 순간적으로 이상이 생기는 바람에,
제 계좌에서 만원은 나갔는데 형의 계좌에는 만원이 입금되지 않았다면 어떻게 될까요?

이러면 이제 난리나는 겁니다. (은행은 대략 낭패~!)
은행에 전화 걸고 내 돈 내놓으라고 고래고래 소리 지르겠지요.
심한 경우 그 은행을 믿지 못하게 되어, 거래 은행을 바꾸게 될지도 모릅니다.

이처럼 '반드시 동시에 이루어져야 하는 작업'의 경우에 '트랜잭션' 을 사용합니다.
제가 형에게 만원을 계좌 이체로 송금했을 때, 제 계좌에서 만원이 빠져나가고
형의 계좌에서 만원이 더해지는 일은 반드시 둘다 성공해야 하는 일입니다.
만약 도중에 문제가 생기면 모든 것이 송금 전의 원래 상태로 돌아와야 하는 것이지요.

ObjectContext 개체는 이 트랜잭션을 시작하거나 종료할 때 사용하는 개체입니다.
하지만 이 개체는 IIS 의 버전이 5.0 (Windows 2000)으로 올라가면서
그 필요성이 줄어들었고,대부분의 사이트가 Windows 2000 이상을 사용하는
현재에는 거의 사용하지 않는 추세입니다.
7. ASPError 개체
ASPError 개체는 에러 처리 작업을 위해 ASP 3.0 에서 추가된 개체입니다.
(따라서 Windows 2000 을 사용하는 분이라면 큰 상관이 없겠습니다만,
혹시 Windows NT 4.0 을 사용하시는 분이라면 이 개체의 사용은 불가능합니다.)

이 개체는 ASP 에서 발생한 마지막 에러에 대한 자세한 정보를 제공해 주는데요.
덕분에 우리는 ASPError 개체를 이용하여 ASP 에서 발생하는 에러 메시지를
이전보다 조금 더 정교하게 처리할 수 있게 되었습니다.

하지만 초보자인 우리들이 자주 접하게 될 개체는 아닌 까닭에,
여기서는 더 이상의 추가 설명은 생략하도록 하겠습니다.

오늘은 ASP 에서 사용되는 7가지의 개체에 대해서 알아보았습니다.
자세하게 설명드리기에는 각각의 분량이 너무 방대해서 간략하게 말씀드렸는데요.
때문에 약간 지루한 부분이나 이해가 안가는 부분도 있으셨을 거라는 생각이 듭니다.

그래서 다음 시간부터는 이 7가지의 개체 중에서 중요한 개체들을 추려서
해당 개체의 속성과 메소드 등의 정보를 세밀하게 살펴보는 시간을 가지도록 하겠습니다.

수고 많이 하셨습니다.
조금 늦은 감이 있는 인사지만 새해 복 많이 많이 받으시고요.
올해에는 원하시는 모든 일 모두모두 다 이루시기를 기원드립니다.
다음 시간에 뵙겠습니다. 감사합니다. ^^

authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})