Приложение для браузера в средах с высокой задержкой и низкой пропускной способностью - PullRequest
1 голос
/ 02 ноября 2008

У нас есть типичное бизнес-приложение с клиентом Winforms, похожим на Outlook, с веб-сервисами asmx. Мы хотели бы сделать часть функций доступными через нашу интрасеть, но новые пользователи, которых мы должны охватить, - все они - находятся в развивающихся странах с полосой пропускания коммутируемого типа и большой задержкой. И все они используют IE 6.

Таким образом, нам нужно сохранить количество циклов и количество передаваемых данных до абсолютного минимума. Мы думаем о сайте с одним URL, со всем взаимодействием с нашим существующим бэкэндом через вызовы AJAX. В основном это толстый клиент, который поддерживает много состояний и лишь изредка делает http-запрос на изменение или получение данных. Типичное веб-приложение, которое выдает два десятка запросов на каждый клик пользователя, нам не подойдет.

Этот подход звучит разумно? Если бы вы столкнулись с такой проблемой, какие фреймворки или библиотеки javascript вы бы порекомендовали? Мы создавали прототипы с TIBCO GI, но манипулирование XML было болезненным, и мы не смогли получить нужную нам производительность в браузере. Далее мы могли бы взглянуть на YUI, возможно, с нашим существующим обслуживанием asmx JSON.

Ценю любые предложения.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2008

Несколько вещей, о которых я мог подумать

Туда и обратно

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

Транспорт

Включить сжатие на веб-сервере.

API

Используйте API REST там, где это возможно, поскольку некоторые статические данные могут кэшироваться посредником, а их размер меньше, чем в форме сериализованной формы запроса в теле

Кодирование

JSON намного лучше, чем XML для браузера, и его размер меньше, чем XML.

Framework

Вы также можете взглянуть на JQuery или прототип Недавний GWT также отлично подходит для построения веб-приложений с помощью AJAX, он переводит Java-код в Javascript с функциями интернационализации и т. Д. Он также значительно упрощает отладку.

Для веб-службы стоит еще раз взглянуть на службу WCF RESTful, вы должны иметь возможность использовать существующую бизнес-логику при переходе от среды к WCF.

1 голос
/ 02 ноября 2008

Вот несколько идей:

  • Если MSIE поддерживает это, используйте некоторый способ помещения статических (неизменяемых) файлов в один архивный файл - Mozilla поддерживает использование файла .jar для этой цели.
  • Если вы не можете поместить все свои ресурсы в файл .jar или аналогичный, предварительно загрузите их, используя Javascript, если это поможет.
  • Убедитесь, что статические файлы имеют соответствующие заголовки Last-updated: и Expires: для кэширования на стороне клиента. Убедитесь, что заголовки «без кэширования» и т. Д. Не отображаются на статических ресурсах.
  • Если вы используете XHR-запросы для получения информации с помощью метода GET (что является хорошей идеей), убедитесь, что THOSE-запросы имеют соответствующие Last-updated: и Expires: заголовки - AJAX-запросы могут также обслуживаться из клиентского кэша. .
  • Если вы используете HTTPS, в частности, включите поддержку активности HTTP и используйте длительный тайм-аут - это потребует больше ресурсов на сервере, но меньше на клиенте для установления соединений и выполнения рукопожатий HTTPS
  • Не используйте HTTPS, если вам не нужно.
1 голос
/ 02 ноября 2008

Как будет сказано в CodeMelt, речь пойдет о сокращении поездок в оба конца. Вот еще несколько способов:

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

Если у вас много графики, посмотрите, как использовать css sprites , чтобы сократить круговые поездки для получения изображений.

Денормализовать. Логическим способом построения приложения может быть несколько разных вызовов Ajax для получения другого состояния с сервера. Объедините их, чтобы получить большую структуру JSON.

Используйте YSlow и Firebug, чтобы увидеть, что на самом деле делает ваша страница.

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