在Linux上运行新应用程序的mono或RoR?

时间:2010-09-05 00:20:58

标签: ruby-on-rails mono

我对ruby本身没什么经验。我将聘请某人编写一个基于Web的应用程序,我希望它是用RoR编写的,但我推荐使用mono。我猜是因为他们喜欢单声道,因为他们认为RoR很慢。

整个应用程序将是某种社交媒体元管理工具。将有基于前端网络的部分,然后是后端做“真实的东西”。

我根本没有单声道的经验,而且我没有足够的经验来轻松地说RoR是最好的选择。

据我所知,如果RoR配置正确,可能会非常快。我读到RoR在可扩展性方面存在一些问题。我将开始小应用程序,如果它成功,我需要扩展它。

你会推荐什么?

根据

  • 性能
  • 可扩展性
  • 易于测试
  • 易于维护,开发代码/项目

(我喜欢红宝石,但我不会自己成为开发者。如果对这个问题有这样的答案,我更愿意选择'更好'选项)

请随意提出其他建议......

6 个答案:

答案 0 :(得分:11)

如果你不打算自己写,你可能想要写下最适合的人。

完全披露:我现在使用Mono开发了几个网站,我喜欢它。我使用过Ruby-on-Rails,但没有像我在Mono中那样大的东西。记住这一点。

快速回答:在更大的方案中,Ruby-on-Rails和ASP.NET MVC有更多共同之处。我的选择是Mono上的ASP.NET MVC,但我怀疑你会后悔选择。

架构:如果您想要一种开箱即用的方法,请选择Ruby-on-Rails。如果您希望能够从众多选择中选择您认为最佳的技术,请选择.NET(Mono)。

Ruby-on-Rails更像是一个交钥匙解决方案,因为它提供了一种标准方式,可以开箱即用。 .NET(Mono)提供了更多功能(我的观点可以说)但是有很多不同的部分可供选择,你必须自己选择技术堆栈。例如,RoR有一种访问数据库的标准方法,而.NET Mono允许/强制您从十几种不同的方式中进行选择。

Mono和.NET通常会更好地分离关注点,因此您的纯粹主义者可能会喜欢这样。如果没有,你实际上找到了你的袖子,并根据自己的喜好来完成Ruby的态度。

性能和可伸缩性:这应该清楚地转到.NET和Mono。事实上,我认为运行Ruby-on-Rails的最快方法是使用IronRuby在.NET上运行它。 StackOverflow是用ASP.NET MVC编写的,考虑到流量,它显然表现很好。证明就在布丁中。也就是说,性能瓶颈可能不是您选择的框架。

测试:旧样式ASP.NET(现在称为WebForms)被认为很难测试。较新的ASP.NET MVC设计易于测试,与RoR类似。一个主要因素是在Mono中你可能会使用静态类型语言(如C#),而Ruby当然是一种动态类型语言。您必须使用动态语言编写更多测试(因为编译器/解释器不会捕获类型问题),但如果您不打击编译器,也可以更容易编写测试。我认为这是一个品味和风格的问题(我喜欢静态),但这是回答这个问题的一个主要因素。

当然,由于.NET / Mono是一个多语言平台,因此您总是可以用动态语言编写ASP.NET MVC测试。你甚至可以用Ruby(IronRuby)来做。也许这将是两个世界中最好的(静态检查您的真实代码和测试中的灵活动态)。我已经考虑过使用IronPython进行测试。

维护与开发:这是一个艰难的过程。这取决于您的编写内容,您可能需要的第三方库以及您将使用的工具。我会说RoR可能是更先进的MVC框架。我自己的想法是,Ruby-on-Rails可能更容易编写,但更难维护。

社区:我比Ruby更喜欢Ruby社区,但我认为我最喜欢Mono。这让它有点混乱。 Mono的核心人物(就像Michael Hutchinson在这里回答的那样)简直太棒了。我非常喜欢MonoDevelop作为工具(IDE)。它不断变得越来越好。迈克尔,如果你有任何关系,感谢你的Git支持。 : - )

工具:如果您正在为Mono编写,您可以使用整个.NET工具(VisualStudio,ReSharper,Reflector等),因此很难被击败。假设你在Windows上开发当然。在Linux或Mac上,Mono的首选工具是MonoDevelop。它支持IDE中的版本控制,软件调试器和NUnit测试,并且完全是跨平台的。

似乎很多Ruby人只使用简单的文本编辑器。这可能只是因为IDE不像提供动态语言那样提供动态语言。这是一个关于人们喜欢Ruby的问题:

What Ruby IDE do you prefer?

编辑:只是为了让事情变得混乱......还有另一个用于.NET / Mono的MVC框架,它更像是Ruby-on-Rails; MonoRail甚至还有ActiveRecord的实现。 MonoRail实际上比ASP.NET MVC更长,但是现在我会坚持使用ASP.NET MVC,因为这是未来的发展方向。顺便说一下,ASP.NET MVC是开源的,并且开箱即用Mono(实际的Microsoft代码)。

答案 1 :(得分:6)

我可以更多地谈论Rails而不是Mono。如今,RoR具有相当可扩展性,可提供所有云托管服务。 Web应用程序使用该数据查询数据和呈现网页,这实际上并不是什么大不了的事。大多数性能问题都是由数据库和架构设计问题引起的,而不是Web框架引起的。通常,数据库响应时间使服务器处理的其他部分相形见绌。 RoR也很容易测试。与我使用的其他语言相比,测试是一个更自然的开发部分。当我开始进行RoR编程时,我习惯了更加结构化的Java世界,而更加动态的Rails让我赢得了Web开发。

答案 2 :(得分:5)

首先,我使用MonoDevelop,一个Mono的跨平台IDE(包括ASP.NET和ASP.NET MVC),所以请随意考虑我的答案有偏见,但希望无论如何它都会有所帮助。

性能:一个不错的JIT编译器(Mono)应该比解释器(Ruby)快得多。但这也取决于程序员的技能 - 编写良好的Ruby 可能比编写真正糟糕的C#更快。您使用的库和数据库以及缓存机制也是一个重要因素,但这些并不是语言/框架的基础。

可扩展性:AFAIK没有Web应用程序可扩展性的灵丹妙药,虽然我没有这个领域的实际经验,但这里有一些我已经掌握的信息。这实际上取决于您的数据库使用情况,会话状态的存储方式以及缓存的实现方式。这对于任何一个框架来说都不是真正的基础 - 一旦你开始扩展到多台机器,你可能会有许多机器/进程用于数据库服务器,缓存服务器,消息队列,前端,静态内容服务器等。可能只有前端将是ASP.NET或ROR,如果它们是无状态的,您可以简单地克隆它们并处理后端的可伸缩性问题。

测试:我不能代表Ruby,但ASP.NET MVC(但不是vanilla ASP.NET)的设计可以使用NUnit等.NET测试工具轻松测试(Mono自己的单元测试使用NUnit)。

维护和开发:同样,我不能真正代表Ruby,但它几乎是一个给定的,它最容易开发(至少最初)的语言&开发人员已经体验过的框架。此外,.NET在Windows上有一些令人惊叹的开发工具--Visual Studio,ReSharper等 - 而且你可以雇佣大量经验丰富的C#和ASP.NET开发人员,但很少有人会知道Linux / Mono。

此外,StackOverflow使用ASP.NET MVC:)

答案 3 :(得分:3)

当然有dizzying array of choices,但另一个不错的选择是Django

它基本上是用于Python的Ruby-on-Rails,因此大多数RoR与ASP.NET MVC的比较都适用。根据您正在构建的网站类型,Django真正有趣的功能是自动管理界面。

答案 4 :(得分:3)

引入一点点轻松......

DOS on Dope: the last MVC web framework you will ever need怎么样?

答案 5 :(得分:2)

如果您需要快速启动并运行,我会选择RoR。随着时间的推移,缩放轨道变得越来越容易,您可以从MRI 1.8,1.9,REE 1.8,JRuby(在Java VM上运行),Rubinius中选择大量的ruby运行时环境。

ASP.NET MVC很不错,但在它提供与RoR相同的开发速度之前,我仍然认为还有一段路要走。