2010-08-04 42 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