1

我已经在 Rails 中编程大约 7 个月了。主要是一个管理数据库的应用程序,你知道,清理,更新,删除,查找孤立条目等。

我有一个 API 可以与我们用 PHP 编写的桌面程序对话。我们现在发现自己想把一切都转移到 Ruby 上。这个 API 需要快如闪电,并且不会有任何视图或任何类型的 HTML 页面,它只会通过 JSON 与我们的应用程序通信,发送和接收应用程序将显示和使用的数据。

所以,基本的问题是,我应该学习 Sinatra 和 Padrino(使用 ActiveRecord)并用它们构建 API,还是在 Rails 中完成?

如果我使用 Rails,我可以保留很多我拥有的代码,甚至可以使用现有代码,因为所有表都是相同的(数据库相同),并且只需为 API 编写更多方法。

我认为这样做的缺点是双重的:

  1. 这意味着代码更难管理和阅读,因为现在我们有了 API 位和所有维护位。
  2. 这意味着同一个 Ruby 应用程序正在做双重工作,因此 API 不会像在另一个单独的 Ruby 应用程序中运行一样快。
  3. Rails 应用程序在速度方面已经不是很好,但我怀疑这与我们的托管解决方案有关,而不是与 Rails 本身有关。

学习 Sinatra 和 Padrino 可能需要更多的工作,但会带来更简洁的代码和用于 API 的单独 Ruby 应用程序和另一个用于维护的听起来更好的应用程序。

但是我对Sinatra和Padrino一无所知,足迹和速度真的比Rails好吗?

我非常感谢那些实际使用 Rails 和 Sinatra 和 Padrino 的人的意见。

干杯。

4

2 回答 2

4

Sinatra 和 Padrino 不会自动比 Rails快。它们只是Rails 小(并为开发人员提供了一个更小、更集中的工具包)。应用程序速度主要取决于您的代码(和算法)。优雅、可维护性和其他方面通常也是如此。

如果您已经拥有在 Rails 上运行的良好、可维护的代码,那么您很可能应该改进它。使用良好的托管/缓存解决方案使其更快,并通过重构保持优雅和可维护。

如今,Rails 和 Sinatra 都为 RESTful Web 服务的开发提供了非常好的支持,更普遍地,为无 UI API 的开发提供了很好的支持。Rails 更大,需要更多时间来驯服,但幸运的是,您不必学习和使用所有这些庞然大物来完成工作。在 Rails 上运行的应用程序可以与在 Sinatra 上运行的应用程序一样快速和优雅,因为实际用于处理 REST 请求的 Rails 子集与整个 Sinatra 框架一样小而优雅。因此,应用程序速度主要取决于您的代码和您的托管/缓存选择。

On the other side, you ought learn Sinatra and Padrino in any case. These frameworks are two of the most elegant and fascinating pieces of software I have ever seen. They absolutely deserve your attention. Just keep in mind that Sinatra, used alone, is normally not enough for anything more complex than a UI-less RESTful API. Most likely a real, full-blown web application will require Padrino.

于 2012-10-02T07:29:27.430 回答
0

If you have an existing Rails app already, it might be easier to port it over to rails-api. It's basically just Rails but stripped of all components used in making UIs.

I haven't personally used it but I was evaluating it for a project a few months ago.

于 2012-10-10T17:06:56.740 回答