我正在考虑开发一个在线作业提交系统,学生可以上传他们的文本文档,这些文档可以被某人(教师/教授)查看,并具有查看权限。此人可以注释/标记/突出显示此文档,然后可以通过此文档进行进一步审核。审核完成后,本文档将以适当的反馈发回给学生。
这里有很多动人的作品,我正在努力想弄清楚从哪里开始。我正在使用这个项目作为练习来设计一个可扩展/安全/快速的Web应用程序,使用完全开源的工具,支持像用户体验的桌面,但除了UI框架(Vaadin)和语言(Java),我有一点点找出在这方面取得一些进展所需的路线图有点麻烦。
如果SO大师可以通过这个指导我或者向我提供正确方向的推动,那将是很棒的。
编辑:感谢您的回复。这是响应中描述的标准三层体系结构。我需要大规模的可扩展性,因为应用程序将主要以文档为中心,我可能不得不在以后改进搜索,我想避开RDBMS。由于我们有大量用户在任何给定时间(简称* .txt)文件发布文档,我需要某种消息队列来处理这种大量信息涌入。必须有某种快速转换层,它采用所有格式的文档,并以适合注释和标记的格式显示....然后列表继续。从Domain模型开始向下移动将是理想的,但我有点怀疑。
答案 0 :(得分:1)
我希望这可以帮助您开始使用。
答案 1 :(得分:1)
不是真正的“完整答案”,但希望有些值得深思。
我正在使用这个项目作为练习,使用完全开源的工具来设计可扩展/安全/快速的Web应用程序......
这是一件好事 - 所以我的问题是为什么要担心这个架构?我承认,有些人认为自己是建筑的倡导者,这有点奇怪,但“学习架构”和学习新技术都需要。也许你只想先用一个加速,然后再对付另一个?
架构,设计和构建“可扩展/安全/快速”的系统并非易事。在“真实世界”的业务驱动案例中,您将拥有适合的系统上下文和非功能需求:这些可能表明不同的技术堆栈。不同的关键驱动因素会对您处理事物的方式以及做出的决策产生巨大影响 - 当然,架构将围绕这些驱动因素构建。
修改强>
我从对你更重要的事情开始;然后当我开始讨论“其他”主题时,我会不断检查我所学到的东西/我的假设。
根据这两个主题,可能存在一些“协同作用”,这表明采用了不同的方法。我的一部分想要建议做足够好的基础掌握,然后将另一个达到类似的水平 - 然后继续前进。这样你就会更加一致。
我的另一部分说 - 只做最有趣的事情!
在向前推进或从工具不可知的角度获得蓝图之前,我是否应该探测给定技术堆栈的深度?
首先,你肯定希望得到一个广泛而浅薄的观点;如果它们对您特别重要,可以更详细地介绍一些特定领域。
或者由于技术限制,我的蓝图会发生变化吗?
通过这种方式,我假设你的意思是:如果你发现“给定技术以这种方式运作”以及它是如何工作的,那么它会形成你所期望的 - 那么这会影响蓝图吗?
它可以做到 - 这就是为什么广泛而浅见的相关技术应该可以帮助你避免最坏/最明显的错误。我还假设您有足够的经验来了解当您开始这样做时您正在看什么 - 您可以在进行设计之前识别出需要更详细研究的区域。
在高层次上,您所要做的就是确保您不会在路径上进一步限制选项。