Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Клиентская модель данных

Читайте также:
  1. ER-логическая модель данных
  2. ER-физическая модель данных
  3. II. Особенности технологии баз и банков данных.
  4. Trading Techniques Inc. предоставляет месячные, недельные, дневные и почасовые (60 минут) данные по всем фьючерсам с помощью сервиса загрузки данных.
  5. Авторско-правовая охрана программ для ЭВМ, баз данных и топологий интегральных микросхем
  6. Анализ данных по анкетированию
  7. Анализ данных по конкурентам

В Silverlight, как и в любом RIA-клиенте, обмен данными асинхронный. Это обстоятельство часто значительно снижает скорость разработки по сравнению с обычными настольными приложениями, которые используют архитектуру «клиент-сервер». При асинхронном обмене данными запуск запроса к веб-сервису и получение результата выполняется не по очереди, а с некоторой задержкой, при этом после выполнения запуска запроса текущий поток продолжает выполняться, не дожидаясь ответа от сервера. Ответ приходит в любое время, а обработкой его результатов (к примеру, коллекции с данными) должен заниматься делегат, который был подписан на событие ответа по этому запросу. Однако в ходе запроса могут возникнуть ошибки – исключение в коде веб-сервиса, потеря связи с сервером, недоступность БД и т. д. При этом, в отличие от системы с синхронным выполнением запросов, исключение возникает не в методе запуска запроса, а передается как аргумент делегату. Как результат, отлавливать ошибки необходимо уже в двух местах – в коде старта запроса и в делегате завершения выполнения запроса. Конечно, сделать эту работу нетрудно, но, как показывает практика, запросов в системе может быть несколько десятков или сотен – при таком положении дел сильно возрастает сложность отладки. Чтобы решить проблему, можно абстрагироваться от конкретных запросов, и написать систему классов, которая позволит легко обмениваться с веб-сервисом любыми типами данных. Такие классы значительно упростят расширение системы – добавление новых запросов будет требовать написания минимального количества кода. Безусловно, разработка упомянутой системы классов оправдана лишь для достаточно крупных систем, либо в случае разработки нескольких типовых проектов. Подобная система классов может является клиентским фреймворком – он может быть использован повторно в других проектах на Silverlight.

Один из вариантов клиентского фреймворка предлагает паттерн MVVM – «модель-представление-модель представления» (Model-View-ViewModel). В 2005 году Джон Госсман (John Gossman), один из архитекторов WPF и Silverlight в корпорации Microsoft, рассказал в своем блоге об этом паттерне. MVVM совпадает с моделью презентации (PM) Фаулера в том плане, что оба шаблона содержат абстракцию представления, содержащую состояние и поведение представления. Фаулер ввел модель презентации как способ создания независимого от платформы пользовательского интерфейса абстракции представления, а Госсман предложил MVVM как стандартизированный способ использовать основные функции WPF для упрощения создания пользовательских интерфейсов. В этом смысле MVVM - частный вариант более общего шаблона PM, приспособленным для платформ WPF и Silverlight.

Использование этого паттерна позволяет отделить логику приложения от графического интерфейса, что дает возможность разрабатывать то и другое независимо друг от друга. Описанные выше классы фреймворка могут служить базовыми моделями паттерна MVVM, и содержать весь набор типовых операций по асинхронной загрузке и отправке данных. С учетом того, что в Silverlight существует мощная система связывания данных (data binding), реализовать в Silverlight подобный паттерн довольно легко. Абстракция классов и применение MVVM сильно упростит будущую работу по расширению функциональности, добавлению новых сущностей и бизнес-логики. Начальное падение скорости разработки, связанное с проектированием абстрактных моделей, будет скомпенсировано скоростью последующей разработки новых модулей. Таким образом, использование MVVM тем более оправдано, чем больше сложность клиентской части системы.

 

 


Дата добавления: 2015-07-14; просмотров: 54 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Веб-сервисы| Спустя месяц

mybiblioteka.su - 2015-2024 год. (0.006 сек.)