这很冗长,如果不符合当地习俗,我道歉。
我正在为Windows应用程序编写一个Web替代品,用于在消防站之间移动消防员以满足技能要求,进入病假,从服务中撤出救火车等等。 Rails是理想的后端,但我很快意识到我需要一个客户端框架并选择Backbone.js。
一次只有一个用户,所以我不必考虑让客户保持同步。
我已经实现了大部分应用程序并且运行良好。不过,我一直在避免面临重大缺点:服务器端验证。我有各种客户端程序,确保无法通过接口进行无效更新;例如,用户不能将今天不工作的人移动到另一个站。但没有什么可以阻止恶意用户在UI之外创建记录并将其保存到服务器,因此需要进行服务器端验证。
客户端加载接收所有今天的相关记录并处理它们。创建新记录时,会将其发送到服务器,并在客户端成功保存后进行处理。
确定今天谁在工作的过程很复杂:某人可能被安排工作,但已经去度假,但随后被召入,但后来被送回家生病了。在Ruby / Rails中解开服务器上的所有这些( on each load ?!)似乎是一个不幸的业务逻辑重复。在特定情况下,它还会有很大的开销,包括根据车站短缺和工会规则计算谁将被临时提升到更高等级,这可能意味着在执行每项促销时,一遍又一遍地重新加载和处理几乎所有的数据。
所以,我想,我拥有构建对象模型并限制可以创建哪些模型的所有Backbone基础架构,为什么不在服务器端使用它呢?
这是我的不确定性:
我应该放弃Rails并在服务器上使用Node.js或其他一些运行Backbone的方法吗?
或者我可以在Rails旁边运行Node.js吗?当用户打开应用程序时,我可以将相同的数据提供给浏览器和节点,并且Rails将检查服务器端的Backbone,以确保建议的新对象在保存并返回浏览器之前是有效的。
一家工厂就是Rails在这个应用程序中的根深蒂固。用于创建/删除更改的服务器端Ruby没有那么多,但是我创建了一种适配层来加载数据以补偿遗留数据库模型。 Rails主要只提供JSON,CSS,Javascript和模板资产。我确实有很多Cucumber功能,但是可能只需要更新数据创建功能吗?
呼!所以,我正在寻求保证:在服务器上运行Rails和Node,并使用某种in this answer是否合理(如建议的inter-process communication)?或者Rails的实用性已经缩小了很多( 几乎是单页应用程序,如提到in that answer),我应该完全摆脱它并遭受一些重写到Node环境?
感谢阅读。
答案 0 :(得分:0)
听起来你对concurrency的担心并不像能够做两个平台完全能够执行的推送数据那么多。如果您现在对Ruby代码进行了大量投资,并且没有人抱怨它的使用,那么可能是什么问题?如果你只是想使用Node来推送和通过堆栈使用javascript的奇点,那么将代码移到它上面可能是值得的。从您的评论中,我真的觉得更多关于您感兴趣的内容,但您必须支持所选择的语言。如果你是团队中唯一一个,那么很容易就是因为它很有趣而只是滑入重构节点。回到谁更抱怨你,你或客户。总结一下:Node允许您在代码库中使用单一语言,但您必须担心服务器上的javascript存在什么陷阱。 Ruby on Rails很不错,因为你有能力快速生成功能并将它们原型化。