惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园 - 聂微东
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
罗磊的独立博客
H
Help Net Security
L
LangChain Blog
T
Threat Research - Cisco Blogs
量子位
S
Securelist
Last Week in AI
Last Week in AI
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
The Hacker News
The Hacker News
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Blog of Author Tim Ferriss
T
Threatpost
Security Latest
Security Latest
P
Palo Alto Networks Blog
Microsoft Security Blog
Microsoft Security Blog
NISL@THU
NISL@THU
F
Full Disclosure
WordPress大学
WordPress大学
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Heimdal Security Blog
J
Java Code Geeks
Recorded Future
Recorded Future
Hugging Face - Blog
Hugging Face - Blog
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42
B
Blog RSS Feed
月光博客
月光博客
C
Cisco Blogs
V
Visual Studio Blog
D
DataBreaches.Net
H
Hacker News: Front Page
博客园 - 叶小钗
N
News and Events Feed by Topic
爱范儿
爱范儿
A
Arctic Wolf

博客园 - 成都ABC

json 反序列化,高手请进 Django Message框架尝鲜 MVC 资料推荐 杂类 资料收集 收集到的非常好的第三方控件 Silverlight 开源框架 微软企业库资料 Silverlight 收藏网站 Silverlight的依赖属性与附加属性 不需要Orchestration,通过Pipeline设定动态发送端口属性 使用BizTalk Server常见问题处理 在哪找biztalk的例子(转) 转:把自己搜集到的一些silverlight网站、第三方控件及开源代码与大家们分享(微软转载) 鸡肋: 评在IE下Siverlight3对快捷键的支持 siverlight高手解答:无法阻止silverlight把快捷键传递给IE7 WCF综合运用之:聊天系统 微软:PHP在IIS 7上雄起 - 成都ABC - 博客园 WCF学习之:实例上下文模式和并发模式的性能影响
对MVP和MVVM的一点看法
成都ABC · 2010-03-23 · via 博客园 - 成都ABC

  转:http://www.cnblogs.com/bbp/archive/2009/07/21/1516466.html 

基于PresentationModel的MVP和基于ViewModel的MVVM形式上一个主要区别在于前者的PresentationModel里一般要注入一个IView实例,当然目的是解耦,但也给人留下一个余地,也就是说在没有更好办法做binding的时候,可以调用IView直接操作界面来做事,当然是比较灵活的,而且基于接口依赖的UI与业务逻辑的分离也是不错的,但这需要维护View和PresentationModel之间的双向引用,而且代码(尤其是View的代码)看起来就不那么简洁了,因为即使是依赖于接口,也是依赖,总不如没有依赖要好;而后者(MVVM)的一个主要特征是:完全通过binding机制,由ViewModel指示UI如何做变更,同时用户与ViewModel的交互通过Command来实现,这样只需要View指导ViewModel即可,而ViewModel完全不必关心View暴露出什么样的接口和操作,它只需要提供属性(要绑定的数据和Command)并实现INotifyPropertyChanged即可,少了一个方向的依赖,代码自然更简洁清晰。

当然,作为一种通用的表示层模式,MVVM适用于各类客户端,比如Web, WinForm等等,但MVVM只有在WPF或Silverlight这种高级的UI技术支持下才能充分发挥它的优点。

Binding并不是非常符合直觉的一种手段,即使在winform里,有BindingSource做桥梁,binding显得很直观,但也不是谁都用得习惯的,而WPF里的binding配合DataContext、Converter、DataTemplate,、Style、以及各自对应的trigger,几乎无所不能,而且十分优雅,只是门槛较高,初学者不易充分理解(一个看法是:WPF这种markup方式的UI技术,很难“完全”照搬其他UI技术的经验,无论是winform,web,甚至同种类型的flex,想要充分利用WPF的好处,学习和实践的过程是必不可少的,而且学习曲线比较陡峭。并不是因为它有多难,而是因为有很多观念和习惯都需要转变,而且WPF所涉及到的技术方面太多太杂,但学习所花时间是值得的,未来的趋势在RIA,主流RIA开发技术大同小异,早晚要学,不如早学,学一个WPF还赚一个Silverlight。经常看到有人说WPF很简单,一学就会,看看代码才知道原来就是拿WPF当WinForm用,而且不伦不类,暴殄天物哦!其实会不会用WPF跟你原本是不是高手无关。)。另一方面,Command机制也在某种程度上避免了基于事件机制的限制,尤其是配合DelegateCommand和CompositeCommand(见Prism),可以有效地、优雅地在UI与controller之间解耦。 所以,如果想充分利用MVVM的好处,就要忍住不用IView,尝试完全用Binding和Command解决问题,这样憋一段时间,对WPF和Silverlight的理解自然就会上一个台阶, 正如书读百遍其义自见的道理。看到原本繁复传统的代码变得优雅现代,真让人心情舒畅。