2014-02-08 36 views
0

我需要從不同的Web服務檢索結果的長列表,並在排序後顯示給用戶。到目前爲止,我已經收到了所有結果,並將它們放在一個名爲result class的類中。如何向用戶顯示長期的Web服務結果列表?

我不知道什麼是處理它們的有效方法。我應該把它們放在數據庫中,然後將它們展示給用戶,或者將它們保存在內存中(我想這不是一個好主意!)或者是否有其他可選方法?

User makes a search request 
Web service client requests to receive results from 
      first webservice put results into result class 
      second webservice put results into result class 
      third webservice put results into result class 
      ..... 
Sort the results based on their name 
Show the results to user. 

結果類

public class Result { 
    private long id; 
    private String name; 
    private String source; 
    private float code; 
    ..... 
} 

方案是像,每個用戶發送一個請求以查看學生的列表。 可以說,一個用戶想看到一個超過18歲的學生列表,系統發送請求到所有的網絡服務,以獲得超過18歲的學生列表,一旦收到所有信息系統將所有信息放在一起排序他們並展示給用戶。用戶可以根據每個學生的年齡,名字等進行搜索,數據需要實時進行,因爲學生的信息一直在所有服務器上都在變化。

+1

你爲什麼投票決定結束這個問題?讓我知道你的理由,而不是直接做! – J888

+0

這個問題不適合Stack Overflow的設計目的。您可能在另一個Stack Exchange站點上獲得更好的結果,可能是用戶體驗或代碼審查。這是問題的另一部分:不清楚您是想改善用戶體驗還是性能,否則您需要幫助的是什麼。堆棧溢出是針對具體解決方案的特定編程問題,這不是其中之一。 – Vitruvius

+0

@Saposhiente我看到了,我想我很清楚,我應該如何處理收到的數據,並將其保存在內存中或保存在數據庫中並從中檢索。由於我不確定哪種方法是最好的,我還沒有編碼。 – J888

回答

1

,你需要問自己的問題是:

多久後獲取的數據是數據相關的/我需要它?

  • 如果數據是相關小時/天/周/ ......那麼數據庫是 你應該把它。
  • 如果數據與數分鐘相關,則將其存儲在用戶會話(內存)中。
  • 如果發出請求,您將獲取數據(來自不同的Web服務),對該數據執行任何處理並在響應中返回輸出,但通常不會將數據保存在內存中。
    編輯:
    如果應該返回數據「實時」(無緩存),數據不應該在響應後存在內存中。

提示:
如果你想在內存中緩存數據,看看使用像http://ehcache.org/http://www.terracotta.org/
如果您決定將其保存在數據庫中,請保存數據本質到期的日期和時間,然後再清除過期時間過期的數據(您的應用程序,crontab或您決定使用的任何內容) 。

+0

實際上,數據將實時可用,因此用戶提出請求並需要接收最新的結果。因此,我需要向每個用戶請求的所有Web服務發出請求。 – J888

+0

除了最後一部分,您的答案的所有部分都是清晰的,即「您通常不會將數據保存在內存中」。我需要根據他們的要求向每個用戶顯示結果,因此每個請求和結果都會與其他結果不同。 – J888

+0

我編輯了第三點。我的意思是,發送迴應時應清除內存中的數據... – NeilA

相關問題