【问题标题】:Is it sensible to run Backbone on both server (Node.js and Rails) and client for complex validations?在服务器(Node.js 和 Rails)和客户端上运行 Backbone 进行复杂验证是否明智?
【发布时间】:2012-05-21 20:34:25
【问题描述】:

这很冗长,如果不符合当地习俗,我深表歉意。

我正在为 Windows 应用程序编写一个 Web 替代程序,该应用程序用于在消防站之间移动消防员以满足技能要求、进入病假、从服务中撤出救火车等等。 Rails 是理想的后端,但我很快意识到我需要一个客户端框架并选择了 Backbone.js。

一次只有一个用户使用它,所以我不必考虑让客户端保持同步。

我已经实现了大部分应用程序并且运行良好。不过,我一直在避免面临一个重大缺陷:服务器端验证。我有各种客户端程序,确保无法通过界面进行无效更新;例如,用户不能将今天不工作的人转移到另一个站点。但是没有什么可以阻止恶意用户在 UI 之外创建记录并将其保存到服务器,因此需要进行服务器端验证。

客户端加载接收所有今天的相关记录并处理它们。当一条新记录被创建时,它会被发送到服务器,如果保存成功则在客户端进行处理。

确定今天谁在工作的过程很复杂:某人可能被安排工作,但已经去度假,然后被叫来,然后被送回家生病。在 Ruby/Rails 中解开服务器上的所有这些(每次加载?!)似乎是业务逻辑的不幸重复。在涉及根据车站短缺和工会规则计算谁将被临时提升到更高级别的特定情况下,它也会产生大量开销,这可能意味着在每次提升执行时一遍又一遍地重新加载和处理几乎所有今天的数据。

所以,我想,我拥有构建对象模型并限制可以创建哪些模型的所有 Backbone 基础设施,为什么不在服务器端也使用它呢?

这是我的不确定性:

我应该放弃 Rails 并只使用 Node.js 或其他在服务器上运行 Backbone 的方式吗?

或者我可以在 Rails 旁边运行 Node.js 吗?当用户打开应用程序时,我可以将相同的数据提供给浏览器和 Node,Rails 会检查服务器端 Backbone,以确保提议的新对象在保存并将其返回给浏览器之前是有效的。

一个工厂就是 Rails 在这个应用程序中的根深蒂固。用于创建/删除更改的服务器端 Ruby 并不多,但我制作了一种适应层来加载数据以补偿遗留数据库模型。 Rails 主要只提供 JSON、CSS、Javascript 和模板资源。我确实有很多 Cucumber 功能,但也许只有数据创建功能需要更新?

哇!所以,我正在寻求安慰:像建议的in this answer 那样,在服务器上同时运行 Rails 和 Node 并使用某种 inter-process communication 是否合理?还是说 Rails 的用处缩水了这么多(它几乎是一个像 in that answer 提到的单页应用程序)以至于我应该完全摆脱它并在 Node 环境中进行一些重写? p>

感谢阅读。

【问题讨论】:

    标签: ruby-on-rails node.js backbone.js


    【解决方案1】:

    听起来您并不担心concurrency 是否能够推送数据,这两个平台都完全有能力执行。如果您现在对 Ruby 代码进行了大量投资,并且没有人抱怨它的使用,那么可能会担心什么?如果您只想使用 Node 进行推送和通过堆栈使用 javascript 的奇异性,那么将代码移到它可能是值得的。从您的 cmets 来看,我真的觉得它更多的是关于您感兴趣的内容,但您必须支持选择的语言。如果您是团队中唯一的人,那么仅仅因为它很有趣就很容易陷入对节点的重构。只是回到抱怨更多的人,你还是客户。总结一下:Node 让您在代码库中转向单一语言,但您必须担心服务器上的 javascript 当前存在哪些陷阱。 Ruby on Rails 很好,因为您拥有快速生成功能并将其原型化的所有能力。

    【讨论】:

    • 感谢您的回答。我对选择在 Rails 旁边运行 Node 感到有点不安全,因为它似乎没有得到广泛的讨论。你的建议是关于有趣的事情有帮助。我想我应该离开 Rails 部分,因为我还有其他事情要做。但是你能告诉我你所说的“服务器上的 javascript [has] 陷阱”是什么意思吗?
    • 我应该说得更好,Ruby 在服务器上也存在性能问题。 stackoverflow.com/questions/3629784/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2017-05-29
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多