【问题标题】:Sinatra vs Rails for webservice用于 Web 服务的 Sinatra 与 Rails
【发布时间】:2017-01-23 23:08:56
【问题描述】:
我正在寻找编写一个网络服务。用户如何与此服务交互的一个简单示例是用户注册。用户可以点击该服务来创建一个帐户(如果他们是移动的)。另一方面,用户可以使用该服务登录(从移动应用程序)到应用程序。现在,此服务适用于现有的 rails 应用程序。我的计划是在这个 rails 应用程序中构建一个 sinatra 应用程序,并作为一个 rails 引擎安装:这个应用程序将与我现有的 rails 模型交互以生成/使用适当的 json。这是一个好方法吗?有没有人试过这个?谢谢。
【问题讨论】:
标签:
sinatra
rails-engines
【解决方案1】:
我使用了这种方法:带有 Sinatra 路由的 Rails。如果您提供的是 RESTful api,我还建议您查看类似 Sintra 的特定于 api 的框架 Grape。 This link 展示了如何在 Rails 应用程序中安装 Grape。祝你好运。
【解决方案2】:
“过早的优化是万恶之源。”
如果您需要速度,请仅走 Sinatra 路线。例如,您的 Rails 应用程序可能会在应用程序控制器中进行大量不必要的计算,而您希望在移动应用程序中绕过这些计算。即便如此,在我开始走 Sinatra 路径之前,我确实可以肯定它会占用移动客户端的响应时间。除非您正在开发游戏或其他高度交互的东西,否则将响应时间缩短 10 毫秒可能不值得所有开发人员的时间。
既然您有一个现有的 Rails 应用程序,只需使用 Rails。它已经拥有您需要的大部分代码。您只需要编写一些 JSON 视图。这比并行 Rails/Sinatra 堆栈更简单、更易于维护。
【解决方案3】:
我认为你应该摆脱 Rails 并忘记它。只需将 Sinatra 用于您的应用程序,并尽可能将纯 Rack 用于您的中间件。
与流行的看法相反,您可以使用 Sinatra 轻松构建大型应用程序,内部可以按照您想要的任何方式组织。
Rails 很慢。为什么不为所有事情快速运行一些东西呢? Sinatra 和纯 Rack 绝对没有您不能做的事情,它非常灵活。