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

问题描述 投票:6回答:6

我对红宝石本身经验很少。我打算雇用某人编写基于Web的应用程序,但我希望将其用RoR编写,但我建议使用Mono。我猜是因为他们喜欢单声道,并且因为他们认为RoR很慢。

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

我完全没有单声道的经验,也没有足够的经验来安慰地说RoR是最佳选择。

我知道,如果正确配置了RoR,它可能会很快。我读到RoR在可伸缩性方面有些麻烦。我将以小规模启动该应用程序,如果成功,则需要扩大规模。

您会推荐什么?

根据

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

((我喜欢红宝石,但我自己不会成为开发人员。如果对该问题有这样的答案,我宁愿选择“更好”的选项)

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

ruby-on-rails mono
6个回答
11
投票

如果您不想自己编写,则可能要与最喜欢编写它的人一起去。

全部披露:我现在已经使用Mono开发了几个站点,我很喜欢。我使用了Ruby-on-Rails,但所使用的功能几乎不及Mono中的功能。请记住这一点。

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

Architecture:如果想开箱即用,请选择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编写的,并且在给定大量通信量的情况下,它显然表现出色。证明在布丁中。也就是说,性能瓶颈可能不是您选择的框架。

Testing:

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

当然,由于.NET / Mono是一个多语言平台,因此您始终可以使用动态语言编写ASP.NET MVC测试。您甚至可以在Ruby(IronRuby)中做到这一点。也许这是两全其美的(对您的真实代码进行静态检查,并在测试中灵活地进行动态处理)。我考虑过自己使用IronPython进行测试。

维护和开发:

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

社区:

我比.NET更喜欢Ruby社区,但我认为我最喜欢Mono社区。这使它有些混乱。 Mono的核心人物(例如在这里回答问题的Michael Hutchinson)简直很棒。我也非常喜欢MonoDevelop作为工具(IDE)。它只是越来越好。 Michael,如果您对此有任何帮助,感谢您对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代码)。


6
投票

我对Rails的发言要比Mono多。如今,RoR具有所有可用的云托管服务,可扩展性非常好。 Web应用程序查询数据并使用该数据渲染网页,这实际上没什么大不了的。大多数性能问题是由数据库和架构设计问题而不是Web框架引起的。通常,数据库响应时间使服务器处理的其他部分相形见war。 RoR也很容易测试。与我使用的其他语言相比,测试是开发中更自然的部分。当我开始RoR编程时,我习惯了Java的结构化程度更高,而动态性更高的Rails吸引了我进行Web开发。


5
投票

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


3
投票

引入一点暗示性...


3
投票

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


2
投票

[如果您需要快速启动并运行,我会要求RoR。随着时间的流逝,扩展规模变得越来越容易,您可以在MRI 1.8、1.9,REE 1.8,JRuby(在Java VM上运行),Rubinius等众多的ruby运行时环境中进行选择。

© www.soinside.com 2019 - 2024. All rights reserved.