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

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

12 голосов
/ 17 июня 2009

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

Ответы [ 6 ]

9 голосов
/ 17 июня 2009

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

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

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

3 голосов
/ 17 июня 2009

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

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

2 голосов
/ 17 июня 2009

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

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

1 голос
/ 05 апреля 2011

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

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

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

0 голосов
/ 08 февраля 2014

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

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

A

| -B

| -С

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

B.parent = A C.parent = A

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

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

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

0 голосов
/ 17 июня 2009

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

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

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

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

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

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

...