请教关于Web多人协作编辑平台的后台设计?
现在我们学生小团队需要开发一个基于Web的在线协作平台,主要是进行文档的协作编辑。大概的需求是这样的:
- 要求支持Markdown语法。
- 可以进行项目文档的管理。
- 分配人员进行文档某段的编辑。
- 多人同时编辑同一文档的不同段落。
- 对性能要求不是非常高。
- 有一定安全性要求。
- 有一定可扩展性(未来可考虑支持LaTeX公式编辑,嵌入媒体等)。
我们想法是前端主要使用双页式Markdown编辑页面(理想目标Cmd Markdown 编辑阅读器https://www.zybuluo.com/mdeditor),静态页面为主,主要以通过Ajax进行前后端交互。
服务端最初考虑是使用Node.js和Express框架进行后端开发(说明一下,应该部署会在UNIX/Linux系服务器,所以ASP可能不太行,之所以选择Node.js是因为了解Node.js对非阻塞IO效率较高,也想为了多深入掌握一门后台语言),采取服务端对前端传来Markdown解析然后发送HTML到前端,存储文档最初打算写入数据库。
现在主要的困惑是:
- 采用Node.js开发是否合适?实际这类应用(尤其是Google Doc,Office Online这种大型实际项目)主要是通过什么样的前后台设计?
- 如果只存储文档的话,采取文件存储+缓存服务器和采取数据库+缓存服务器那种比较合适?是否可以采取NoSQL?
- 文档存放在数据库的话,应该如何设计比较优?因为编辑时是分段分配任务,能否直接对文档分段存储再进行合并?
- 安全性方面,这种协作平台如何有效防止CSRF攻击?
- 是否有现成的开源类似项目参考(绝不是抄袭哦)?
本人也只刚学了一点Web入门,对这类业务的后台设计不是十分清楚,希望有专业人士指点一下,任何上述疑问或相关的回答都可以,十分感谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我推荐学习使用下Meteor
学习成本,比学习 Node.js + Express快多了
开发起来也不是一点点的快。
在github上2万多个星,超过这个星的,也没多少开源项目的
对于你们的需求:
1. 同时编辑:meteor是一个实时的框架,也就说,一个人编辑了一个地方,其他人的终端会同时变,而且是根本不用刷新浏览器的
2. 支持markdown:meteor里markdown的package - Markdown-to-HTML processor
3. Meteor是基于node.js + mongodb搭建起来的
4. Meteor可以很轻松的一键部署到linux系统
5. 没有直接和多人协同文档编辑相关的开源项目。不过你们可以感受下Meteor的一个开源项目 Telescope
6. 还有一个很特别的地方,通过简单的几个命令,就可以生成一个混合应用的app,同时支持ios和android
建议看一下这个开源库, 应该可以完美解决你的问题 https://github.com/ether/etherpad-lite
Meteor不错,不过数据库现在只支持mongodb。
另外可以看下firebase https://www.firebase.com/
用git吧,推荐一个go写的项目gogs,部署方便,一个2进制文件就ok
推荐看下TeaKKi https://teakki.com etherpad的实现机制