2011-03-01 33 views
7

經過1.5年以上的Ruby和Rails編程,我終於開始研究Scala和Lift中的一個新項目。基本上我試圖編寫一個API來訪問一個龐大的數據庫(數百萬行)的信息。 Lift應該幫助我編寫這個項目的前端(API部分)。但是現在,這也涉及到一個模塊,它將從壓縮的ZIP XML文件中讀取數據,最初用行填充數據庫。這個模塊需要在3個月內運行一次。如何在Lift項目中組織Scala代碼?

我應該在哪裏放置這個模塊代碼?或者說,我應該如何組織我的Lift和Scala代碼?後臺進程在哪裏?任何在這方面的指針都是受歡迎的。

+0

「龐大的數據庫(百萬行)」?我時不時地看到類似的陳述,並且喜歡迂迴地指出,僅僅作爲參考,「數百萬行」不是一個龐大的數據庫(除非每行/對象大於GB)。我正在使用商業智能數據庫,其中單個表具有數百行數百行,工作數據集大約爲50GB。這仍然不是一個「龐大」的數據庫。元數據本身就是數以百萬計的「行」。 – nicerobot 2011-03-01 18:48:21

+2

我認爲OP使用的是皇室'巨大',而你指的是'巨大'的指標。 – 2011-03-02 02:22:13

回答

5

我有點不確定,如果這是你以後,但我使用SBT(http ://code.google.com/p/simple-build-tool/)。它繪製了一個默認的項目結構。您應該特別關注子項目(http://code.google.com/p/simple-build-tool/wiki/SubProjects)。

對於計劃進程,您可以使用actor和ActorPing定期重新啓動進程。對於如3個月這樣長的時間間隔,您可以通過觸摸文件並檢查應用程序重新啓動時的日期來跟蹤上次調用。 ActorPing需要在應用程序啓動時啓動;這可以在電梯啓動中完成。如果您需要模塊化更多,您可以創建一個Servlet來啓動Servlet init上的ActorPing。

+0

嗯,我知道SBT,但子項目是很好看的東西。關於背景項目的解釋也很有幫助。謝謝。 – 2011-03-01 18:21:57

2

Lift遵循(至少我使用的版本)一個標準的Maven 2結構,所以沒有什麼特別的。只需在src文件夾中添加代碼即可。要創建的包將取決於您的設計/喜好,我們不能真正幫助你:)

+0

這再次有幫助。所以基本上在Lift中似乎沒有任何傳統的做事方式。我不知道這是好還是壞。 – 2011-03-01 18:24:24

1

使用SBT作爲構建通常用於以下項目的結構要求「標準」電梯工程:

project 
src 
    main 
    scala 
     bootstrap 
     liftweb 
      Boot.scala 
     project-name 
     comet 
     lib 
     model 
     snippet 
     view 
    resources 
    webapp 
     WEB-INF/web.xml 
     index.html 
    test 
    resources 
    scala 
     RunWebApp.scala 

如果您正在使用的電梯映射ORM,你一般把你的模型在src /主/ scala/project-name/model目錄。同樣,你的CometActor應該放在src/main/scala/project-name/comet中。您編寫的任何自定義片段應位於項目名稱下的視圖目錄中的src/main/scala/project-name/snippet和任何自定義視圖組件中。所有與啓動應用程序和建立數據庫連接器等相關的代碼應該放在src/main/scala/bootstrap/liftweb/Boot.scala中。結構的其餘部分就像之前回答說的那樣,它遵循一般的Maven 2結構。

這只是由默認Lift應用程序提供的一般結構。唯一需要的是bootstrap.liftweb.Boot.scala文件,因爲Lift Servlet在引導期間查找該類。