2014-04-02 3 views
0

WCF- AJAX 호출에서 사용하는 서비스를 개발 중입니다.xml 파일을 두 사용자가 동시에 쓰거나 읽음

XML 개의 파일에 데이터를 저장하고 있습니다.

이 두 사용자가 동시에 서비스에 액세스 할 때 파일 두 번을 읽기/쓰기 가능하지 않을 것이라는 이유로 특히 좋은 방법이 보이지 않는다.

제 질문은 그런 것도 허용하는 방법이 있습니까?

또는 사용자의 파일 사본을 로컬 파일로 유지하여 파일을 변경 한 다음 서비스에 보내고 바꿉니다. (이 경우 두 명의 사용자를 동시에 교환하는 문제가 있습니다.)

도와 드릴까요?

+1

시도. 이런 식으로 오직 1 명의 사용자 만이 자원에 배타적으로 액세스 할 수 있고 다른 사용자는 대기열에있게되며 첫 번째 사용자가 업데이트를 완료했을 때만 액세스 할 수 있습니다. – samar

+0

이 링크도 확인하십시오. http://www.codeproject.com/Tips/164428/C-FileStream-Lock-How-to-wait-for-a-file-to-get-re – samar

답변

1

잠금을 수동으로 관리하는 대신 ConcurrencyModeAttribute를 사용하십시오.

서비스가 ConcurrencyMode.Single로 구성된 경우 WCF는 서비스 컨텍스트에 자동 동기화를 제공하고 동시 호출을 허용하지 않습니다.

동시 호출자가있는 경우 대기열에 배치되고 FIFO 순서로 제공됩니다.

쓰기 작업보다 훨씬 더 많은 읽기 작업이있는 경우이 작업이 과도 할 수 있음을 기억하십시오. XML 파일에 작성하는 코드의 임계 영역에 걸쳐 잠금 장치를 사용하여

http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.concurrencymode.aspx

관련 문제