【发布时间】: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