2017-01-17 16 views
0

В моем приложении у меня есть представление и ему нужны данные из нескольких моделей данных на стороне сервера.Дизайн модели ViewModel - должен ли он быть на стороне сервера или на стороне клиента?

У нас есть два варианта.

  1. Позвоните в один WebSevice один раз и получите объект класса ViewModel со стороны сервера и привяжите его к представлению.

  2. Вызовите несколько WebServices и получите разные классы модели на стороне сервера и создайте новый класс класса модели на стороне клиента и привяжите его к представлению.

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

ответ

0

Если у вас есть сомнения, рассмотрите ваш UX.

Одной из наиболее неприятных вещей с точки зрения пользователя является ожидание ответа вашего приложения после того, как они что-то нажали.

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

В интересах минимизации времени, необходимого для загрузки контента, поддерживать количество вызовов между вашим клиентом и API-интерфейсом сервера до абсолютного минимума. В общем, чем меньше звонков, тем лучше. Это сильно зависит от подхода «единого запроса, единого ViewModel».

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

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

И, наконец, рассмотрим разницу между простым легким «немым» клиентом, который отвечает только за презентацию и интерактивность пользователя, а не от тяжелого клиентского приложения.

  • Создав свой сервер для создания ViewModel и выполняя всю тяжелую работу, вы можете избежать бизнес-логики на своем клиенте; поэтому поддерживайте чистое разделение между вашим бизнесом и слоями приложений.

  • С другой стороны, если вам требуются многочисленные вызовы API-сервера, то, скорее всего, вам понадобится намного больше сложностей для вашего клиента, чтобы создать модель View Model, что может привести к размыванию линии между вашим приложением и вашим бизнес-слоем ,

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

+0

Я был за то, что у вас «тонкий» клиент и вытолкнул всю «бизнес-логику» на серверную сторону. Ваш ответ также дает четкое объяснение этому. Спасибо. – Adam

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

  • Нет связанных вопросов^_^