【问题标题】:ASP.NET MVC fuzzy path to the pit of success?ASP.NET MVC 模糊路径成功之坑?
【发布时间】:2009-11-19 20:11:16
【问题描述】:

我有兴趣将 ASP.NET MVC 添加到我的技能组中。然而,我的沉默来自这样一个事实,即当人们谈论实现应用程序以及如何遵守 MVC 架构的规则时,似乎存在很多“模糊性”。我听说微软曾引用过微软希望开发人员落入成功的陷阱。话虽如此,我的问题是:

当关于程序结构应如何遵守 MVC 架构的租户的协议存在这种差异时,我如何避免编写糟糕的 MVC 代码?是否有商定的方法/最佳做法?

学习 Ruby on Rails(而不是学习一门新语言)以了解是什么启发了微软创建 ASP.NET MVC 是否会更好?

【问题讨论】:

    标签: ruby-on-rails asp.net-mvc model-view-controller


    【解决方案1】:

    通过 NerdDinner tutorial. 这是使用 ASP.NET MVC 创建 NerdDinner.com 的过程的分步演练。普遍认为此应用程序(大部分)在设计和编码方面遵循最佳实践。

    另外,看看 Scott Hanselman 在 Mix09 上的 File/New/NerdDinner presentation。他以机智和洞察力在 70 分钟内(或多或少)构建了整个应用程序。 Scott 还谈到了一些重要的周边技术,例如 jQuery。

    【讨论】:

    • 就是这样,“少部分”让我担心。
    • @Achilles:没有“完美”的应用程序。 NerdDinner 是最接近初学者的 MVC 教程,它教你“正确”的做事方式。
    【解决方案2】:

    熟悉MVC architecture 本身可能会更好。学习设计模式可能会有所帮助,因为 MVC 可以看作是观察者、策略和模板方法的组合。

    从 ASP.NET MVC、RoR、GroGR、CodeIgniter 等角度来看,MVC 存在细微差别,但它们本质上都是围绕相同的概念构建的:业务逻辑位于模型中,控制器用于路由到适当的模型和视图应该只显示数据。虽然 MVC 1 和以 Web 为中心的 MVC 2 之间存在差异,但一旦您了解 MVC,您就可以相当轻松地使用它的不同实现。

    这是来自软件设计课程的fairly good explanation of it

    【讨论】:

      【解决方案3】:

      在进行面向对象编程方面根本没有唯一正确的方法。只需选择更接近您口味的那一款即可。一年后,你的品味会改变……这就是我们的编程技能增长的方式 ;-)

      例如,RoR 采用 ActiveRecord 路径,而我个人更喜欢带有 POCO 业务对象的域驱动设计。但这来自我对正确的 OO 设计有时无意识的感觉。您的可能会有所不同 - 但这正是重点,只有您可以决定什么适合您。当然,不要忘记您的客户现在需要它 ;-)

      【讨论】:

        【解决方案4】:

        ASP.NET MVC 在我看来是对Ruby on Rails 的抄袭。我并不是说听起来苛刻,微软做得很好,它是一个很棒的平台。但是学习 Ruby on Rails 以了解 MVC 的根源并没有多大用处,它们非常相似。

        话虽如此,你真的应该学习 MVC 架构,我建议你学习 ASP.NET MVC。我认为它在某些场景下非常好,业务逻辑与视图很好的分离。

        【讨论】: