Шаблон проектирования Silverlight для повышения производительности - очень богатый пользовательский интерфейс - PullRequest
0 голосов
/ 08 октября 2009

Исходя из этого начального исследования архитектуры Silverlight, у меня есть несколько новых требований, которые необходимо учитывать.

Мы ожидаем, что наш клиентский интерфейс Silverlight будет графически насыщенным, с ГИС-интерфейсом, несколькими диаграммами, датчиками и сетками данных, расположенными в стиле виджетов. Новые виджеты будут динамически генерироваться пользователем.

Предположим, что пользователь хотел динамически создать виджет диаграммы из существующего виджета сетки данных, предварительно заполненного данными. Мне кажется, что если бы мы использовали шаблон MVVM с моделью представления на сервере, это привело бы к ненужному обратному вызову домой, когда требуемые данные уже находятся на клиенте.

Теперь, очевидно, сервер должен знать об этом новом виджете диаграммы на клиенте, но как мне сначала создать виджет на клиенте (с существующими данными на стороне клиента), а затем уведомить сервер о новых изменениях?

В нашей интрасети сетевое соединение между клиентом и сервером не очень хорошее, поэтому производительность критична.

Из моего первоначального исследования видно, что общие шаблоны архитектуры Silverlight требуют, чтобы большая часть бизнес-логики была возвращена на сервер. Я понимаю причину этого, но боюсь, что это действительно повредит удобству использования нашего приложения.

Существуют ли конкретные шаблоны проектирования, которые решают эту проблему? Поддерживается ли эта «привязка клиента» в MVVM, Prism или других распространенных архитектурах Silverlight?

Есть ли более формальное название для того, что я пытаюсь описать?

Я совершенно не знаком с Silverlight и шаблонами проектирования, такими как MVVM, поэтому, пожалуйста, исправьте меня, если какие-либо из моих предположений неверны.

1 Ответ

2 голосов
/ 11 октября 2009

Шаблон MVVM предназначен для разделения проблем. Он не определяет, как и где вы получаете ваши данные.

Модель, это данные. Это могут быть данные, которые вы получаете из любого произвольного источника. В Silverlight наиболее распространенный способ получения данных - через веб-сервис (SOAP / REST). Но вашей моделью могут быть любые данные из любого места.

Модель представления - это просто еще один класс, который, вероятно, реализует интерфейс INotifyPropertyChanged (так что ваши привязки могут автоматически обновляться). Этот класс является абстракцией для данных вашего представления. Давайте представим, что у него есть строковое свойство с именем «FirstName».

Представление - это ваш пользовательский интерфейс (пользовательский элемент управления в SL). Вы устанавливаете свои привязки здесь к вашей ViewModel. IE.

Представление и модель представления объединяются при настройке представлений DataContext. myView.DataContext = new MyViewModel (); Существует множество способов установить DataContext в зависимости от того, как вы хотите это настроить.

Prism - это просто инфраструктура, помогающая писать разрозненные приложения в WPF / SL. Он не требует использования какого-либо шаблона пользовательского интерфейса (например, MVP / MVC / MVVM). С этим связано несколько классов, которые можно использовать для разработки MVVM, таких как посредник (EventAgggregator) и контейнер внедрения зависимостей (Unity).

Так что достаточно отвлекаться ... Я бы сказал, что у вас есть веб-сервис, где вы можете получить все свои данные. Ваше SL-приложение получит эти данные (наиболее вероятно, что веб-сервисы будут вызываться в модели представления). Эти данные теперь существуют на стороне клиента, и вы можете настроить виртуальную машину для привязки к этим данным в своем представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...