为什么ASP.NET MVC仅限于ASP?

时间:2009-03-24 23:37:03

标签: wpf asp.net-mvc

复制

  

MVC .NET For the Desktop?

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

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

6 个答案:

答案 0 :(得分:6)

我不得不说MVC模型在网络应用程序中特别实用,这是因为视图(html页面)真的是断开的,远离控制器和模型。

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

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

答案 1 :(得分:3)

模型视图控制器是一种模式,ASP.NET MVC是应用于ASP.NET的Web框架的模式。正如前面提到的那样,这会将url路由到事物中,使导航变得更简单,并且更有必要调整操作。

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

答案 2 :(得分:3)

我很清楚这一点,但是如果您很好地实现数据访问层和业务对象,则可以重用代码的重要部分。

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

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

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

答案 3 :(得分:2)

我不会说你根本就误解了关注点,实际上你的问题表明你理解得很好。

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

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

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

答案 4 :(得分:1)

ASP.NET MVC是一个用ASP.NET做MVC的框架;它包括URL路由等内容。您可以使用WPF和WinForms进行MVC(模型 - 视图 - 控制器)样式编程。

答案 5 :(得分:1)

Here's a previous question我尝试过同样的事情 - 让我们看看这次我们想出了什么。

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