작성중

일반적으로 동적인 웹 사이트 개발 시 상태관리(State Management)가 필요 합니다. 이번 포스팅에서는  상태관리가 무엇인지와 우리가 일반적으로 많이 사용하는 쿠키(Cookie)와 세션(Session)에 대해 자세히 알아 보도록 하겠습니다.

 

#1. 웹 서버 동작 원리

웹 사이트 상태관리의 필요성을 알기 위해 웹 서버와 클라이언트(웹 브라우저)가 어떠한 방식으로 동작 하는지를 먼저 알아 보겠습니다.

image-Fig1. 정적 웹 서버 동작 원리-

 

Fig1을 보면 아주 간단한 원리로 동작 하는 것을 알 수 있는데요. 클라이언트가 HTTP 프로토콜을 사용하여 웹 서버로 요청(Request)을 하게 되면 웹 서버는 해당 하는 HTML을 웹 브라우저로 전송 해 주고 웹 브라우저는 응답(Response) 받은 HTML을 파싱하여 사용자에게 보여주게 됩니다. 여기서 ‘요청’이란 우리가 웹 브라우저의 주소 표시줄에 http://crynut84.tistory.com이라고 입력 하는 행위나 웹 사이트의 링크를 마우스로 클릭하는 행위 등을 말합니다.

 

웹 사이트는 다시 정적인 웹 사이트와 동적인 웹사이트로 나눌 수 있습니다. 정적인 웹 사이트는 웹 서버에서 .HTML 파일을 완성된 .HTML 파일을 가지고 있다가 클라이언트의 요청이 있을 시 해당하는 .HTML 파일을 돌려 주는 형태입니다. 당연히 HTML 페이지의 내용들은 이미 결정 되어있어 있으므로 클라이언트의 상태, 방문정보, 시각등의 내용에 관계없이 항상 동일한 HTML 페이지를 보여줍니다. 요즘은 이런 웹사이트는 거의 없을 듯 합니다.

 

동적인 웹 사이트는 사용자의 액션에 따라 웹 사이트가 다르게 동작 하는 것을 말합니다. 예를들어 요즘 웹 사이트는 거의 로그인이라는 인증 과정을 거치게 되고, 로그인을 하면 ‘전호진님 환영합니다’라고 환영 인사도 해줍니다. 또한 게시판은 검색어에 따라 다른 결과를 보여주게 되고, 사용자 입맛에 맛게 정렬도 할 수 있습니다. 이와같이 요즘 일반적으로 볼 수 있는 사용자와 웹사이트가 서로 상호작용을 하는 웹 사이트를 동적인 웹사이트라고 합니다.

 

동적인 웹사이트를 만드는 기술은 ASP.NET, JSP, ASP, PHP, CGI등 여러 가지가 있습니다. 마이크로소프트의 동적인 웹사이트를 만드는 기술인 ASP.NET의 동작 원리(Fig2)를 보면 정적 웹사이트와 조금 다른 것을 알 수 있는데요.

image-Fig2. 동적 웹 서버 동작 원리-

 

클라이언트가 요청하게 되면 웹 서버는 요청에 대한 적절한  HTML을 새롭게 생성 합니다. 요청에 대한 일련의 처리(로직 수행)를 수행하게 되고 처리 결과를 다시 클라이언트에 돌려 주게 되는데 동적인 웹 사이트라고 해도 클라이언트가 받는 최종 응답은 정적인 HTML 페이지입니다. 예를들어 게시판에 여러 게시글이 있는데 사용자가 ASP.NET을 검색어로 입력하고 검색 버튼을 누르게 되면 이 요청을 웹서버가 받아서 게시글 중 ASP.NET이 들어간 결과만 찾아서 형식에 맞는 HTML을 구성하게 되고 클라이언트에 응답하주게 되는 것입니다. 이렇게 동적인 처리를 위해 ASP.NET과 같은 웹 기술이 필요하게 되고, 모든 처리는 웹 서버에서 수행되며, 클라이언트의 입장에서는 정적인 웹 사이트와 동일하게 웹 서버에 요청을 하고 응답받은 결과를 파싱하여 보여 주게 됩니다.

 

#2. 상태 관리(State Management)

웹 사이트를 사용하는 사용자는 HTTP GET방식이나 HTTP POST방식을 사용하여 웹 서버로 페이지를 요청하게 되고, 웹 브라우저는 웹 서버에서 응답받은 HTML을 파싱하여 렌더링하게 됩니다. 이러한 일련의 주기를 ‘라운드트립(Round Trip)’ 이라고 합니다.그런데 HTTP 프로토콜은 상태를 저장 할 수 없는 프로토콜입니다. 이 말은 클라이언트의 요청이 왔을대 웹 서버는 해당 요청에 대한 응답인 HTML을 보내주고 연결을 끊어버린다는 것입니다. 그렇기 때문에 라운드트립 시 페이지에 있는 컨트롤의 사용자 입력정보나 페이지의 정보들이 모두 손실 되게 됩니다.  예전에 사용하던 정적인 웹사이트(일방적으로 보기만 하는 웹사이트)에서는 문제가 되지 않지만 동적인 웹사이트에서는 사용자의 요청이나 컨트롤의 입력정보를 유지할 필요가 있기 때문에 ASP.NET은 상태 관리를 할 수 있는 여러가지 기능을 제공합니다.

 

상태관리의 정보를 저장하는 장소에 따라 두가지로 분류 할 수 있는데, 웹 서버에 저장하는 경우와, 클라이언트에 저장하는 경우가 있습니다.

▶ 상태 정보를 클라이언트에 저장하는 방식

  • 뷰 상태(View State)
  • 컨트롤 상태(Control State)
  • 숨겨진 필드(Hidden Field)
  • 쿠키(Cookie)
  • 쿼리 문자열(Query String)

상태 정보를 웹 서버에 저장하는 방식

  • 응용 프로그램 상태(Application State)
  • 세션(Session)
  • 프로필 속성(Profile Property)
  • 데이터베이스(Database)

두가지 방식은 장단점이 존재 하는데요. 일반적으로 데이터가 작고, 중요하지 않은(보안 등의 이유)정보는 클라이언트 측에서 관리하고, 나머지는 웹 서버에서 관리 하는 것이 좋습니다. 여러가지 상태관리 기능 중 Cookie와 Session에 관해 자세히 알아보겠습니다.

 

#3. 쿠키(Cookie)

-Fig3. 맛있는 쿠키-

 

쿠키는 요청 및 응답하는 과정에 포함되는 텍스트 정보이고 쉽게 구현하여 사용 할 수 있는 방법중에 하나입니다. 일반적인 브라우저에서 최대 4KB의 텍스트 정보를 담을 수 있으며 하나의 사이트는 20개만 허용되며, 모든 사이트를 통틀어서 300개로 제한 됩니다. 만약 이 범위를 넘어 더 많이 저장 하려고 할 경우에는 가장 오래된 쿠키부터 삭제되므로 사용의 주의해야하고, 4KB로 비교적 작은 크기만을 저장하기 때문에 적은 양의 데이터나 ID, 최근 읽은 글, 최근 본 상품과 같은 식별자를 저장할 때 사용하는 것이 적합합니다.

 

1. 쿠키의 동작 방식

쿠키는 서버에서 생성하여 클라이언트의 브라우저에서 관리하기 때문에 요청시 쿠키를 생성하고 브라우저를 닫을때 쿠키를 파괴합니다. 응답을 통해 얻어온 쿠키는 만료시간 여부에 따라 클라이언트의 PC에 파일로 저장하게 됩니다.

 

image

-Fig4. 웹 사이트를 처음 요청 할 경우 쿠키 생성 -

 

쿠키의 생성 주기를 살펴보면처음으로 페이지를 요청 할 경우 웹 서버에서는 쿠키를 생성하게 되고, 페이지를 돌려 줄때 HTTP 헤더에 쿠키를 포함하여 돌려 주게 됩니다. 이렇게 넘겨 받은 쿠키는 클라이언트에서 관리 하고 있다가, 다음번 요청때 쿠키를 함께 전송하게 되고, 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 알 수 있게 됩니다. 이때 웹 서버는 Fig5에서 처럼 정보를 변경 할 필요가 있을때 쿠키를 업데이트하여 다시 변경된 쿠키와 함께 응답하게 됩니다.

image -Fig5. 쿠키를 가지고 있을 경우 쿠키 활용-

2. ASP.NET에서 쿠키 사용

쿠키는 서버로 부터 응답받은 사항이기 때문에 HttpResponse 객체를 통해 클라이언트로 전송 됩니다. 쿠키에 정보를 저장하는 방법은 두가지가 있습니다. Page클래스의 Response 객체를 사용하는 것과 HttpCookie 클래스를 사용하는 방법입니다.

//Response 사용 
Response.Cookies["쿠키명1"].Value = "쿠키 예제;
Response.Cookies["쿠키명1"].Expires = DateTime.Now.AddMinutes(30); 

//HttpCookie 클래스 사용 HttpCookie cookie = new HttpCookie("쿠키명2");
cookie.Value = "쿠키 예제";
cookie.Expires = DateTime.Now.AddSeconds(30); 
Response.Cookies.Add(cookie);

-Code1. 쿠키 저장-

쿠키명1과 쿠키명2라는 이름을 사용하는 쿠키를 생성 하였고 각각 Value 속성을 통해 상태유지에 필요한 값을 넣어 주었습니다. Expires 속성은 만료 기간인데, 이 속성을 설정하면 쿠키가 클라이언트의 컴퓨터의 파일의 형태로 저장됩니다.  만료기간을 설정하지 않은 쿠키는 브라우저의 메모리에서 관리됩니다. Code1에서 쿠키명1은 30분후에 쿠키를 지우며, 쿠키명2는 30초 후에 쿠키를 지우도록 설정 하였습니다. 만료시간이 지난 쿠키는 클라이언트가 쿠키를 생성한 웹 사이트에 다시 요청을 보낼때 삭제됩니다.

'.NET > ASP.NET' 카테고리의 다른 글

쿠키(Cookie)와 세션(Session)  (2) 2010.09.09
Posted by 맨날맑음

안녕하세요? 맨날맑음 입니다.

Windows Form Application에서 WPF로 만든 Windows Application을 호출하려 합니다.

WPF의 Control을 윈폼에 호스팅 하기 위해서는 ElementHost를 사용하면 되는데요(이에 관한 강좌는 추후에 포스팅 하겠습니다.)
오늘은 윈폼에서 WPF의 창(Window)를 띄우려고 합니다.

#1. 프로젝트 생성

우선 Windows Forms 응용프로그램 프로젝트와 WPF 사용자 정의 컨트롤 라이브러리 프로젝트 2개를 생성합니다.

 

#2. DLL 참조

윈폼에서 WPF 윈도우를 호출하기 위해 WPF 프로젝트의 DLL(wpfControlLibrary1)과 윈폼에서 WPF 사용을 위한 DLL을 참조 합니다.

Windows Form에서 WPF를 사용하기 위한 DLL 목록
  PresentationCore
  PresentationFramework
  System.Xaml
  WindowsBase


#3. WPF 윈도우 호출
이제 Windows Form의 소스코드에 WPF 윈도우 호출 코드를 넣습니다.(저는 간단히 버튼을 누를 때 WPF 창이 나오도록 하겠습니다)

private void button1_Click(object sender, EventArgs e)

 {

     Window1 WPF_Wnd = new Window1();

     WPF_Wnd.Show();

 }

#4. 결과 확인 

간단한 방법으로 Windows Form에서 WPF 윈도우를 호출 할 수 있습니다. 감사합니다.

Posted by 맨날맑음

Posted by 맨날맑음

훈스닷넷 22회 정기 세미나
- 일시 : 2010년 03월 25일(목) 19시 00분
- 장소 : 포스코센터 5층 (한국마이크로소프트)
- 참가비 : 삼천원+α (수익금 전액은 후원처 요셉의원에 기부됩니다.)
- 세미나 신청: http://www.hoons.kr/Seminar/Join.aspx 
세미나 Agenda
19:00~19:30
등 록
19:30-20:10
실버라이트 4를 통해 보는 RIA의 미래 / 공인석
20:10~20:20
휴식
20:20-21:00
선구언니와 함께하는 익스프레션 블렌드 4 / 김선구, 이은아, 장미연
21:00~21:10
휴식
21:10-21:40
누구도 얘기해주지 않았던 WPF 4 이야기, 그리고 그 비밀 / 전호진, 이동규
21:40~
Q&A / 경품추첨
발표 내용 소개

실버라이트 4를 통해 보는 RIA의 미래 / 공인석
매년 열리는 MIX의 꽃은 바로 실버라이트죠. 올해, MIX10에서도 실버라이트 4가 베타 딱지를 떼고 RC로 공개되었습니다.
해마다 지칠줄 모르고 발전을 거듭하는 실버라이트! 이 세션에서는 실버라이트 4의 주요 기능을 소개하고 향후 리치 애플리케이션의 환경에 어떤 영향을 미칠지 예측해 봅니다.
선구언니와 함께하는 익스프레션 블렌드 4 / 김선구, 이은아, 장미연
실버라이트와 WPF 프로젝트를 수행할 때 블렌드는 선택이 아닌 필수가 되었습니다.
이번 MIX10에서 공개된 블렌드 4는 그 동안 디자이너 혼자서는 할 수 없었던 많은 기능이 추가되었습니다. 이제 블렌드로 더욱 인터랙티브한 애플리케이션을 만들 수 있습니다.
이 세션에서는 블렌드 전문가로서 디자이너에게 꼭 전해주고 싶은 기능과 활용법을 소개합니다.
누구도 얘기해주지 않았던 WPF 4 이야기, 그리고 그 비밀 / 전호진, 이동규
차세대 윈도우 리치 클라이언트 애플리케이션 개발을 지원하는 강력한 도구인 WPF 4!
아무도 해주지 않았던 WPF 4의 '비밀'스러운 이야기를 풀어봅니다. 쉿!

진행자 소개
공인석 / 실버라이트 시삽

HOONS닷넷 실버라이트 분야 시삽을 맡고 있고, 실버라이트가 소개된 이래로 실버라이트에 매진해 왔다. 유령회사 공도소프트라는 블로그를 통하여 기술 자료, 컬럼, 강좌 등을 진행하고 있으며 훈스닷넷을 비롯한 실버라이트 관련 커뮤니티 활성화에 기여하고 있다.
김선구 / 익스프레션 시삽

웹디자이너, 액션스크립터로 일해 왔다. 일찍이 UX 디자인의 중요성을 깨달아 ,Silverlight의 베타시절부터 Silverlight와 WPF 와 같은 기술로 향상된 UX 구현을 하는 인터랙티브 디자이너로 일하였고, 다수의 교육 및 강의을 진행하였다. 하얀코코의 예제로 배우는 익스프레션 블렌드 & 실버라이트(www.whitecoco.net) 를 운영중이며 마이크로소프트의 MVP이고 닷넷엑스퍼트의 UX컨설턴트로 일하고 있다.
장미연 / 익스프레션 시삽

Microsoft Blend MVP로 활동하고 있고 HOONS닷넷의 Expression 시삽을 맡고 있으며 각종 세미나와 교육을 진행하고 있다. 현재 바이널(http://www.vi-nyl.com/) 인터렉티브 사업부 VLab에서 근무하고 있으며 디지털교과서를 비롯하여 다양한 WPF & Silverlight 프로젝트를 진행하였다. "짱묜"이라는 닉네임으로 블로그(http://zzangmyon.com/)를 운영중이다.
이은아 / 익스프레션 시삽

현재 d'strict 에서 UX Designer로 서피스 프로젝트에서 디자인 구현을 하고 있다. Expression MVP이며 , HOONS닷넷에서는 Expression 파트의 시삽으로 활동하고 있다.
전호진 / WPF 시삽

현재 HOONS닷넷 커뮤니티 WPF시삽으로 활동하고 있으며 닷넷 전반적인 기술에 관심이 많다. 아는것은 설명하면서 늘어난다는 생각으로 개인블로그(Life is dynmic :: http://crynut84.tistory.com)를 운영하고 있으며, 특히 최근에는 동영상 압축(Codex)과 영상처리에 집중하고 있다. 또한 항상 긍적적인 마인드를 가지고자 '맨날맑음'이라는 닉네임을 사용한다.
이동규 / WPF 시삽

현재 MSP(Microsoft Student Partners)로 활동중에 있으며, 닷넷 기술에 매우 많은 관심을 가지고 있다. 새로운 신기술을 굉장히 좋아하며 그것을 바로 활용하여 새로운것을 만드는것을 좋아한다.
세미나 장소

한국 마이크로소프트 - 포스코 센터 5층



 
경품안내

Calmee Space 콤보 Plus
공인석 MVP 협찬




영화예매권 * 2
한진수 MVP 협찬

아이폰커버
Elecom 협찬

    ?



상사에게 사랑받을 수 있는 절대 아이템
공인석 MVP 협찬
* 경품은 사정에 의해 동급의 다른 제품으로 제공될 수 있습니다.
스폰서안내
Posted by 맨날맑음

- 일시 : 2010년 02월 25일(목) 19시 00분
- 장소 : 포스코센터 5층 (한국마이크로소프트)
- 참가비 : 삼천원+α (수익금 전액은 후원처 요셉의원에 기부됩니다.)
- 세미나 신청: http://www.hoons.kr/Seminar/Join.aspx 
세미나 Agenda
19:00~19:20
등 록
19:20-19:40
다시 생각해보는 UX와 RIA / 공인석
19:40-20:40
포토라이트 시즌2: 웹캠과의 만남 / 최다은, 김동욱
20:40~20:55
휴식
20:55-22:00
WPF 3D 기초부터 활용까지 / 전호진 이동규
22:00~
Q&A / 경품추첨
발표 내용 소개

다시 생각해보는 UX와 RIA / 공인석
2007년 무렵으로 기억합니다. WPF가 발표되고 WPF/E가 실버라이트로 이름을 바꾸어 발표되면서 마이크로소프트도 본격적으로 RIA시장에 뛰어들게 된 시기였죠. 물론 그 때까지도 UX란 단어와 RIA라는 단어는 수도 없이 많이 사용되었고 갑론을박이 많았지만 닷넷 세상에서는 바로 이 즈음이 시작이었습니다. 그 당시에는 제목에 RIA를 달고 나온 세미나가 참 많았는데, 어느 순간부터 세미나에 RIA란 단어가 사라지고 그 자리를 UX가 채우기 시작했습니다. 이제는 UX나 RIA란 단어를 모르면 트렌드에 뒤처지는 사람으로 취급 받을지도 모른다는 생각도 듭니다. 그런데, 우리는 과연 이 단어의 의미를 생각하면서 사용하고 있을까요? 최근에는 UX와 RIA라는 용어를 전혀 의미에 맞지 않게 사용하는 경우를 상당히 자주 보면서 이런 질문을 떠올려 봅니다. 이번 세션에서는 2010년, 실버라이트가 발표된지 벌써 햇수로 4년이 지난 이 시점에서 UX와 RIA를 다시 한번 조명하고 향후 RIA 개발과 UX에 대해 간단하게 브리핑해 봅니다.
포토라이트 시즌2: 웹캠과의 만남 / 최다은, 김동욱
이용자의 정보 생산ㆍ선택능력, 정보 소비 욕구가 커지면서 블로그 등 개인미디어 서비스 이용이 크게 증가하고 있다. 네티즌들이 블로그 및 미니홈피에 게재하는 글이나 사진 컨텐츠 제작이 용이해진 이유중 하나로 디지털카메라, 카메라 폰, 웹캠의 보급 등 배포도구의 간편화를 들 수 있다. 이번에 출시된 실버라이트 4는 웹캠기능을 추가함으로써 인터넷이라는 미디어 환경에서 사용자에게 더욱 편하면서도 풍성한 WEB문서의 작성을 지원하고 있다. 이에 이번 세미나에서는 실버라이트 4에서 어떻게 웹캠기능을 구현 할 수 있는지, "포토라이트 시즌2"를 통해 살펴보고자 한다.
WPF 3D 기초부터 활용까지 / 전호진, 이동규
최근들어 게임, 에니메이션, 영화분야에서도 3D를 사용한 사례가 점점 늘어나면서 사람들의 관심도 점점 높아지고있다. 이에 3D 어플리케이션 개발도 활발해 지고 있다. 3D에 대한 관심은 많지만 비교적 어려운 개념으로 인해 정작 3D 인터페이스를 활용한 응용프로그램은 찾아보기 힘들다. 또한 기본적인 3D 개념을 이해하고 WPF 3D를 유연하게 다루는 개발자는 많지 않아 보인다. 이번 섹션에서 WPF 3D의 기본 개념부터 차근차근 짚어 보고 실전에서 활용 할 수 있는 방법을 알아 본다.

진행자 소개
공인석 / 실버라이트 시삽

HOONS닷넷 실버라이트 분야 시삽을 맡고 있고, 실버라이트가 소개된 이래로 실버라이트에 매진해 왔다. 유령회사 공도소프트라는 블로그를 통하여 기술 자료, 컬럼, 강좌 등을 진행하고 있으며 훈스닷넷을 비롯한 실버라이트 관련 커뮤니티 활성화에 기여하고 있다.

최다은 / 실버라이트 시삽

HOONS닷넷 실버라이트 시삽이며, 야간학부 3학년에 재학중으로 셀러던트의 길을 걷고 있는 중이다. Asp.net 개발 경력을 계속 쌓아 왔으며, Nunit을 이용한 단위테스트에 관심이 많다. 실버라이트로 다양한 어플리케이션을 만들어 보는것이 목표이다. 부족한 내공을 쌓기 위해 늘 노력하는 자세를 잊지 않으려고 한다. 밤하늘을 바라보며 수많은 별들을 사진으로 담는 여행가를 꿈꾸기도 한다.
김동욱 / 실버라이트 시삽

Silverlight를 통해 다양한 프로젝트를 개발해 왔으며 HOONS닷넷에서는 커뮤니티 시삽을 맡고 있다. 지금은 개발자들이 쉴수 있고 또, 편히 놀수 있는 공간과 만남을 위해 노력하고 있다
전호진 / WPF 시삽

현재 HOONS닷넷 커뮤니티 WPF시삽으로 활동하고 있으며 닷넷 전반적인 기술에 관심이 많다. 아는것은 설명하면서 늘어난다는 생각으로 개인블로그(Life is dynmic :: http://crynut84.tistory.com)를 운영하고 있으며, 특히 최근에는 동영상 압축(Codex)과 영상처리에 집중하고 있다. 또한 항상 긍적적인 마인드를 가지고자 '맨날맑음'이라는 닉네임을 사용한다.
이동규 / WPF 시삽

현재 MSP(Microsoft Student Partners)로 활동중에 있으며, 닷넷 기술에 매우 많은 관심을 가지고 있다. 새로운 신기술을 굉장히 좋아하며 그것을 바로 활용하여 새로운것을 만드는것을 좋아한다.
세미나 장소

한국 마이크로소프트 - 포스코 센터 5층



 
경품안내
확정 후 업데이트 예정

Posted by 맨날맑음