.NET的MVVM框架

Model-View-ViewModel 是一种架构模式,主要在 WPF、Silverlight 和 WP7 开发里使用,它的目标是从视图层移除几乎所有代码隐藏(code-behind)。交互设计师可以专注于使用 XAML 表达用户体验需求,然后创建和视图模型的绑定,而视图模型则是由应用程序开发者开发和维护的。

  MVVM 是更加通用的 Presentation 模式的一个具体实现。MVVM 视图模型包含概念模型而不是数据模型,所有业务逻辑和其它操作都是在模型和视图模型里完成的。有很多框架可以做到这点,其中一些是:

  开源的

  • PRISM:由微软提供,和 MEF/Unity 一起用于依赖注入,支持组合命令,可以扩展MSDN上有详细的教程和演练。 
  • MVVM Light Toolkit:有 visual Studio 和 Expression Blend 的项目和项的模板。更多信息请看这里,另外可以参考 VS  Expression Blend 的使用教程。
  • Caliburn Micro:支持视图模型先行(ViewModel-First)和视图先行(View-First)两种开发方式,通过 co-routine 支持异步编程。
  • Simple MVVM Toolkit:提供 VS 项目和项的模板,依赖注入,支持深拷贝以及模型和视图模型之间的属性关联。
  • Catel:包含项目和项的模板,用户控件和企业类库。支持动态视图模型注入,视图模型的延迟加载和验证。还支持 WP7 专用的视图模型服务。

  闭源的

  • Intersoft ClientUI:付费的,只支持 WPF 和 Silverlight,但是,除了 MVVM 框架,它还提供其它一些特性
  • Vidyano:免费但不开源。带有实体映射/虚拟持久化对象(数据容器),业务规则以及内置基于 ACL 的安全特性。

  若想了解 MVVM,可以参考以下资料:

  使用 MVVM 的最大好处之一是分离关注点,以便用户体验设计师和应用程序开发者可以并行工作。另一方面,相关的担忧包括它对于 UI 操作比较简单的情况有点杀鸡用牛刀的感觉,数据绑定有点难以调试,以及大量使用数据绑定可能带来性能问题等等。

  Jonathan Allen 在评论里提到几点错误使用 MVVM 的征兆:

  1. 你的模型和视图模型名字相同。

  视图模型不应该是对模型的包装。视图模型的职责是外部服务的请求中介,比如加载和保存数据。而数据本身,以及验证和大多数业务逻辑应该放在模型里。

  我经常强调这点。每当你创建一个视图模型包装一个模型,你就在你的 API 里引入一个巨大漏洞。具体地,任何直接引用这个模型的东西都可能以视图模型无法察觉的方式改变某个属性,因此 UI 也不会有相应的改变。同样地,模型里计算字段的任何更改也不会回传给视图模型。

  2. 你的视图和视图模型名字相同。

  理想的情况下,视图模型是不知道使用它们的视图的,尤其是 WPF 应用程序有多个窗口共享相同的视图模型。

  对于比较小型的应用程序来说,整个应用程序可能只需一个视图模型。对于比较大型的应用程序来说,主要功能可能需要一个视图模型,每个次要方面也需要一个,比如配置管理。

  3. 你没有代码隐藏。

  代码隐藏既非一个好的东西,亦非一个坏的东西。它只是一个用来放置和视图或控件相关的逻辑的地方。因此,当我看到一个视图没有任何代码隐藏,我就会马上检查是否存在以下问题:

  • 视图模型是否通过名字接触了特定的控件?
  • 视图模型是否通过命令参数访问控件?
  • 是否使用了 EventToCommand 或其它可以导致泄露的行为而不是简单的事件处理程序?

  MVVM Light 的 EventToCommand 很有问题,因为它会使得控件从屏幕移除之后无法被垃圾回收。

  4. 视图模型监听属性更改通知

  如果一个模型的的生命周期比监听它的事件的视图模型长,那么可能导致内存泄露。不同于视图有个 Unloaded 事件,视图模型对于生命周期管理没有很好的方案。因此如果它们关联到存活期比它们更长的视图模型的事件,视图模型将会出现泄露。.NET的MVVM框架

### 回答1: .NET 6 是微软最新的开发平台版本,它带来了许多新的功能和改进,为开发者提供了更好的工具和建议。其中,MVVM 是一种流行的设计模式,即 Model-View-ViewModel,它在.NET 6中也有良好的支持和框架MVVM 框架旨在提供一种用于构建现代应用程序的模式,它将 UI 层与业务逻辑分离,UI 变得更加可测试和可维护。在.NET 6中,开发人员可以使用 Microsoft.Toolkit.Mvvm 包来使用 MVVM 体系结构。该包提供了一些开发人员通常需要的常见功能,例如委托和命令模式,以及ViewModel 应该实现的一些接口。此外,开发人员还可以使用 Prism 和 MVVMLight 等流行的第三方框架来实现 MVVM。 使用 MVVM 框架可以通过分离界面和业务逻辑来简化应用程序的开发。ViewModel 作为 Model 和 View 之间的中间人,接收来自 View 的用户输入并将其转化为 Model 所需的数据格式。在 ViewModel 中,开发人员可以封装业务逻辑和状态,并使用 Commands 调用各种操作,而这些 Commands 也由 ViewModel 声明。View 绑定到 ViewModel 的相应属性和有关 Commands 的属性,以控制在界面上显示的内容。 总之,MVVM.NET 6中一种流行的设计模式和框架,它可以帮助开发人员更容易地构建现代应用程序。使用 MVVM 可以使开发人员更好地控制界面和业务逻辑之间的交互,使应用程序更加清晰,易于维护。 ### 回答2: .NET 6是微软最新的.NET平台版本,它提供了许多新的功能和API,使得开发更加简单和高效。MVVM框架是一种模式,它将应用程序的UI和逻辑分开,使得代码更加结构化和易于维护。 在.NET 6中,MVVM框架的实现有多种选择。其中最流行的框架包括Prism、ReactiveUIMvvmCross。这些框架都提供了在.NET平台上使用MVVM框架所需的功能,比如数据绑定、命令绑定、依赖注入和事件处理等。它们还提供了许多开发人员需要的功能,比如导航、消息通信和状态管理等。 Prism是一个基于WPF和Xamarin.Forms的MVVM框架,它提供了多个MVVM模式的实现,并且支持事件聚合和命令处理。ReactiveUI是一个用于WPF、Windows Forms和Xamarin的响应式MVVM框架,它采用了Rx.NET库来实现响应式编程。MvvmCross是一个跨平台的MVVM框架,它支持WPF、Silverlight、Windows Phone、iOS和Android等多个平台。 总的来说,.NET 6为MVVM框架提供了很好的支持,开发人员可以根据项目需要选择最适合自己的框架来实现MVVM模式,从而提高开发效率和程序稳定性。 ### 回答3: .NET 6 是 Microsoft 推出的一款全新版本的开发平台,它集成了新的技术和框架,提供了更加优化的性能和更加灵活的编程体验。在.NET 6 中,MVVM 模式被广泛应用于桌面应用程序、Web 应用程序以及移动应用程序的开发中,并且.NET 6 也提供了一些主流的 MVVM 框架供开发者选择使用,以便更加容易地实现应用程序的开发。 MVVM 是一种用于子UI开发的模式,它将应用程序分成三个部分:View、ViewModel 和 Model。View 负责显示和用户交互,Model 负责数据处理和业务逻辑处理,ViewModel 则是负责连接 View 和 Model,将数据从 Model 中取出并传递给 View,同时也将用户交互的反馈传递给 Model。 在.NET 6 中,MVVM 框架提供了许多便利的特性,例如可观察的数据绑定、命令绑定、事件绑定等,这些特性使得开发过程更加简化,同时也提高了开发效率和应用程序的可维护性。常用的 MVVM 框架有 Prism、MVVMLight 等,它们都具有良好的扩展性和高性能的特点,能够满足不同类型的应用程序开发需求。 总的来说,.NET 6 MVVM 框架在应用程序开发中具有重要意义,采用 MVVM 模式能够使开发更加高效和便捷,同时也可以提高应用程序的可维护性和灵活性。开发者可以通过选择合适的 MVVM 框架来实现自己的开发需求,从而更好地应对不断变化的市场需求和技术趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值