[Silverlight]MVVM+MEF框架Jounce学习(1):Why?
2012-11-27 15:38 slmk 阅读(1926) 评论(1) 编辑 收藏 举报英文原文:http://csharperimage.jeremylikness.com/2010/10/jounce-part-1-why.html
【译者注:因为我英文不好,并且懒,所以我不会原文一字不差的翻译原文,只图达意吧。实在看不下去的对照英文吧:)】
Jounce是一个利用MEF和MVVM创建Silverlight应用程序的框架。
起因
我用Silverlight开发企业应用,是从2.0开始。有些应用需要很强的可扩展性,需要方便的添加视图和模块。有时需要很强的模块化,例如动态加载和压缩dll到客户浏览器。我发现MVVM和MEF是很好的工具,可以方便做单元测试和团队分工合作。我发现每次都从头创建新应用是在浪费时间,我需要独立出一套框架可以应用到新的任务中。这个框架被命名为Jounce。类似于大多数的MVVM框架,她提供了messaging services and notify property changed handlers,不同的是她利用了MEF。
为什么要用Jounce?
发布Jounce更多的是为了提供一种专门用于解决Silverlight领域的MVVM问题的方法,而不是为了解决所有平台(Silverlight、WPF和Windows phone 7)的问题。在专门的领域成功解决领域问题是我一贯的原则。你可以下载全部源代码阅读并弄明白Jounce是怎么工作的,因为她非常轻量级,只有不到1000行代码。你也可以修改并用到自己的框架中,因为没有一个框架可以解决所有问题。Jounce远比Prism来得轻量,功能上可能没有Prism来的强大,例如区域管理模式。只因为很多功能对我用处不大,例如Calburn和Caliburn Mico提供的自动数据绑定,我宁愿使用显式的试图模型绑定。
Jounce的设计原则
- App.xaml.cs中的代码很烦人可以不要,使用更优雅的IApplicationService
- 执行跟踪很重要,尽管Silverlight没有提供原生的trace支持
- Commands应该很容易触发和使用,在你需要他们的时候
- 快速地发送和接收消息,而不用担心必须要把消息封装到UI线程上
- View models同步view state,可以在view state改变时改变试图的状态,而不用引用View对象
- 标记view和view model应该是简单灵活的
- view和view model的绑定应该是简单的,他们应该很容易发现对方
- 如果我导航到一个View,我不应该担心这个View是否位于另一个动态加载的Xap文件中
- Navigation应该是一个简单的事件
如何开始?
下载地址:http://jounce.codeplex.com/
文档:http://jounce.codeplex.com/documentation?referringTitle=Home
快速开始Demos:http://jounce.codeplex.com/releases/view/53423