2016-08-02 2 views
0

В настоящее время работает над веб-приложением. Одна конкретная область/страница этого приложения выполняет определенное время выполнения операций с БД. Нынешняя структура этой страницы:Как преобразовать метод в async - Spring, DWR?

1) DWR call from the front end to the backend 
2) Front end waits for the backend to return data 
3) When data is returned, the callback function is executed in the 
    front end and data is displayed to user in the format needed. 

Во время шага # 2, бэкенд занимает много времени, чтобы обработать и отправить данные. За все это время приложение непригодно.

Изменение, которое должно быть сделано это:

1) Let the user use the application after sending the request in step #1 
2) Front end will be populated with data after the backend processes the data and 
    send the details back. 
3) When user revisits the page, information from previous request is available. 

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

ответ

0

Главный вопрос: какую технологию вы используете для страниц, и сколько требуется «ожидания».

  1. Самый простой случай, если браузер может держать открытым соединение во время ожидания: это происходит, когда ждать не слишком долго, и пользователь остается на той же странице. В этом случае сервер предоставляет REST, не обращая внимания на то, кто его потребляет. Большая часть работы будет на стороне клиента, которая должна выполнять асинхронный ajax - если это DWR see here, если это весна, то она не вмешивается на стороне клиента, и вы можете использовать любые javascript-помощники, которые вам нравятся, например. JQuery

  2. Это становится более сложным, если ожидание длинное или если пользователь должен получить уведомление «push», даже если он перешел на другую страницу в то же время. В этом случае я бы предложил посмотреть на websockets or server-sent events или механизмы длительного опроса (google it - есть много примеров и продуктов, некоторые бесплатные, некоторые дорогостоящие). В любом случае, будьте готовы к некоторой кривой обучения здесь.

  3. Что касается требований 3 (быстрый способ просмотра данных при повторном посещении страницы), у меня нет никаких магических решений, просто хорошее старое кэширование ... ваш кеш может располагаться в разных местах - от клиент к серверу через некоторый прокси-сервер кэширования посередине. Очевидно, что нужно рассмотреть политику обновления кэша - проще всего, если вы можете жить с теми же данными «за X минут/часов», сложный случай, если вам нужно обновить конкретные бизнес-действия.

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