2010-08-04 63 views
2

我正在写一个简单的ruby控制器,只需要作为web服务响应一堆移动客户端。Sinatra对于像控制器这样的Web服务的好处

有人告诉我我应该看看Sinatra。使用Sinatra这个简单的事情有什么意义?他提到这将会“更快”,但是如何在封面上封装更快的东西?

我不想过分复杂的东西;一个简单的控制器很容易编写,并且有更少的宝石需要维护。我是否错过了Sinatra提供的一些东西,使它值得付出额外的麻烦?

谢谢

回答

5

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

Rails 2是一个功能更丰富的框架,其中包含了框架中已有的大量附加功能。有些应用程序并不需要所有这些,所以一些开发人员更喜欢像Sinatra这样的很小的东西。

但是Rails和Sinatra之间的区别自Rails 3以来已经模糊不清。新版本允许从Rack到完整Rails的所有内容都可以根据需要进行调整。一些像Sinatra这样的中间框架的存在理由比以前更弱。

因此,看看Rails 3,从最低限度开始,并适应您的需求。

+0

+1感谢您的信息 – cakeforcerberus 2010-08-04 23:46:13

+2

,具体来说,Rails 3中的路由允许您根据每个路由定义中间件,因此,您可以使用sinatra或机架直接轻量级服务,而Rails可以使用更复杂的服务或请求。 – 2010-08-05 01:13:02

+0

因此,一个网站前端可以写在轨道上,但移动客户端使用的接口可以路由到一个非常薄的Rack/Sinatra类型的应用程序? – MattC 2010-08-06 02:45:25

2

Sinatra是一个非常苗条的Web框架。它比Rails在运行时需要更少的内存。另外,由于涉及的代码较少,请求处理速度可能更快。所以它可以非常适合web服务“这个简单”。

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

+0

+1好的,谢谢。所以Sinatra是我会运行*而不是轨道的东西。我的印象是这是一个额外的包装。 – cakeforcerberus 2010-08-04 23:44:57