Rails 3对比Sinatra

Jay*_*dse 20 json ruby-on-rails sinatra

对于我的下一个Web应用程序,我正在讨论是否使用Rails 3.x或Sinatra.

我想使用服务器提供用户身份验证,应用程序触发的电子邮件,相当复杂的数据模型(在ActiveRecord后面),以及与Web客户端的JSON数据接口.客户端将使用静态HTML,静态CSS,Javascript/jQuery将JSON数据呈现到视图中.用于呈现视图的"策略"将由Javascript代码和一些JSON数据驱动.我不打算使用任何动态视图技术,如ERB,HAML或RJS.

使用Sinatra或Rails 3.x会更好吗?

在做出决定之前,我还应该问其他问题吗?

Ant*_*ine 26

您的数据模型相当复杂,因此我认为您的应用程序必须处理大量业务规则和交互可能性.

Sinatra用于处理轻量级软件架构.如果您选择Sinatra,您可能会遇到自己需要处理的设计和组织问题.Rails实现了MVC模式,可以通过提供许多有用的机制来帮助您组织代码.

您仍然可以使用Sinatra构建一个"全栈"Web应用程序,但是您必须自己做很多事情,特别是如果您提供的功能量很高(或将会增长).我认为Rails在大型架构中自然更好.

PS:ActiveRecord在Sinatra和Rails都可用.

  • 例如,您通常需要在模型层中使用验证规则(不是由AR提供).但问题更为笼统:在Rails中,您将自己置于现有结构中.您遵循惯例和模式,确保您的应用程序易于维护并且可以很好地扩展.Sinatra只能帮助您进行路由和分派.在大型应用程序中,您需要的不仅仅是:您需要分离关注点和构建模式.当然,您可以在Sinatra上编写一个框架来确保这一点,但这需要时间并且会有错误(例如在每个程序中).(你也可以使用Padrino) (2认同)

dev*_*ull 6

Sinatra将是一个非常好的选择,我觉得它会比rails主要出于一个原因.这与其他用户所写的内容相关联:" 您遵循惯例和模式,确保您的应用程序易于维护并且可以很好地扩展.

几年前,我们在rails中开发了一个相当大的应用程序.我们所有的开发人员都必须进行完全重写,因为rails core(读取37个信号)并不关心使他们的新版本向后兼容.每次更新时代码都会中断.

因此,在Rails中对其进行编码将无法确保可维护性或可伸缩性.恰恰相反.

实际上,Sinatra的可扩展性会更好,因为它更轻巧,无论如何都要使用乘客进行部署.Sinatra社区没有炒作,非常有帮助.对于相同程度的Rails,没有主要的donnas,大自我.这确实的事情,因为Rails的议程可能会与你不同,你可能会很快结束了重新编写代码.O'Reilly有一本关于Sinatra的新书我觉得值得一看,因为它里面充满了关于可以做什么和如何做的例子和想法.