有没有类似于Ruby on Rails框架的.NET开发等效方案?

4
像ASP.NET MVC或Entity Framework这样的答案并不可接受,因为它们只解决了问题领域中的一个方面。我正在寻找一个真正的框架,它可以为我提供与Rails相同的开箱即用功能。因此,它应该包括至少以下内容:
1. 用于演示的MVC 2. ORM 3. 能够为任何环境(dev、QA、Production等)提供简单配置的功能 4. 类似迁移的功能 5. 能够在所有层生成代码(类似于脚手架行为等) 6. 项目模板,以创建类似于“rails my_app”命令的功能。
谢谢。

https://dev59.com/i3RC5IYBdhLWcg3wK92V - Charlie
6个回答

9

是的,有一个框架...它被称为.NET框架。

  1. ASP.NET MVC
  2. Linq to SQL / Entity Framework
  3. .NET Configuration API (web.config)
  4. 类似迁移的功能是什么?
  5. ASP.NET动态数据
  6. Visual Studio项目模板

除了一组相互配合以提供全面功能集的组件之外,“真正”的框架是什么?我认为当前版本的.NET框架已经可以从“开箱即用”的角度来满足你所寻求的需求。


Rails迁移本质上是更改数据库模式的脚本,例如添加表或删除列。理想情况下,每个迁移都封装了一个小的更改,并具有回滚方法。 - zetetic
就我个人而言,我发现使用NHibernate或其他ORM来生成数据库对于我大部分的工作来说更加方便。我只需将我的模型编写为模型,让ORM帮我找出如何将它们转换为SQL。如果由于此原因在数据库中生成的架构不符合我的要求,通常在进行负载测试等操作后回去修复会更容易,并且您有更准确的结果和理由来修复它;这可以避免过早优化。 - Paul
1
你显然没有使用过Rails。我看过.NET、Java Spring和Rails,可以说在这三个框架中,Rails是最好的,特别是如果你在一家小到中等规模的软件开发公司工作的话。 - eaglestorm
@ealgestorm:请不要在这里发表挑衅性言论。 - Aaronaught
1
如果我基于经验的专业意见被视为煽动性言论,那么你一定是微软狂热者。 - eaglestorm
1
@eagle,你不同意就是狂热者吗?还是说这让你成为了Rails的狂热者? - user1228

3

我想您可能希望了解Rob Conery所做的事情。请看他的博客文章。

http://blog.wekeroad.com/2010/05/24/mvc-starter-2

更新:详细回答如下:

  1. ASP.Net MVC(用于表示)
  2. ORM (Subsonic)
  3. 环境(是的,它有像开发、生产等不同的环境)
  4. 迁移(是的。Subsonic Simple Repository可以将数据库与模型同步)
  5. (不确定)
  6. 你可以使用那个起始站点中的大部分代码。

另外,Rob Conery曾是ASP.NET MVC团队的成员,现在也在Rails核心团队工作。


2
我看过的最接近你所要求的东西是S#harp Architecture。从我所知道的来看,它确实符合你所说的一切。
话虽如此,我认为正如Soe Moe(+1)所指出的那样,Rob's TekPub更接近于轻量级的“感觉”,只是它还没有项目模板(尽管这是我在有时间时候会解决的事情)。
所有这些说法,我要警告你要谨慎对待功能嫉妒。我不喜欢Rails的一件事情就是你被锁定到他们的思维方式中,而这种思维方式并不适用于所有项目。所以,这只是给你的一些思考食物。

1

嗯,我认为简短的答案是“没有”。没有一个框架(据我所知)。但是,您可以组合许多框架来实现大部分功能。

  • MVC
  • 使用Castle ActiveRecord来获取您习惯的ActiveRecord
  • 配置方面没有很好的选择(在我看来,web.config并不能很好地让您管理开发、QA和生产之间的差异)。可能需要自己编写。我敢打赌,您可以找到一个可靠的yaml解析器(毕竟,IronRuby现在一定有一个)
  • 迁移 - 我敢打赌,有一些“.NET迁移”解决方案存在,但我没有使用过。还没有出名的,但我不知道是否会出现。
  • 对于“脚手架”,您真的应该看看Dynamic Data。我听说它非常棒(虽然没有第一手经验)
  • 项目模板:Visual Studio在这方面有一些非常好的功能。除此之外,Resharper还有一些优秀的功能。有了这两个,您可以创建自己的模板。您可能会输入四个字母,然后立即看到它们变成一个for循环,或者是从您指定的基类派生的整个类,或者是更多的内容。整个解决方案可以被模板化,以便新项目从样板开始,并准备就绪。

0

我们已经成功地使用NetTiers作为ORM一年多了。这个框架负责中间层和数据层。其他的东西,比如日志和异常处理,来自于Microsoft Enterprise Library。

将其与由CodeSmith生成的前端模板混合,并加上像DevExpress这样的好的Ajax组件套件,你就可以开始了。

使用CruiseControl实现自动化,你就可以实现持续集成和一键部署。


-1

你能再具体一点吗?Ruby on Rails运行在.NET上,为什么你想要一个类似Ruby on Rails的框架而不是Ruby on Rails呢?

编辑:我不太明白为什么会有人踩。我相信Ruby on Rails完全符合OP的所有标准:

是否有类似于Ruby on Rails的框架等效物

检查:Ruby on Rails绝对类似于Ruby on Rails。实际上,在迄今为止给出的所有答案中,我认为Ruby on Rails是最像Ruby on Rails的框架,比当前得票最高的答案更加如此。

用ASP.NET MVC或Entity Framework这样的答案真的不可接受,因为它们只解决了问题域的一个方面。

检查:Ruby是一种.NET语言,Ruby on Rails运行在.NET上,有一个适用于Internet Information Server的Rack适配器,有一个适用于SQL Server的ActiveRecord适配器,Ruby on Rails在本质上是一个100%本地的.NET公民。

不幸的是,这个问题没有明确指定“问题域”是什么,但似乎OP认为Ruby on Rails确实涵盖了问题域的所有方面,所以:检查。

我正在寻找一个框架...一个真正的框架

同样,这个问题没有明确指定“真正的框架”是什么,但似乎OP认为Ruby on Rails是一个真正的框架,所以:检查。

它应该至少包括:

MVC用于演示

检查:Ruby on Rails确实为演示提供MVC。它有ActiveRecord用于模型层,ActionView用于视图层和ActionController用于控制器层,尽管如果您不喜欢它们,每个都可以被替换为不同的实现。

ORM

检查:Ruby on Rails确实带有一个名为ActiveRecord的ORM,但如果你不喜欢它,你可以将其替换为DataMapper、Sequel或任何你想要的ORM。此外,Ruby on Rails并不需要关系型数据库,它同样适用于分层数据库、文档数据库、键值数据库和图形数据库。

能够为任何环境(开发、QA、生产等)提供简单的配置

检查:Ruby on Rails内置了几个环境(开发、测试和生产),但你可以添加自己的环境,并为其中任何一个提供配置。

类似迁移的功能

检查:ActiveRecord带有一个数据库迁移框架。

能够在所有层次生成代码(类似脚手架行为等)

检查:Ruby on Rails带有Rails Generator框架,允许定制生成几乎任何内容,并且还附带了一整套预定义的生成器,用于模型、控制器、视图、迁移、测试等。

项目模板,以创建类似于"rails my_app"命令的功能

检查:Ruby on Rails带有Rails模板,允许您创建可定制的项目模板,可以使用单个命令生成整个骨架项目。它还带有预定义的模板,该模板生成一个具有ActiveRecord作为模型,ActionController作为控制器,ActionView作为视图,ERb作为模板库,Prototype作为AJAX库和test/unit作为测试框架的项目。
Ruby on Rails满足问题中的每一个标准,并且在我看来,它比迄今提出的任何其他框架都更好地满足了这些标准,包括当前得票最高的答案。

Ruby on Rails 不是 .NET 语言。你可以在 .NET 中使用 IronRuby [on Rails],但它只实现了大约 86% 的规范,而且是几个版本之前的 Ruby 版本(1.8.6,如果我没记错的话)。 - Andy_Vulhop
@codemonkey4hire:是的,Ruby on Rails确实不是.NET语言。我从未声称过它是。事实上,这是一个相当无聊的陈述,因为Ruby on Rails是一个Web应用程序框架,而不是一种语言。因此,由于Ruby on Rails不是一种语言,所以说Ruby on Rails不是.NET语言的陈述完全缺乏任何有用的信息。丰田也不是.NET语言,它是一家汽车公司。 - Jörg W Mittag
“检查:Ruby不是.NET语言,Ruby on Rails不运行在.NET上,有一个Rack适配器用于Internet Information Server,有一个ActiveRecord适配器用于SQL Server,Ruby on Rails实际上是一个100%本地的.NET公民”这是错误的。 Ruby不是.NET语言。它是自己的语言,比.NET本身更古老。IronRuby是基于1.8.6版本规格的Ruby实现,但它是不完整的,并且1.8.6是几个版本之前的版本。 - Andy_Vulhop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接