2011-03-01 64 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在引导期间查找该类。