При использовании DWR в интрасети будут возникать такие недостатки, как проблемы с производительностью или безопасностью? Прямой веб-удаленный доступ - это инструмент, который использует запрос Ajax для связи с сервером из js файла.
В чем недостаток DWR?
Ответ 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, чтобы нарисовать сложный график, и он отлично работает с хорошей производительностью.