2009-10-08 2 views
0

Последующие из this начальные исследования архитектур Silverlight, у меня есть некоторые новые требования к рассмотрению.Модель дизайна Silverlight для производительности - очень богатый пользовательский интерфейс клиента

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

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

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

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

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

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

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

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

+2

Похоже, вам нужно несколько исследований конкретных случаев. Один момент, который я имею, заключается в том, что «обычные шаблоны архитектуры Silverlight требуют, чтобы большая часть бизнес-логики была отброшена на сервер» неверна и побеждает дополнительные возможности, которые у вас есть с Silverlight. Вы можете использовать более мощную логику проверки на клиенте, чтобы сохранить обратные вызовы, которые вы обычно используете с AJAX. – sipwiz

+0

@sipwiz: Действительно, я рад ошибиться в этом. Я смущен тем, как лучше всего определять модель как на стороне клиента, так и на стороне сервера. Некоторые тематические исследования будут приветствоваться. – Alex

+0

Что я нашел, так это то, что Silverlight позволяет делать то же самое на сервере или на клиенте. Он позволяет вам выбирать, какой вы предпочитаете. Например, проверка может быть выполнена на сервере или на клиенте. – johnnywhoop

ответ

2

Модель 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-приложение для получения этих данных (большинство пользователей, которых веб-службы будут вызывать в модели представления).Эти данные теперь существуют на стороне клиента, и вы можете настроить свою виртуальную машину для привязки к этим данным в вашем представлении.

Смежные вопросы