【问题标题】:Benefits of Sinatra for a web service like controllerSinatra 对控制器等 Web 服务的好处
【发布时间】:2010-08-04 22:44:46
【问题描述】:

我正在编写一个简单的 ruby​​ 控制器,它只需要作为 Web 服务响应一组移动客户端。

有人告诉我应该调查一下 Sinatra。将 Sinatra 用于这么简单的事情有什么意义?他提到它会“更快”,但是在某物之上的包装器如何使它更快?

我不想让事情变得过于复杂;一个简单的控制器非常容易编写,并且需要维护的 gem 更少。我是否错过了 Sinatra 提供的一些值得额外麻烦的东西?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby sinatra


    【解决方案1】:

    您可以构建的最简单有用的 Ruby Web 应用程序是 Rack 应用程序。 Sinatra 是一个轻量级的 DSL,它位于 Rack 之上,使控制器和视图的编码更加方便。您可以通过包含更多附加组件(如 ActiveRecordRack::Oauth 等)来构建更复杂的应用程序

    Rails 2 是一个功能更丰富的框架,其中包括框架中已有的大量附加功能。有些应用程序不需要所有这些,因此有些开发人员更喜欢 Sinatra 之类的东西,它是最小的。

    但是,自 Rails 3 以来,Rails 和 Sinatra 之间的区别已经模糊了很多。新版本允许从 Rack 到堆栈中的完整 Rails 的所有内容,您可以对其进行定制以满足您的需求。一些中间框架(例如 Sinatra)存在的理由比以前弱了。

    所以看看 Rails 3,从最低限度开始,然后根据您的需要进行扩展。

    【讨论】:

    • 具体来说,Rails 3 中的路由允许您基于每个路由定义中间件,因此,您可以直接使用 sinatra 或 rack 来处理轻量级服务,而使用 Rails 处理更复杂的服务或请求。
    • 所以网站前端可以用 Rails 编写,但移动客户端使用的接口可以路由到非常薄的 Rack/Sinatra 类型的应用程序?
    【解决方案2】:

    Sinatra 是一个非常小巧的 Web 框架。它在运行时需要的内存比 Rails 少得多。此外,请求处理可能更快,因为涉及的代码更少。所以它非常适合“这么简单”的网络服务。

    特别是如果您需要运行许多实例(例如高流量或许多长时间运行的请求),这可能是您需要运行 Web 服务的机器数量的一个重要因素。

    【讨论】:

    • +1 好的,谢谢。所以 Sinatra 是我会而不是运行 rails 的东西。我的印象是它上面是一个额外的包装。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多