是否已经值得为Derby.js或Meteor提供一个用于生产认证的应用程序?

时间:2014-09-29 22:58:33

标签: javascript node.js mongodb meteor derbyjs

我开始阅读有关Derby.jsMeteor的内容,对我正在开展的项目进行一些研究。它使用了大量实时功能,因此它们看起来都很方便。但是我有一些主要的担忧,我想知道在这个时候使用它们是否合理。

  1. 他们还准备好生产吗?或者还有重大的安全问题吗?
  2. 他们现在支持会话和身份验证吗?
  3. 我是否正确的假设是,依靠可以完成大量工作的框架,您可以更轻松地处理简单的事情,但是如果它变得更复杂则会更加困难?
  4. 我是否正确地假设,当我使用Express + Socket.io(或express.io)并且我只需要投入更多时间时,我可以实现完全相同的效果(从用户体验的角度来看) /工作?
  5. 目前我更倾向于Express + Socket.io,并认为Derby和Meteor有点大肆宣传。你觉得怎么样?

    为了更好地了解我的计划:

    • 需要用户身份验证
    • 需要复杂路由
    • SEO是一个问题
    • 使用Elasticsearch进行全文搜索
    • DB可能是MongoDB
    • 对象之间的复杂关系
    • 实时更新(Socket.io)
    • 安全是一个问题
    • 性能和可扩展性是个问题。

    谢谢!

3 个答案:

答案 0 :(得分:20)

我可以回答 meteor

的问题
  1. 即可。我们中有许多人正在为创收公司生产流星。

  2. 即可。自2012年10月以来,Meteor已经建立了accounts系统。

  3. 系统为您做的越多,操纵底层机制就越困难。我发现流星达到了合理的平衡。

  4. 这个假设是正确的。您还可以实现自己的Web浏览器来可视化HTTP,但我发现使用chrome更容易。

  5. 其他要求

    • 用户身份验证:是,请参阅上文。

    • 复杂路由:是的,请参阅iron-routerflow-router

    • SEO:是(?),请参阅spiderablessr以及this post

    • Elasticsearch:是的,(独立于您的框架选择)。 Meteor没有ES后端,但您当然可以通过node.js模块或直接通过HTTP与ES数据存储区通信。

    • MongoDB:是的,那是流星的默认(也是官方)数据库。

    • 复杂关系:是的,(独立于您的框架选择)。

    • 实时更新:是的,这就是流星的工作原理。

    • 安全问题:是的,Emily Stark让您满意!另请参阅this post上的discover metetor blog

    • 性能和可扩展性:使用oplog-tailing并使用kadira监控您的应用。

答案 1 :(得分:15)

有Meteor答案, Derby 也应该有:

  1. 是的,从0.6版开始,Derby足够稳定,并且有一些网站在生产中使用它,例如:Lever

  2. 是的,有一些auth模块,例如:derby-login使用passport

  3. 是的,但更模块化的框架(由更换部件组成)并且遵循惯例(npm,Express等)越多,您的感受就越少。

  4. 是和否。例如,如果你认真对待实时,那么最好有一些冲突解决机制(OT或CRDT或其他),并且实现一个并不简单。顺便说一句,Meteor没有,它使用LWW策略。

  5. 其他要求

    • 用户身份验证:是的,有一些模块。

    • 复杂路由:是的,同构的类似Express的路由器。

    • SEO:是的,内置同构(客户端和服务器)模板引擎。用于服务器上的第一个请求呈现的Html,用于在客户端上呈现的后续URL更改。

    • Elasticsearch:是的,当然。这不是框架问题。

    • MongoDB:是的,有适配器,这是目前最好的选择。

    • 复杂关系:是的,不是框架问题。

    • 实时更新:是的,加上OT。

    • 安全是一个问题:是的。从服务器的角度来看,Derby就是Express。要保护所有这些实时通信,请使用一些访问控制模块,例如:share-access

    • 性能和可扩展性:是的,我没有测试,但理论上Derby在缩放时应该比Meteor更高效。有一个kind of confirmation

    Meteor怎么样,我在Derby之前使用它。它有很好的文档,教程,支持和营销。在五分钟内引导一个小应用程序是件好事。理解这样的概念是很好的:客户端上的db,同构代码,实时等等。但它非常单一且不灵活。它实现实时的方式非常简单,但缺乏冲突解决方案并且存在性能问题。它不能以任何合理的方式用于离线。大多数德比开发者来自Meteor。

    尝试两者并做出选择。祝你好运!

答案 2 :(得分:3)

我同意@David Weldon的几乎所有答案,只需要考虑一些事项:复杂的关系和可扩展性。

当你说对象之间的复杂关系时,我想知道MongoDB是否适合你。由于所有数据都存储在文档中,Collections之间的关系越少越好。

关于可伸缩性,如上所述,如果你有一些相当“关系”的集合(MANY-TO-MANY等),你可能会遇到严重的可扩展性问题(学到的经验教训)。

如果你真的这样做,你应该等到Meteor正式支持其他RDBMS。