10

我开始阅读有关Derby.jsMeteor的文章,以对我正在从事的项目进行一些研究。它使用了很多实时功能,所以它们看起来都很方便。但我有一些主要问题,想知道此时使用它们是否有意义。

  1. 他们还准备好生产吗?还是存在重大的安全问题?
  2. 他们现在是否支持会话和身份验证?
  3. 我的假设是否正确,即通过依赖可以完成大量工作的框架,您可能会使简单的事情变得更容易,但如果变得更复杂一些,则会变得更加困难?
  4. 我的假设是否正确,当我只使用 Express + Socket.io(或 express.io)并且我只需要投入更多时间/工作时,我可以达到完全相同的效果(从用户体验的角度来看)?

目前我更喜欢 Express + Socket.io 并认为 Derby 和 Meteor 有点被炒作了。你怎么看?

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

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

谢谢!

4

3 回答 3

20

我可以回答你关于流星的问题:

  1. 的。我们中有很多人在为创收公司生产流星。

  2. 的。Meteor 自 2012 年 10 月以来就拥有一个帐户系统。

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

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

其他需求

  • 用户身份验证:是的,见上文。

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

  • SEO:是的(?),请参阅spiderablessr以及这篇文章

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

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

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

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

  • 安全是一个问题:是的,Emily Stark为您提供保障!另请参阅发现流星博客上的这篇文章。

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

于 2014-09-29T23:58:22.130 回答
15

有流星的答案,德比也应该有:

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

  2. 是的,有一些身份验证模块,例如:使用护照的 derby-login

  3. 是的,但是越是模块化的框架(由替换部件组成),它遵循的约定越多(npm、Express 等),你感觉它就越少。

  4. 是和不是。例如,如果您对实时性很认真,最好有一些冲突解决机制(OT 或 CRDT 或其他),并且实施一个并非易事。顺便说一句,Meteor 没有,它使用 LWW 策略。

其他需求

  • 用户认证:是的,有一些模块。

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

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

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

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

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

  • 实时更新:是的,使用 OT。

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

  • 性能和可扩展性:是的,我没有测试,但理论上 Derby 在扩展时应该比 Meteor 性能更高。有一种确认

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

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

于 2014-10-01T15:49:46.357 回答
3

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

当您说对象之间的复杂关系时,我想知道 MongoDB 是否是您的正确选择。由于所有数据都存储在文档中,因此之间的关系Collections越少越好。

关于可伸缩性,如上所述,如果您有一些相当“关系”的集合(MANY-TO-MANY 等),您将来可能会遇到严重的可伸缩性问题(吸取教训)。

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

于 2014-10-01T12:40:49.770 回答