【问题标题】:ASP.NET MVC for Ruby on Rails developers?面向 Ruby on Rails 开发人员的 ASP.NET MVC?
【发布时间】:2010-02-17 19:09:58
【问题描述】:

长期潜伏者,第一次海报。我是一名自学成才的黑客,从学习 Ruby on Rails 开始。在工作中,我被允许在 Web 应用程序上工作——唯一的问题是我必须使用 ASP.NET。这种技术选择是强制性的,就像我更喜欢使用 Rails 一样。

有几十本“面向 .NET/PHP/Java 开发人员的 Rails”书籍和博客文章,但我没有发现任何相反的方向,从 Rails 到 .NET。

谁能给我一个典型的 Rails 应用程序如何转换为 ASP.NET MVC 的概述?我将研究 IDE、C#/VBscript 等的详细信息。但可能的等价物是:

  • 发电机
  • 宝石/插件
  • 数据库
  • 迁移
  • 路线
  • 模型(ORM)
  • 控制器(InheritedResources)
  • 视图(布局、模板、局部)
  • Rails 控制台
  • 测试单元/规格
  • 等。还有什么我忘记了

我认为很多我认为理所当然的 Rails 细节,比如基于路由的辅助方法,简单的宏关联声明是不可能的。 :(

非常感谢!

【问题讨论】:

  • 当您假设时,您会制作等。生成器、gem 和迁移不存在 - 您提到的其他所有内容都在 ASP.NET MVC 中。 :)
  • 这听起来很有希望——你能说出它们的名字吗?比如,Rails 控制台等价物是什么?
  • SQL Management Studio、服务器资源管理器或 LinqPad。如果您不熟悉 SQL,LinqPad 可能对您最友好
  • @ASP.NET 你已经收到了一些很好的答案,所以我不会命名它们。我只是想鼓励你。 :)
  • @bzlm,自从您在 2010 年 2 月(或者可能在此之前 ;-) 发表评论以来,.Net 框架具有用于代码生成的 T4 和用于宝石/插件的 OpenWrap 或 Nuget。

标签: ruby-on-rails asp.net-mvc


【解决方案1】:

我认为您在 .Net 世界中会发现您有很多选择要做。 Rails 很好,因为它在一个地方提供了所有这些东西,但是为 .Net 开发你必须拼凑出你自己的解决方案。

  • Generators - 有多种代码生成工具,但每一种都用于不同的部分。例如,您可以获得基于数据库生成代码的 MyGeneration。
  • 宝石/插件 - 没有联合系统;可以在 Web 上找到组件,您可以下载源代码或 .dll,然后在项目中添加对程序集 (.dll) 的引用。
  • 数据库 - 您几乎可以连接到任何东西;您可能会找到最适合 MS SQL Server 的指南。
  • 迁移 - 我不知道 .net 世界中的直接方法;我通常在 SQL 中编写 SQL 代码,并在部署过程中手动在服务器上运行脚本。
  • 路由 - ASP.Net MVC 包含路由,例如,查看创建项目时生成的 global.asax.cs 文件。
  • 模型 (ORM) - .Net 的 ORM 无处不在。作为 .Net 的一部分包括诸如 Linq-to-sql 和实体框架之类的东西。在 MS 之外你可以找到很多,但我可能会推荐 NHibernate。
  • 控制器 - 内置于 .Net MVC;您可以编写代码。
  • 视图 - 内置于 .Net MVC;再一次,你可以写它们。 MasterPages 允许您在所有页面上获得相同的总体布局(包括常见的页眉/页脚等),Web 控件(.ascx 文件)允许您进行局部视图。
  • Rails 控制台 - 我不确切知道它提供了什么(我是一个对学习 Rails 感兴趣的 .net 开发人员,但还没有花太多时间); Visual Studio 可让您调试应用程序、逐步执行代码等。我认为除了编写、编译和运行代码之外,没有任何控制台可用于测试代码。
  • 测试单元/规格 - 有一些 .Net 测试框架(MS 包含一个框架,NUnit 是一种替代方案)。对于规格等,可能会在 google 周围搜索行为驱动设计,看看存在什么。

【讨论】:

  • 谢谢,克里斯,这很有帮助。 RE:Rails 控制台——它很酷。这可能是动态解释脚本语言的一种可供性。这是一个很好的例子:railscasts.com/episodes/48-console-tricks
  • @Chris Shaffer “用于测试代码的控制台。”
  • @ASP.NET - 感谢您的链接,看起来非常有用。 Visual Studio 提供了 Rails 控制台中可用的一些信息(例如,Intellisense 将弹出自动完成功能,您可以导航到类等以查看可用的内容等。不幸的是,您实际上无法以相同的方式与代码交互. 在调试的时候,你可以设置一个断点,然后在 VS 的即时控制台中进行交互,但是你可以在这里完成的有一定的限制。
  • @George - George,根据我的理解,Ruby 的反射和内省允许以非正式的调试方式使用 irb/Rails 控制台:proquest.safaribooksonline.com/9780596157487/I_sect16_d1e7506 这很难解释,尤其是因为我所知道的是Ruby,但是非常好用。
  • 也许你和@ASP.NET 可以换工作。听起来是双赢的。 :)
【解决方案2】:

有几个 .NET 端口的 RoR 迁移。我用过migratordotnetFluentMigrator。两者都按预期工作,但我更喜欢 FluentMigrator。功能比较全(比如可以创建索引),我喜欢流畅的风格。

【讨论】:

  • 奇怪的是我对此投了反对票。有人愿意解释吗?如果您想要 Ruby 风格的数据库迁移,Fluentmigrator 是您的最佳选择。
【解决方案3】:

LINQPad 相当于 Rails 控制台。请参见此处: https://stackoverflow.com/a/9403457/1029644

【讨论】:

    【解决方案4】:

    您应该下载Visual Studio 2008 Express,然后下载ASP.NET MVC 1.0(我不会下载 ASP.NET MVC 2.0,因为它仅在 RC 中。等到它达到 2.0 最终版)。

    您也可以查看Nerddinner walkthrough。对学习ASP.NET MVC很有帮助。

    • 发电机

    您是指代码生成器吗?呃。

    • 宝石/插件

    如果您需要功能,您可以构建它或查看是否存在适用于它的 JQuery 插件。

    • 数据库

    通过您的模型访问数据库。

    • 迁移

    ?

    • 路线

    路由由框架处理,您可以在Global.asax.cs文件中添加路由。

    • 模型 (ORM)

    模型确实仍然被称为“模型”,并且在 ASP.NET MVC 中,如果您使用 LINQ-To-SQL,则在您将数据库表拖入时会为您生成模型。您可以使用存储库模式来访问数据库模型。

    • 控制器(InheritedResources)

    控制器仍称为控制器。

    • 视图(布局、模板、局部)

    有不同类型的视图引擎,但 ASP.NET MVC 提供的视图引擎一开始应该做得很好。

    • Rails 控制台

    我猜你的意思是 IDE/调试器?您可以在 Visual Studio 中构建和调试 ASP.NET MVC 应用程序。

    • 测试单元/规格

    您可以使用 NUnit,也可以使用 MSUnit。 MSUnit 已经与 Visual Studio 集成,但 NUnit 可以。

    【讨论】:

    • @George 我不同意 ASP.NET MVC 1.0 和 2.0。 ASP.NET 2.0 比 1.0 成熟得多,并且包括具有 Rails 背景的人会发现无需重新发明的改进功能,例如区域和验证。 ASP.NET MVC 2.0 具有 Go-Live 许可证,这使它成为一个非常安全的选择。
    • @bzlm,好的;但是 MVC 2 确实有会让你发疯的错误。前天晚上我处理了一个。 aspnet.codeplex.com/WorkItem/List.aspx
    • 那是哪个错误?由于没有人在 Codeplex 上使用问题投票,而且许多问题实际上都不是问题,因此仅查看列表很难判断。
    • 调用 UpdateModel 时,将模型绑定设置 null 设置为不在集合中的值是一个问题。 stackoverflow.com/questions/1936970/…
    • @GeorgeStocker LINQPad 相当于 Rails 控制台。请参阅下面的答案。
    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多