【问题标题】:Why is ASP.NET MVC limited to ASP?为什么 ASP.NET MVC 仅限于 ASP?
【发布时间】:2009-03-24 23:37:02
【问题描述】:

复制

MVC .NET For the Desktop?

我开发了一些 ASP.NET MVC 应用程序,并且喜欢该框架。但是,我不太明白的一件事是为什么它仅限于 Web UI。视图和控制器分离的原因之一似乎是允许多个视图重用相同的控制器逻辑。例如,我应该能够将 WPF UI 挂在与 Web UI 相同的控制器上。不过,我怀疑我误解了关于关注点分离的一些基本问题。 ASP.NET MVC 控制器仅限于在 Web 应用程序中使用是否有原因?

更新:我对“是否可以在桌面上执行 MVC”不太感兴趣 - 我知道 Prism 等允许这样做。然而,从设计的角度来看,我们想要分离关注点的“原因”之一是为了可重用性。如果我们不能重用控制器,在 WPF 应用程序中重写相同的逻辑时,感觉就像是在重复自己。不过,下面的答案确实为我澄清了一些。

【问题讨论】:

    标签: wpf asp.net-mvc


    【解决方案1】:

    不得不说MVC模型在web应用中特别实用,那是因为视图(html页面)真的是脱节的,远离控制器和模型。

    在桌面应用程序中,情况并非如此,您很快就会错过一些打破这种模式以使应用程序更有用的机会。
    例如,您不能在 WPF 中进行功能强大且节省时间的数据绑定,因为它破坏了 MVC 模式。

    在 WPF 中使用的一个好的模式是M-V-VM

    【讨论】:

      【解决方案2】:

      Model View Controller 是一种模式,ASP.NET MVC 是应用于 ASP.NET 的 web 框架的模式。正如它所提到的,这将 url 路由与事物联系起来,以使导航更简单,并且对操作的调用方式更加完整。

      也就是说,从技术上讲,没有什么可以阻止您在 ASP.NET MVC 库中使用组件。通过 LINQ 或实体的数据访问层在 ASP.NET MVC 之外可用。同样,该模式本身也有无数的 Winforms 应用程序实现示例。相同的技术可以应用于 WPF。

      【讨论】:

        【解决方案3】:

        这说起来容易,我知道,但是如果您很好地实现了数据访问层和业务对象,则可以重用大部分代码。

        我们正在使用 ASP.NET MVC。我们有一个单独的项目,其中有我们的业务对象和数据访问层。我们在 Web 项目中的“模型”通常是我们业务对象的轻量级包装器。

        我们的控制器方法都非常轻量级,因为在数据访问层和我们的业务对象之间,我们封装并简化了向消费者呈现的大部分业务逻辑。

        一旦我们构建了 MVC 应用程序,我们想在 WPF 应用程序中使用我们的一些数据(用于状态显示屏幕)。我们刚刚创建了一个新项目,引用了我们的数据访问层和数据模型,然后我们就离开了。非常简单,并且有大量的代码重用。

        【讨论】:

          【解决方案4】:

          我不会说你完全误解了关注点分离,事实上你的问题表明你理解得很好。

          “ASP.NET MVC”这个名字表明微软做出了一个有意识的决定,即为基于 w3eb 的应用程序创建一个更专业的 MVC 实现。这使他们能够优化设计,从而提高开发人员构建基于 Web 的应用程序和服务的效率。

          如果他们创建了一个更通用的“.NET MVC”框架,我预计它需要在 Web 应用程序和桌面应用程序的需求之间做出更艰难的权衡。

          就我个人而言,我认为 Microsoft 的方法会让经验不足的开发人员更加困惑,他们经常认为模式的实现就是模式。

          【讨论】:

            【解决方案5】:

            ASP.NET MVC 是一个用 ASP.NET 做 MVC 的框架;它包括诸如 URL 路由之类的东西。您可以使用 WPF 和 WinForms 很好地进行 MVC(模型-视图-控制器)风格的编程。

            【讨论】:

              【解决方案6】:

              Here's a previous question 我尝试过类似的地方 - 让我们看看这次我们想出了什么。

              这个问题的另一个方面是,为什么 VS 几乎没有可用于 .NET 桌面和 asp.NET 开发的抽象设计工具?

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-06-05
                • 2012-11-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多