2016-08-02 7 views
0

현재 웹 응용 프로그램에서 작업 중입니다. 이 응용 프로그램의 한 특정 영역/페이지는 DB 작업을 수행하는 특정 시간을 수행합니다. 이 페이지의 현재 구조는 다음과 같습니다.메서드를 비동기로 변환하는 방법 - 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를 누가 사용하고 있는지를 알지 못하도록 노출합니다. 대부분의 작업은 비동기 아약스를 수행해야하는 클라이언트 측에서 수행됩니다. DWR see here 인 경우에는 봄이면 클라이언트 측에서 간섭하지 않으며 원하는 자바 스크립트 도우미를 사용할 수 있습니다. JQuery

  2. 대기 시간이 길거나 그 동안 다른 페이지로 이동 한 경우에도 사용자가 '푸시'알림을 받아야하는 경우 더 복잡해집니다. 이 경우에는 websockets or server-sent events 또는 긴 폴링 메커니즘 (Google이 있음 - 많은 예제와 제품이 있음, 일부는 무료, 일부는 값 비싼)을 살펴볼 것을 제안합니다. 어쨌든, 여기서 약간의 학습 곡선을 준비하십시오.

  3. 요구 사항 3 (페이지를 다시 방문 할 때 데이터를 빠르게 볼 수 있음)에 관해서는 마술 솔루션이 없으며 오래된 캐싱 만 ... 캐시가 여러 위치에있을 수 있습니다. 중간에있는 일부 캐싱 프록시를 통해 클라이언트에서 서버로. 분명히 캐시 새로 고침 정책을 고려해야합니다. 가장 쉬운 경우는 "X 분/시간"동안 동일한 데이터로 살 수있는 경우입니다. 복잡한 경우는 특정 비즈니스 작업을 새로 고쳐야하는 경우입니다.