Activerecord Sinatra与Padrino或Rails一起用于web API?

Activerecord Sinatra与Padrino或Rails一起用于web API?,activerecord,ruby-on-rails-3.1,sinatra,padrino,Activerecord,Ruby On Rails 3.1,Sinatra,Padrino,我已经在Rails中编程7个月了。主要是一个应用程序,用于管理数据库、清理、更新、删除、查找孤立条目等 我有一个API,它与我们用PHP编写的桌面程序对话。我们现在发现自己想要把一切都转移到Ruby上。这个API需要闪电般的速度,不会有任何视图或任何类型的HTML页面,它只会通过JSON与我们的应用程序通信,发送和接收应用程序将显示和处理的数据 所以,基本问题是,我应该学习Sinatra和Padrino(使用ActiveRecord)并用它们构建API,还是在Rails中实现 如果我使用Rail

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

我有一个API,它与我们用PHP编写的桌面程序对话。我们现在发现自己想要把一切都转移到Ruby上。这个API需要闪电般的速度,不会有任何视图或任何类型的HTML页面,它只会通过JSON与我们的应用程序通信,发送和接收应用程序将显示和处理的数据

所以,基本问题是,我应该学习Sinatra和Padrino(使用ActiveRecord)并用它们构建API,还是在Rails中实现

如果我使用Rails,我可以保留很多代码,甚至使用现有的代码,因为所有的表都是相同的(数据库是相同的),只需为API编写更多的方法

我认为这有两个缺点:

  • 这意味着代码更难管理和读取,因为现在我们有了API位和所有维护位
  • 这意味着同一个Ruby应用程序正在做双重工作,因此API不会像在另一个单独的Ruby应用程序中运行一样快
  • Rails应用程序在速度方面已经不是很好了,但我怀疑这与我们的托管解决方案有关,而不是Rails本身 学习Sinatra和Padrino可能需要更多的工作,但会带来更干净的代码和一个单独的Ruby应用程序,用于API和另一个用于维护的应用程序,听起来更好

    但我对西纳特拉和帕德里诺一无所知,它的足迹和速度真的比Rails好吗

    我非常感谢那些在这方面同时使用Rails和Sinatra与Padrino的人的意见


    干杯

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

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

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


    另一方面,无论如何你都应该学习西纳特拉和帕德里诺。这些框架是我见过的最优雅、最迷人的两款软件。他们绝对值得你关注。请记住,单独使用Sinatra通常不足以实现比UI更少的RESTful API更复杂的功能。一个真正成熟的web应用程序很可能需要Padrino。

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

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

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


    另一方面,无论如何你都应该学习西纳特拉和帕德里诺。这些框架是我见过的最优雅、最迷人的两款软件。他们绝对值得你关注。请记住,单独使用Sinatra通常不足以实现比UI更少的RESTful API更复杂的功能。一个真正的、成熟的web应用程序很可能需要Padrino。

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


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

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


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

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