|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!Model-View-ViewModel是一种架构形式,次要在WPF、Silverlight和WP7开辟里利用,它的方针是从视图层移除几近一切代码埋没(code-behind)。交互计划师能够专注于利用XAML表达用户体验需求,然后创立和视图模子的绑定,而视图模子则是由使用程序开辟者开辟和保护的。
MVVM是加倍通用的Presentation形式的一个详细完成。MVVM视图模子包括观点模子而不是数据模子,一切营业逻辑和别的操纵都是在模子和视图模子里完成的。有良多框架能够做到这点,个中一些是:
开源的
- PRISM:由微软供应,和MEF/Unity一同用于依附注进,撑持组合命令,能够扩大。MSDN上有具体的教程和练习训练。
- MVVMLightToolkit:有visualStudio和ExpressionBlend的项目和项的模板。更多信息请看这里,别的能够参考VS和ExpressionBlend的利用教程。
- CaliburnMicro:撑持视图模子先行(ViewModel-First)和视图先行(View-First)两种开辟体例,经由过程co-routine撑持异步编程。
- SimpleMVVMToolkit:供应VS项目和项的模板,依附注进,撑持深拷贝和模子和视图模子之间的属性联系关系。
- Catel:包括项目和项的模板,用户控件和企业类库。撑持静态视图模子注进,视图模子的提早加载和考证。还撑持WP7公用的视图模子服务。
闭源的
- IntersoftClientUI:付费的,只撑持WPF和Silverlight,可是,除MVVM框架,它还供应别的一些特征。
- Vidyano:收费但不开源。带有实体映照/假造耐久化对象(数据容器),营业划定规矩和内置基于ACL的平安特征。
若想懂得MVVM,能够参考以下材料:
- LaurentBugnion的《UnderstandingMVVMPattern》和《DeepDiveMVVM》
- 微软Silverlight组的《UnderstandingtheMVVMPatterninSilverlightApplications》
- ErikLebel在InfoQ上的视频演讲《PresentationPattern》
利用MVVM的最年夜优点之一是分别存眷点,以便用户体验计划师和使用程序开辟者能够并行事情。另外一方面,相干的担心包含它关于UI操纵对照复杂的情形有点杀鸡用牛刀的感到,数据绑定有点难以调试,和大批利用数据绑定大概带来功能成绩等等。
JonathanAllen在批评里提到几点毛病利用MVVM的征象:
1.你的模子和视图模子名字不异。
视图模子不该该是对模子的包装。视图模子的职责是内部服务的哀求中介,好比加载和保留数据。而数据自己,和考证和年夜多半营业逻辑应当放在模子里。
我常常夸大这点。每当你创立一个视图模子包装一个模子,你就在你的API里引进一个伟大毛病。详细地,任何间接援用这个模子的工具都大概以视图模子没法发觉的体例改动某个属性,因而UI也不会有响应的改动。一样地,模子里盘算字段的任何变动也不会回传给视图模子。
2.你的视图和视图模子名字不异。
幻想的情形下,视图模子是不晓得利用它们的视图的,特别是WPF使用程序有多个窗口共享不异的视图模子。
关于对照小型的使用程序来讲,全部使用程序大概只需一个视图模子。关于对照年夜型的使用程序来讲,次要功效大概必要一个视图模子,每一个主要方面也必要一个,好比设置办理。
3.你没有代码埋没。
代码埋没既非一个好的工具,亦非一个坏的工具。它只是一个用来安排和视图或控件相干的逻辑的中央。因而,当我看到一个视图没有任何代码埋没,我就会即刻反省是不是存在以下成绩:
- 视图模子是不是经由过程名字打仗了特定的控件?
- 视图模子是不是经由过程命令参数会见控件?
- 是不是利用了EventToCommand或别的能够招致保守的举动而不是复杂的事务处置程序?
MVVMLight的EventToCommand很有成绩,由于它会使得控件从屏幕移除以后没法被渣滓接纳。
4.视图模子监听属性变动关照
假如一个模子的的性命周期比监听它的事务的视图模子长,那末大概招致内存保守。分歧于视图有个Unloaded事务,视图模子关于性命周期办理没有很好的计划。因而假如它们联系关系到存活期比它们更长的视图模子的事务,视图模子将会呈现保守。
检察英文原文:MVVMFrameworksFor.NET
译者李永伦李永伦,从02年入手下手存眷.NET,读过4年工商办理,任过3届微软MVP,比来迷上WindowsPhone和Ruby。
如果英语好,口才好,加上女孩子的优势说不定有机会进去做做别的工具) |
|