Подтвердить что ты не робот

В чем недостаток DWR?

При использовании DWR в интрасети будут возникать такие недостатки, как проблемы с производительностью или безопасностью? Прямой веб-удаленный доступ - это инструмент, который использует запрос Ajax для связи с сервером из js файла.

4b9b3361

Ответ 1

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

Позвольте мне объяснить. Когда ваша веб-страница поддерживает AJAX, ваши клиенты в конечном итоге будут создавать больше HTTP-запросов для (например) заполнения формы, регенерации фрагмента страницы и т.д. Я видел сценарии, в которых разработчики сходили с ума от AJAX, и сделали веб-страницу в основном динамический документ. Это приводит к большому опыту пользователя (если все сделано хорошо), но каждый запрос приводит к удару сервера, что приводит к проблемам с масштабируемостью и задержкой.

Примечание. Это не относится к DWR, но является проблемой AJAX. Я использовал DWR, и он работает хорошо. К сожалению, я обнаружил, что он работает так хорошо, и так легко, что все становится кандидатом на удаленный доступ, и вы можете получить огромное количество небольших запросов.

Ответ 2

Я работал над проектом с DWR - действительно приятным инструментом.

Я не уверен в скорости развития. Они опубликовали в журнале разработки, что они работают над тем, чтобы получить 3.0 в дверь, но последний стабильный релиз - 2.0 - вышел в летом 2006 года. Это немного беспокоит взятый с точки зрения поддержки - исправления ошибок особенно.

Ответ 3

Основная проблема, с которой я столкнулся, пытается выполнить script тест нагрузки в системе, где основная часть работы выполняется с помощью вызовов DWR. Формат вызовов трудно реплицировать по сравнению с просто ответом на кучу URL-адресов с изменяющимися параметрами.

Тем не менее DWR - отличная инфраструктура и делает реализацию Javascript → Java RPC довольно простой.

Ответ 4

Одна из функций, отсутствующих в текущем DWR 3.x, которую должен соблюдать любой пользователь, заключается в том, что когда экземпляр bean имеет свойства значения NULL, эти свойства будут все еще введены в JSON, и эти избыточные данные DO влияют производительность.

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

Подробности проблемы: http://dwr.2114559.n2.nabble.com/Creating-Custom-bean-converter-td6178318.html

Ответ 5

DWR - отличный инструмент, когда на вашем сайте много вызовов ajax.

Каждая страница, которая вызывает вызовы dwr rpc, должна включать:

a) файл интерфейса, соответствующий выполненным вызовам. а также b) файл js, связанный с dwr, который содержит код двигателя dwr, который делает эти вызовы возможными. например. <script src="/dwr/engine.js" ></script>

один метод, который часто используется при оптимизации веб-приложений, заключается в том, чтобы максимально использовать кеш браузера, когда ресурс (например, файл js) не изменился на сервере.

engine.js - это то, что никогда не изменится, если вы не обновите свой dwr до более новой версии. Но по умолчанию engine.js не является статическим файлом, обслуживаемым вашим веб-сервером. его в комплекте как часть инструмента dwr itsef и обслуживается контроллером dwr/servlet.this не помогает кэшированию на стороне клиента.

Таким образом, полезно сохранить engine.js под корнем документа вашего веб-сервера и позволить веб-серверу обслуживать его как статический файл.

Ответ 6

Самое большое различие между другими решениями для передачи объектов (маршалинг) - это ссылки на объекты.

Например, если вы используете его для переноса дерева:

А

| -B

| -С

в списке {A, B, C}:

B.parent = A C.parent = A

тогда A - тот же объект в Javascrit!

С плохой стороны, если у вас есть сложные структуры с круговыми зависимостями и множеством объектов: A < -B, B < -C, C < -B, C <.A,... он может быть поврежден.

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