2010-04-16 3 views
3

나는 실버 라이트 사용자가 다양한 시간대에 실행됩니다 응용 프로그램이 있습니다.Silverlight 응용 프로그램에서 DateTime.Utc의 안정성은 얼마나됩니까?

이 응용 프로그램은 시동시 서버에서 데이터를로드 한 다음 캐시격리 저장소에 있습니다. 내가 서버에있는 데이터를 변경하면

, 나는 모든 실버 고객 가 최신 데이터가이 날짜를 확인하려면 다음을 다운로드 할 수 있도록 "마지막 업데이트 시간"를 변경할 수 있도록합니다.

그러나, 나는 서버뉴욕에 있으며 업데이트 시간이 2010-01-01 17 : 00으로 설정되어있는 경우 이후 시간대 문제를 처리하는 방법에 대한 조금 혼란 스러워요 : 00클라이언트 () 시애틀 검사는 현지 시간 2010-01-01 14:00:00과 비교하여 세 시간 더 오래된 데이터를 계속 제공합니다.

내 솔루션은 항상 UTC 시간의 업데이트 시간이 아닌 서버의 시간으로, 다음 DateTime.UtcNow와 실버 라이트 응용 프로그램 체크을 확인하는 것입니다.

소리가 들리거나 문제가있는 것처럼 쉽습니다 (예 : 해당 시간대는 컴퓨터에서 올바르게 설정되지 않으므로 SilverlightApp에서 올바른 UTC 시간을보고하지 않습니다. 누구나 경험으로 말할 수있는 방법은 캐시를 새로 고치는 데있어 DateTime.UtcNow를 사용하면 모든 경우에 사용할 수 있습니다.

DateTime.UtcNow 신뢰할 수없는 경우, 난 그냥 "DataVersion"정수을 증가하지만, 철저하게이 문제를 해결하는 방법을 이해하기 위해 아래로 점점 시간대 동기화 기능이 유용 할 것이다 다른 시나리오가 사용 실버 라이트 애플 리케이션에서.

답변

2

DateTime.UtcNow는 클라이언트 시스템의 시계만큼 신뢰할 수 있습니다. 따라서 질문은 Silverlight 또는 .NET과 완전히 독립적입니다. 문제는 클라이언트 컴퓨터에서 시스템 클럭을 얼마나 신뢰합니까?

컴퓨터 사용자가 표준 시간대를 올바르게 설정하지 않아 컴퓨터에서 시간을 잘못 설정했을 수있는 위험을 감안해야합니다. 이 위험은 본질적으로 완전히 인간입니다.

증분 버전 번호를 사용할 경우 단점이 하나 있습니다. 새 값을 설정하려면 먼저 현재 값을 검색해야합니다. 문제가되지 않는다면 시간대를 중심으로 FUD를 제거하십시오.

+0

맞습니다. 두 번째 방법은 더 확실합니다. 실버 라이트 클라이언트가 로컬 시간을 서버에 다시 보내고 얼마나 많은 사람들이 얼마나 많은 정보를 얻었는지에 대한 보고서를 생성하는 것이 흥미로울 것입니다. 그것은 또한이 시간대 정보를 얻을 수있는 것 : System.TimeZoneInfo.Local –

관련 문제