2012-09-26 5 views
1

나는 두 가지 유형의 데이터 포함 할 필요가있는 윈도우 8 앱 만드는 오전 - ProjectUser이 (등 다른 개체의 List의를 포함하여 다른 유형의 데이터를 포함하는 데이터 모델입니다 List<Project>List<User>을,).지속하기 응용 프로그램 데이터

이전에 Windows Phone 응용 프로그램을 만들었으며 유사한 시나리오에서 단순히 응용 프로그램 설정을 사용하여 데이터를 저장했습니다. 그래서 나는 Windows 8에서도 그렇게 할 수 있기를 바랬다.

나는 앱 데이터를 저장하기 위해 ApplicationData.Current.LocalSettings 구조를 사용하기로 결정했습니다. 그 어떤 변화도 가져 오지면

WinRT information: Error trying to serialize the value to be written to the application data store Additional information: Data of this type is not supported.

모델은 [DataContract] 속성으로 표시됩니다 : 내 데이터를 저장하려고 할 때마다 그러나, 나는 이러한 유형의 오류를 얻을.

지금까지 내가 understood Microsoft 인 경우 표준 데이터 유형 (부울, 문자열 등) 만이 방식으로 저장할 수 있습니다. 이 올바른지?

그렇다면 어떻게 이런 식으로 구조화 된 데이터를 저장할 수 있습니까?

도움을 주시면 대단히 감사하겠습니다.

답변

3

복잡한 유형은 슬픔을 일으킬 수 있지만 불가능하다는 것을 확인할 수는 없지만 다른 옵션이 있습니다.

데이터베이스 엔진의 오버 헤드없이 응용 프로그램 데이터를 저장하려는 경우 직렬화를 사용합니다. 유형의 구성에 따라 (간단한 데이터 유형으로 종결하고 공용 getter/setter가 있음) XML 직렬화 및/또는 2 진 직렬화를 사용할 수 있습니다.

XML 직렬화는 응용 프로그램의 범위를 벗어나는 데이터를 검토 (편집) 할 수있는 경우에 편리 할 수 ​​있습니다. (디버깅 등) 그러나 사용자 지정 serializer를 직접 코딩하지 않으면 데이터에 더 많은 제한이 있습니다. 바이너리 직렬화는보다 융통성이 있으며 압축 및 암호화와 결합하여보다 소형/위장/보안 데이터 저장 옵션을 제공합니다. (사용하는 경우 압축/압축 해제와 암호화에 약간의 추가 비용이 필요합니다.)

불행히도 바이너리는 먼저 Base64 문자열로 변환하지 않고 로컬 응용 프로그램 데이터에 무엇인가 붙이기에 적합하지 않습니다. 일반적으로 직렬화 옵션을 사용하면 사용자가 충분한 권한을 가지고있는 지정된 폴더에 파일을 저장합니다.

+0

좋은 답변을 주셔서 감사합니다. 그러나, 응용 프로그램에있는 것처럼 구조화 된 데이터를 저장할 수있는 간단한 방법이 없다는 말입니까? 나는 많은 앱들이 내가하는 것처럼 데이터 구조화를 할 것이므로 수동으로 물건을 직렬화하는 것보다 간단한 방법이 가능하지 않을까? –

+1

데이터 구조를 알지 못해도 말하기 어렵습니다. '앱 데이터'는 무엇이든 의미 할 수 있습니다. 사용자 구성 설정과 같은 간단한 작업은 값을 유지하고 앱 설정에서 구성 할 수있는 구성 클래스 및 저장소에서 쉽게 관리 할 수 ​​있습니다. 좀 더 복잡한 데이터 구조를 원한다면 그렇게 쉬운 일은 아닙니다. 이를 위해 직렬화 또는 ORM을 데이터 소스에 적용합니다. (데이터베이스 또는 XML) IMO, 직렬화는 매우 간단한 옵션입니다. :) –