묻고 싶기 때문에 웹 서비스 API를 사용하고 관찰 가능한 Model 컬렉션으로 직렬화했습니다.
내 질문은이 관찰 가능한 컬렉션을 어디서나 사용할 수 있으므로 매번 웹 서비스에서 호출 / 가져 오기 / 소비 할 필요가 없습니다.
그렇다면 API를 한 번만 호출하면 API를 다시 호출하지 않고 매번 데이터를 사용할 수 있습니까?
감사
위에서 언급했듯이 @thang은 매번 웹 서비스 호출을 제거하기 위해 앱에 데이터를 저장하는 여러 가지 방법이 있습니다.
내가하는 방식을 제안하겠습니다.
1. Web Api에서 JSON 데이터를 검색 할 때 Observable Collection으로 파싱합니다.
ObservableCollection<User> usersList = JsonConvert.DeserializeObject<ObservableCollection<User>>(responseJson).Users;
2. 목록이 있으면 직렬화 된 객체 (JSON 형식)를 텍스트 파일에 저장할 수도 있습니다 (JSON은 문자열과 다른 것이 아님을 기억하십시오).
private async void saveUsersToFile(string serializedUsersListAsJson)
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile usersFile = await storageFolder.CreateFileAsync("users.txt", CreationCollisionOption.OpenIfExists);
await FileIO.WriteTextAsync(usersFile, serializedUsersListAsJson);
}
이 단계에서는 앱을 닫았다가 다시 시작하더라도 데이터를 저장할 수 있습니다.
3. 앱을 시작할 때 아래 메서드를 호출하여 파일에서 데이터를 읽을 수 있습니다.
private async void retrieveNotes()
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile usersFile = await storageFolder.CreateFileAsync("users.txt", CreationCollisionOption.OpenIfExists)
string serializedUsersList = await FileIO.ReadTextAsync(usersFile );
// Deserialize JSON list to the ObservableCollection:
if(serializedUsersList!=null)
{
var usersList= JsonConvert.DeserializeObject<ObservableCollection<User>>(serializedUsersList);
}
4. 마지막 단계는 필요한 페이지에서 Observable Collection 필드를 선언하는 것입니다. 예를 들어 페이지간에이 목록을 전달해야하는 경우 다음을 사용할 수 있습니다.
Frame.Navigate(typeof(MainPage), usersList);
앱이 실행되면 파일에서 데이터를 읽어야합니다. 그 후에는 앱이 실행되는 동안 사용할 수 있습니다. 내 제안은 Web Api를 연결할 때마다 데이터를 캐시하여 새 데이터를 검색하는 것입니다.
이것이 도움이되기를 바랍니다. 데이터 저장에 대한 자세한 내용을 보려면 내 블로그의 아래 게시물을 읽으십시오.
https://mobileprogrammerblog.wordpress.com/2016/05/23/universal-windows-10-apps-data-storage/
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다