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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[178] [팁] 서류가방 모델, 서버/클라이언트 모델
타락천사 [rain622] 7289 읽음    2001-08-20 13:36
안녕하세여. 타락임다..^^

여러개의 조각으로 나누어서 올렸던 팁을 모아 Briefcase 모델을 설명하려고 합니다.

혹시 모르는 분들을 위해 알기 쉽게 설명을 드리져.

판매 사원들은 사무실 밖에서 외근을 하는 경우가 많으므로 항상 네트웍에 연결하고 있을 수는 없슴다. 그렇지만 판매 사원의 노트북 안에 모든 고객 목록을 저장할 수는 없슴다. 그렇지만 판매 사원의 노트북 컴퓨터 안에 모든 고객 목록을 저장할 수는 없슴다. 전체 고객 목록은 회사의 서버에 들어 있으며, 판매 사원의 노트북에는 그 사원이 필요로 하는 고객 목록만 저장하는 것이 합리적임다. 그러나 노트북의 고객 데이터가 변경되면 회사 서버의 데이터도 적절히 갱신되어야 하는데, 네트웍에 항상 연결되어 있다면 문제가 없겠지만, 네트웍에 연결되어 있지 않은 상태라면 문제가 생김다.

가장 이상적인 환경은 아침에 판매 사원이 자신이 필요한 데이터를 노트북에 다운 받아서 회사 밖으로 나가서 네트웍에 의존하지 않고 자신의 업무를 처리한 다음, 저녁에 회사(즉, 서버에 연결 할 수 있는 상황)에 돌아와서 서버의 데이타베이스와 노트북의 데이터를 일치시키는 겄임다.

문제는 네트웍 연결에 의존하지 않고도 데이터의 무결성을 보장할 수 있어야 한다는 것인데, TDataSet의 내부 캐쉬 기능을 이용하면 해결할 수 있슴다.([팁] CachedUpdate 속성 에서 설명..) 비연결 상황처리 방법은 이전에 올린 "[팁] 서류가방 모델"을 참조하세요.
애플리케이션이 종료하면 DataModule 의 OnClose() 이벤트 처리 메소드는 현재의 온라인/오프라인 상태를 레지스트리에 기록함다. 애플리케이션을 다시 시작하면 DataModule 의 OnCreate() 이벤트 처리 메소드에서는 레지스트리에서 온라인/오프라인 상태를 읽어서 애플리케이션을 적절한 상태로 만듬다. "[팁] 동적 SQL"을 이용하여 고객이 거주하는 도시나 주 이름을 이용해서 레코드를 걸러냄다. 클라이언트 애플리케이션이 오프라인 상태이면 클라이언트 쪽의 필터링이 일어나며, 클라이언트 애플리케이션이 온라인 상태이면 서버쪽의 필터링이 일어남다.

그런데 온라인 상태에서 필터를 적용한 다음, 오프라인으로 전환하면 클라이언트 컴퓨터에는 필터로 걸러진 레코드들만이 저장된다는 점을 주의해야 함다.

추가한다면, 콜백메카니즘을 통해서 애플리케이션의 서버가 클라이언트의 사용자 로그인 정보를 얻도록 하는 것도 좋은 아이디어입니다. 이렇게 하면 로그인 정보가 필요한 시점을 서버에쪽에서 결정할 수 있기 때문에 훨씬 효얼적일 수 있으며, 클라이언트와 서버 사이에 Stateless 상호 작용도 가능함다. 결론적으로 보안에 관련된 부분을 애플리케이션 서버가 좀더 중앙 집중적으로 제어할 수 있게 되므로, 보안 관리가 훨씬 강력해 질 겁니다.

연결풀링을 추가하는것도 좋은 아이디어임다..^^

최대한 쉽게 설명하려고 애썼는데, 설명되었는지 모르겠군여..

즐푸하세여..

타락천사... 

+ -

관련 글 리스트
178 [팁] 서류가방 모델, 서버/클라이언트 모델 타락천사 7289 2001/08/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.