当前位置: 首页 > news >正文

[Silverlight]MVVM+MEF框架Jounce学习(1):Why?

英文原文: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

相关文章:

  • 设置tomcat内存(转)
  • SQL中的排序函数
  • Linux的inode的理解 [转]
  • Lucene检索提高性能的几个方式
  • Ajax学习记录
  • OutOfMemoryError汇总
  • H3C交换机MAC VLAN原理及配置示例
  • QQ互联redirect uri is illegal(100010)!
  • iterator迭代循环的风格问题
  • [objective-c]关于KVC--KVO--KVB
  • NSStringOC字符串
  • linux 升级kernel
  • 构建私有云和公有云的免费开源软件项目OpenStack
  • KNN算法介绍 | 沙湖王
  • MySQL主从同步设置和同步错误处理
  • python3.6+scrapy+mysql 爬虫实战
  • [ JavaScript ] 数据结构与算法 —— 链表
  • CSS 三角实现
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Rancher-k8s加速安装文档
  • STAR法则
  • Swoft 源码剖析 - 代码自动更新机制
  • vue-cli3搭建项目
  • WebSocket使用
  • 初识MongoDB分片
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 仓管云——企业云erp功能有哪些?
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (C++17) optional的使用
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (万字长文)Spring的核心知识尽揽其中
  • (学习日记)2024.01.09
  • (一)Linux+Windows下安装ffmpeg
  • (转)Scala的“=”符号简介
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .libPaths()设置包加载目录
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net Memory Profiler的使用举例
  • .NET 药厂业务系统 CPU爆高分析
  • .NET大文件上传知识整理
  • .NET单元测试
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • [2021 蓝帽杯] One Pointer PHP
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!
  • [ESP32] 编码旋钮驱动
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [flume$2]记录一个写自定义Flume拦截器遇到的错误
  • [git] windows系统安装git教程和配置
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率