0

我正在考虑开发一个在线作业提交系统,学生可以上传他们的文本文件,这些文件可以被具有查看权限的人(教师/教授)查看。此人可以注释/标记/突出显示此文档,然后可以传递此文档以供进一步审查。审核完成后,该文档将连同适当的反馈发送回学生。

这里有很多动人的部分,我很难弄清楚从哪里开始。我正在使用这个项目作为练习,使用完全开源的工具来设计一个可扩展/安全/快速的 Web 应用程序,这些工具支持类似桌面的用户体验,但除了 UI 框架(Vaadin)和语言(Java)之外,我还有一点找出在这方面取得一些进展所需的路线图有点麻烦。

如果 SO 专家能够指导我完成此任务或为我提供正确方向的推动,那就太好了。

编辑:感谢您的回复。这是响应中描述的标准三层架构。我需要大规模的可扩展性,并且由于应用程序将主要以文档为中心,并且我可能需要在以后改进搜索,所以我想避开 RDBMS。由于我们暂时有大量用户在任何给定时间发布他们的文档(比如说 *.txt)文件,我需要某种消息队列来处理这些大量信息涌入。必须有某种快速转换层,它可以获取所有格式的文档,并以适合注释和标记的格式显示它......而且列表还在继续。从域模型开始向下移动是理想的,但我有点怀疑。

4

2 回答 2

1

我是一个Java人。我将如何解决这个问题,

  1. 找出数据模型。系统将使用哪些对象。
  2. 基于该设计您的数据库。您可以使用 Ibatis 或 Hibernate 等 ORM 框架(Ibatis 有一个代码生成器,可以生成几乎所有的 DAO 来访问表。它为您提供了 CRUD 方法,您可以在其之上添加)。
  3. 一旦你完成了这些,你就可以开始设计你的服务层了。将 DAO 直接暴露给控制器(MVC 模式)并不是一个好习惯。这是您的业务逻辑应该进入的地方。
  4. 选择可用的 Web 框架之一。最流行的 Java Web 框架是 Spring MVC。你也可以试试 Google Guice。
  5. 最后一步是设计你的前端。我认为您的项目将包含很多 javascript。所以看看JQueryEXT JS

我希望这可以帮助您入门。

于 2010-12-07T16:16:00.143 回答
1

不是真正的“完整答案”,但希望有一些值得深思的地方。

我正在使用这个项目作为练习,使用完全开源的工具设计一个可扩展/安全/快速的 Web 应用程序......

这是一件很棒的事情——所以我的问题是为什么要担心架构?我承认对于一个自认为是建筑倡导者的人来说这有点奇怪,但是“学习建筑”和学习新技术都可能要求很高。也许您只是想先了解一个,然后再解决另一个?

架构、设计和构建“可扩展/安全/快速”的系统并非易事。在“真实世界”的业务驱动案例中,您将需要适应系统上下文和需要满足的非功能性需求:这些可能暗示了不同的技术堆栈。不同的关键驱动因素将对您处理事情的方式和做出的决定产生巨大影响——当然,架构将围绕这一点构建。

编辑:

我会从对你来说更重要的事情开始;然后,当我开始讨论“其他”主题时,我会不断检查我学到了什么/我的假设。

根据这两个主题,可能会有一些“协同作用”,这表明了不同的方法。我的一部分想建议在一个上做足够的事情以获得良好的基本掌握,然后将另一个提升到类似的水平 - 然后继续前进。这样你就更一致了。

我的另一部分说 - 只做最有趣的事情!

在继续前进之前,我应该深入了解给定技术堆栈的深度,还是从工具不可知论的角度来获得蓝图?

首先,您肯定希望获得一个广泛而肤浅的观点;如果它们对您特别重要,可能会更详细地介绍一些特定领域。

还是我的蓝图会因为技术限制而改变?

我假设您的意思是:如果您发现“给定技术以这种方式工作”以及它的工作方式与您的预期不同 - 那么这会影响蓝图吗?

它可以做到——这就是为什么对相关技术的广泛而肤浅的看法应该可以帮助您避免最严重/最明显的错误错误。我还假设您有足够的整体经验来了解当您开始执行此操作时正在查看的内容 - 您可以在进行设计之前识别出需要更详细研究的领域。

从高层次上讲,您要做的就是确保您不会进一步限制选项。

于 2010-12-07T22:50:03.253 回答