2009-04-02 7 views
2

SQL Server 2005 Express를 백엔드로 사용하여 여러 시간대에 C#으로 다중 사용자 응용 프로그램을 작성했습니다.C# 데이터베이스 응용 프로그램 동시성

나는 주문 모음집이 있습니다. 이 클래스를 사용하려면 컬렉션을 인스턴스화하고 지정된 고객의 주문으로 콜렉션을 채우기 위해 Load (CustomerCode) 메소드를 호출해야합니다.

내 질문 : 단 한 사용자가 특정 고객에 대한 주문 수집을 요청할 수 있도록

가 어떻게 동시성을 적용합니까? 객체가 null로 설정된 경우 사용자가 객체를 완료하면 을 다시 사용할 수있게해야합니다.

답변

6

Pessimistic Offline Lock 패턴을 구현해야합니다.

기본적으로 다른 테이블의 레코드에 "잠금"을 나타내는 레코드를 넣는 테이블이 있습니다. 레코드를 편집하려면 먼저 잠금 테이블에 잠금이 있는지 확인한 다음 도메인 논리/UI에 따라 대응하십시오.

데이터베이스 일 필요는 없으며 메모리 내 캐시 일 수 있습니다. 필자가 예로 든 "테이블"을 말할 때, 반드시 논리적 인 테이블을 의미하며 반드시 데이터베이스는 아닙니다.

비관적 인 오프라인 잠금은 모두를 피함으로써 충돌을 방지합니다. 그것은 그것을 사용하기 시작하기 전에 당신이 비즈니스 트랜잭션을 시작하면 대부분의 시간, 당신은 당신이 완료됩니다 꽤 확신 할 수 있도록 에 비즈니스 트랜잭션, 데이터 의 조각에 잠금을 획득 강제 그것 없이는 동시성 제어에 의해 반송.

+0

좋은 생각이지만 실제로 구현 된 코드에 대한 링크가 있습니까? – MegaByte

+0

불행히도 코드 샘플에 대한 링크가 없지만 내 링크에서 Fowler의 책을 읽었을 경우 코드 샘플이 가득합니다. 인터넷에서 다운로드 할 수도 있습니다 - 엔터프라이즈 애플리케이션 아키텍처 패턴. –

관련 문제