У меня есть приложение Silverlight Windows Phone 7, которое извлекает данные из открытого API. Я считаю себя делать большую часть того же снова и снова:Архитектурное проектирование для приложения Silverlight WP7
- В пользовательском интерфейсе, установите загрузки сообщений или загрузки прогресс бар в месте, где содержание
- Получить содержание, которое может быть уже в памяти, кэшируется в изолированном хранилище файлов или требуется HTTP-запрос
- Если содержимое не может быть получено (нет сетевого подключения и т. д.), отобразится сообщение об ошибке
- Если содержимое получено, отобразите его в пользовательском интерфейсе
- Сохраните содержимое в основной памяти для последующих запросов
Содержимое, отображаемое пользователю, может быть взято непосредственно из источника данных, например ObservableCollection
, или это может быть запрос на источник данных.
Я хотел бы вынести этот повторяющийся процесс в рамках которой в идеале только следующие нужно указать:
- Где для отображения содержимого в пользовательском интерфейсе
- элементы пользовательского интерфейса, чтобы показать, во время загрузки , в случае неудачи, и в случае успеха
- URI-запроса HTTP
- Как разобрать ответ HTTP в структуру данных, которые будут храниться в памяти
- местоположении го е файл в изолированном хранилище, если он существует
- Как разобрать содержимое файла в структуру данных, которые будут храниться в памяти
Это может звучать как много, но две строки, три FrameworkElement
с, и два метода меньше, чем накладные расходы, которые у меня есть.
Кроме того, это необходимо для работы, однако данные сохраняются в памяти и должны работать для прямых коллекций и запросов в этих коллекциях.
Мои вопросы:
уже реализовано что-то вроде этого?
Неужели мои мысли по поводу этой темы в корне неправильно в некотором роде?
Вот дизайн я имею в виду:
Есть два компонента, вид и модель.
Вид представлен FrameworkElement
для загрузки, отказа и успеха. Также дается ссылка на соответствующую модель. Вид представляет собой UserControl
, который размещен где-то в пользовательском интерфейсе.
Модель, которой задан URI для данных, метод анализа данных и, при необходимости, имя файла и способ анализа файла.Он отвечает за получение данных и уведомление о представлении, когда изменяется текущее состояние (загрузка/сбой/успех). Если данные, загруженные из сети, отличаются от кэша, сетевые данные имеют приоритет. Когда приложение закрывается или уничтожается, модель записывает данные в кеш.
Как это звучит?
Спасибо за проницательные комментарии. Вы упомянули о построении платформы в кешировании. Что это такое? –
Этот пост дает хорошее представление о том, что люди имеют с ним http://forums.silverlight.net/forums/p/115871/262895.aspx –