代码改变世界

[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