Si

Prism框架(一)——概述Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Si

提问者:mfksnr120(ID:187460) | 悬赏 0.0 希赛币 | 回答数:0 | 关注度:8 | 提问时间:2014-04-13

Prism框架(一)—— 概述

  Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Silverlight应用程序。

  关键概念

  Modules:Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。

  Module Catalog:在Prism中,Module Catalog指明了要Load哪些Module,和用什么样的顺序去Load这些Module。

  Shell:Shell是宿主应用程序(host application),modules将会被load到Shell中。Shell定义了应用程序的整体布局和结构,而不关心寄宿其中的Module,Shell通常实现通用的application service和infrastructure,而应用的逻辑则实现在具体的Module中,同时,Shell也提供了应用程序的顶层窗口。

  Views:Views是应用中展现特定功能的视图,它展现UI、定义交互行为,并且通过数据绑定的方式与ViewModel进行交互。

  View Model和Presenters:View Model用来封装应用程序的UI逻辑及其状态。

  Model:Model被用来封装数据和相应的验证,以及相关的业务规则来保证数据的一致性和正确性。

  Commands:Command被用来封装应用程序功能,Prism提供了Delegate Command和CompositeCommand两个类。

  Regions:Regions是应用程序UI的逻辑区域,它很像一个PlaceHolder,Views在Regions中展现,很多种控件可以被用作Region:ContentControl、ItemsControl、ListBox、TabControl。Views能在Regions编程或者自动呈现,Prism也提供了Region导航的支持。

  Shell、Region和View的关系如图所示:

  

  Navigation:Prism支持两种导航:state-based导航和view-switching导航。

  EventAggregator:组件通常要和其它的组件或者服务进行通信。为此,Prism提供了EventAggregator组件,这个组件实现pub-sub事件机制,允许一些组件发布事件,另一些组件去订阅事件而无需两个组件之间的引用。

  Dependency Injection container:Prism使用依赖注入模式来管理组件之间的依赖,Prism被设计使用Unity、Mef等依赖注入容器。

  Services:Services是用来实现非UI相关功能的逻辑,例如logging、exception management、data access。Services可以被定义在应用程序中或者是Module中,Services通常被注册在依赖注入容器中,使得其它的组件可以很容易的定位这个服务。

  Controllers:Controller被用来控制在Region中哪个View将会被呈现,同时控制这个View的创建和初始化。

  Bootstrapper:Bootstrapper用来初始化应用程序级别的组件和服务,它也被用来配置和初始化module catalog和Shell 的View和View Model。功能如图:

  

  Multi-targeting:Prism支持开发的应用程序同时满足WPF和Silverlight平台。

  Prism Library架构

  综合以上,Prism的整体架构如图:

  

Prism框架(一)——概述Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Si...相关推荐

  1. android http最新框架,Android框架学习笔记02AndroidAsycHttp框架

    上一篇中我们介绍了OkHttp3.0框架的基本使用方法,这一篇我们学习一下Android的另外一个网络请求框架--AsyncHttpClient框架.Asynchttpclient框架是一个开源的异步 ...

  2. Set集合框架的概述及应用

    Set集合框架的概述及应用 我们可以通过查询API文档来来了解Set集合框架 Set集合框架就是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) ...

  3. 基于SpringBoot框架的古风乐曲网站的设计与实现 毕业设计-附源码271611

    springboot古风乐曲网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法, ...

  4. 基于SpringBoot框架的古风乐曲网站的设计与实现毕业设计源码271611

    springboot古风乐曲网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法, ...

  5. 基于SSM框架的大学生自主学习网站的设计与开发/在线学习系统

    摘  要 随着信息技术的不断发展,催生了许多新的行业产生,比如在线教育行业就是一种新兴的技术产业.尤其是在今年,武汉的疫情导致了大量学生无法正常上课,只能在网络上进行在线教育学习.这让原本仅仅是运用于 ...

  6. 基于SSM框架的服饰商城系统的设计与实现(文末附源码)

    摘要 现如今我们处于大数据时代,我们对网上商城的概念并不感到生疏,随着互联网科技的发展,网络在人们生活中的运用越来越广泛,网上购物已经成为了现代购物的主流趋势.网上购物具有多种选择.性价比高等优势,网 ...

  7. 计算机基于Springboot框架的美食发现系统的设计与实现.rar(毕业论文+源码+数据库文件)

    1 绪论 3 1.1 系统开发目的 3 1.2 系统开发意义 3 2 系统开发工具介绍 4 2.1 JSP技术概述 4 2.2 JAVA语言 4 2.3 IDEA开发工具简介 5 2.4 MYSQL数 ...

  8. 基于SSM框架的书影音社区前端设计与实现

    随着互联网通讯技术和计算机信息技术的深入发展,利用互联网开展业务已经成为社会发展的潮流,通过互联网进行各种业务信息交流变的更加方便.面对高速发展的互联网技术,基于互联网的应用系统如雨后春笋不断的涌现. ...

  9. (附源码)基于SpringBoot框架的古风乐曲网站的设计与实现 毕业设计271611

    springboot古风乐曲网站 摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势.互联网的优势和普及使得各种系统的开发成为必需. 本文以实际运用为开发背景,运用软件工程原理和开发方法, ...

最新文章

  1. c#五子棋实验报告_C#五子棋完整项目
  2. RGBA和ARGB的区别
  3. 2015年各银行无抵押信用贷款利率及额度是多少?
  4. perl模块的安装,查询
  5. hdu1394 Minimum Inversion Number 线段树和树状数组
  6. 新无限天空服务器,天空魔域3782版最新服务端(含网站程序)
  7. Linux x64 下 Matlab R2013a 300 kb 脚本文件调试的 CPU 占用过高问题的解决办法
  8. 两个小知识:C#如何设置开机启动时自动执行程序|C# WinForm打开超链接
  9. jmeter对乱码如何处理_JMeter读取 Excel 表中用例数据实现接口压测
  10. pptv如何绑定邮箱账号
  11. OpenCV中图像轮廓检测
  12. 常用api查询网站记录
  13. 冒险岛单机版mysql_冒险岛单机版
  14. 微信云开发要避开的坑
  15. Unity镜头特写效果
  16. 分布式系统----时钟同步
  17. ICCV 2019 Vehicle Re-identification with Viewpoint-aware Metric Learning
  18. ABCD输出ABCDDCBA
  19. 新神奇传说补丁_如何在神奇宝贝Go中捕捉传说中的神奇宝贝
  20. 医院就诊系统-C语言

热门文章

  1. pandas镜像安装_Python安装库太慢?配置好这个速度飞起
  2. 信息学奥赛一本通(2046:【例5.15】替换字母)
  3. 线性代数 —— 矩阵的行列式
  4. Hello,World!(信息学奥赛一本通-T1001)
  5. 信息学奥赛一本通C++语言——1119:矩阵交换行
  6. 书籍《智能交通》-观后感-2021年12月-下期分享
  7. oracle单节点加入rac,实验:Oracle单节点RAC添加节点
  8. 解决/usr/local/lib/libglog.so.0: error adding symbols: DSO missing from command line
  9. python时域信号特征提取(各种因子)
  10. 04_使用Influxdb自带函数查询