생각해 보니 좀 바보같은 질문이었는데, 기본적으로 서버에서는 클라이언트의 값을 알 수 없기 때문에 fat URL 이니 쿠키니 hidden fields 니 하는 것들을 쓰고 있었는데... EXE 형태로 되어 있으면 변수 저장이고 뭐고 없는 거고.
그런데 dll 의 경우에는 class 의 instance 를 만든다... 고 되어 있기 때문에, 그 instance 가 없어지기 전까지는 내부 변수 값이 유지가 되어야 하고, 간단히 테스트 해 본 결과도 그런 것 같습니다.
WebSnap 의 SessionService 를 쓰면 되긴 한데, 설명이 조금 신경이 쓰입니다. 즉 WebSnap 는 쿠키에 값을 저장했다 읽어온다고 설명에 나와 있습니다. 그렇다면 instance가 유지 된다는 것이 무슨 의미가 있는 건지. 그리고 default 로 지정되어 있는 20분간 클라이언트로부터 request 가 없으면 접속이 끊어진 것으로 간주한다는 것이 또 무슨 의미가 있는 건지. 추측하자면, 서버에서 class 의 instance 를 만들기는 하지만, client, 즉 browser 의 request 가 오면 그것이 어느 instance 에 해당하는 것인지를 알기 위해서 browser 로부터 보내지는 (WebSnap 같으면 cookie 형태가 되겠죠) 정보가 있어야 한다는 의미인지, 아니면 그런 것 없어도 TCP/IP 의 연결에 의해 해당 instance 에 대한 request 인지를 알 수가 있는 것인지..
제가 pascal 로 논리적으로 해결하는 것만 알아서, 이런 부분에 대해 궁금한 점이 많습니다. 아시는 분 계시면 간략한 설명을 부탁드립니다.
seg 님이 쓰신 글 :
: 안녕하세요..
:
: 일단 질문의 요지는, tcp/ip 기반의 네트웤에서는 서버가 클라이언트의 요청에 반응하고 나면 클라이언트의 상태에 관해 알 수 없다고 하는데, 그렇다면 다시 그 클라이언트에서 요청이 올 때 다시 백지에서 시작해야 하는 것인가 라는 점에 관한 것입니다.
:
: 예를 들어, 클라이언트가 접속을 하면 1번, 2번, 이렇게 차례로 서버에서 정보를 보내 주고, 클라이언트는 확인하여 수정하거나 그대로 서버에 돌려보내면 서버는 다시 다음 번호의 정보를 보내 주는 방식입니다.
:
: 클라이언트 (브라우저) 서버 (웹서버)
:
: 사용자 id 입력 (1) -----------------------> 그 id 의 1번 정보 추출
: <---------------------- (2) 정보를 클라이언트에 보냄
: 1번 정보보고 답을 함 (3) ---------------> 1번 정보를 처리
: (4) <-------------- 2번 정보 추출
: 2번 정보 보고 답을 함.. (5) -----------------> 2번 SAVE, 3번 추출....
:
:
: 이런 순서가 되겠죠.
:
: (1) 번은 맨 처음 들어오는 거니까 사용자 정보가 반드시 필요하다고 가정하구요,
:
: 이 때 3번과 5번 같은 REQUEST 에 대해서도 클라이언트가 사용자 ID 에 대한 정보를 계속 보내야만 하는가입니다.
: 아니면 서버의 프로그램에서, 예컨대 WEBBROKER 같은데서 user_id = , last_number = 등과 같은 변수를 object 내에 만들어 두고 값을 저장해 두면, 같은 브라우저에서 계속 접속하면 그것이 해당 user_id 에 대한 것임을 서버가 알 수 있느냐 하는 점입니다. 만약에 안되면 계속 log-in 되어 있는 상태를 어떻게 알 수 있는지요?
:
: Session 이 이런 상황을 처리하기 위한 것인지?
:
: 답변에 대해 미리 감사드립니다.
|