Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[11760] Webbroker 와 Multi-thread
marinfo [] 1734 읽음    2008-02-16 15:46
안녕하세요..

Webbroker 로 web application 을 개발 중입니다 (ISAPI model 사용해서 ~.dll 로...).

그런데 궁금한 것이 웹서버 application 으로 되면  여러 사람이 동시에 접속을 할텐데, 프로그램 내에서 변수로 지정한 것이 접속자마다 따로  memory 상에서 유지가 되는지 알고 싶습니다. 책을 보면, win32 mode 에서 .dll 파일은 user 마다 별개의 instance 가 생성되기 때문에 전역 변수도 공유되지 않는다고 되어 있네요.  웹서버 애플리케이션도 마찬가지인지..

그런데 간단한 예제 프로그램을 만들어 본 결과, 반드시 그렇지 않은 것 같아서 문의드립니다.

예컨대

type
  TWebModule1 = class(TWebModule)
    pp2: TPageProducer;
    .............
   public
       a : integer;
end;

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
   inc (a); // Add A 버튼을 누르면, 여기서 A 값을 증가시킵니다.
   Response.Content := pp2.Content;
end;

procedure TWebModule1.pp2HTMLTag(Sender: TObject; Tag: TTag;
  const TagString: String; TagParams: TStrings; var ReplaceText: String);
begin
   if TagString = 'VARA' then ReplaceText := InttoStr(a);  // 여기서 a 의 값으로 치환합니다.
end;

처럼 정의가 되어 있다 치고,

pp2의 HTML 문서에 다음을 포함시킵니다. 

...........
Value of A = <#VARA>


............

웹브라우저 상에서 "Add A" 라고 써 있는 버튼을 누르면,  inc(A) 코드를 실행하게 되고 TagReplace 를 통해
1이 증가된 A 의 값을 브라우저로 보여주는 간단한 예입니다.

그렇게 한 다음, 웹브라우저 상에서 위 페이지를 띄우고 버튼을 클릭하면, 값이 1씩 증가됩니다.

그런데 한 피시에서 웹 브라우저를 두 개 띄운 다음 (따라서 두 개의 윈도가 생기죠), 첫 번째 윈도에서 버튼을 눌러 값을 올립니다. 예컨대 5 가 나오게 올렸다고 치죠. 그런 다음 두 번째 윈도에서 "Add A" 버튼을 누르면, 두 번째 윈도의 값이 6으로 표시됩니다. 다시 첫 번째 윈도의 버튼을 누르면, 7 로 표시됩니다.

여기에 대해

첫째, 같은 PC 에서 두 개의 브라우저를 띄웠기 때문인지, 아니면 당연한 것인지
둘째, 만약 값을 따로 유지하고 싶다면 WebBroker 를 사용해서 처리하는 방법이 있는지

경험있는 분들의 조언을 바랍니다.

+ -

관련 글 리스트
11760 Webbroker 와 Multi-thread marinfo 1734 2008/02/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.