【问题标题】:Sinatra with Padrino or Rails for a web API?Sinatra 与 Padrino 或 Rails 的 Web API?
【发布时间】:2012-10-01 22:48:55
【问题描述】:

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

我有一个与我们用 PHP 编写的桌面程序对话的 API。我们现在发现自己想把一切都转移到 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 的人的意见。

干杯。

【问题讨论】:

    标签: activerecord ruby-on-rails-3.1 sinatra padrino


    【解决方案1】:

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

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

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

    另一方面,无论如何,你都应该学习 Sinatra 和 Padrino。这些框架是我见过的最优雅、最迷人的两个软件。他们绝对值得您关注。请记住,单独使用 Sinatra 通常不足以处理比无 UI 的 RESTful API 更复杂的事情。一个真正的、成熟的 Web 应用程序很可能需要 Padrino。

    【讨论】:

    • 谢谢亚历克斯。如果 Rails 和带有 Padrino 的 Sinatra 之间没有这种区别,你会在哪里使用一个,另一个在哪里使用?
    • 我通常尽量使用手头任务所需的最低框架复杂性。对于“裸”RESTful Web 服务(无 UI),我使用 Sinatra。对于小型/常规网站,我更喜欢 Padrino。只有当项目从一开始就处理大型、功能丰富、复杂的 Web 应用程序时,我才会使用 Rails。除此之外,Rails 还为您提供了许多预构建的功能和许多易于使用的插件,因此在许多情况下,使用 Rails 比从头开始重新创建所有内容更容易/更快。
    【解决方案2】:

    如果您已经有一个现有的 Rails 应用程序,将其移植到 rails-api 可能会更容易。它基本上只是 Rails,但去掉了用于制作 UI 的所有组件。

    我没有亲自使用过它,但几个月前我正在为一个项目评估它。

    【讨论】:

    • 嗯...这看起来确实很有趣,但仅仅通过阅读他们的 github 自述文件,我并不能真正看到使用它比使用 Padrino 的优势。可以吗?
    • 我认为这将归结为个人喜好。如果您已经熟悉 Rails 并且时间紧迫,那么现在最好不要学习新东西。
    • 我已经在生产环境中使用它 3 个月了,我不得不说 Rails-API 非常好用并且可以胜任。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多