Prism框架(一)—— 概述
来源:互联网 发布:volte网络分为终端 编辑:程序博客网 时间:2024/05/16 19:11
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。功能如图:
- Prism框架(一)—— 概述
- Prism框架(一)—— 概述
- Prism框架(一)—— 概述
- Prism框架(一)—— 概述
- Prism应用开发(一)—— 概述
- Prism应用开发(一)—— 概述
- Prism框架(二)——Prism应用程序初始化
- Prism框架(二)——Prism应用程序初始化
- Prism框架(二)——Prism应用程序初始化
- Prism框架研究(一)
- Prism框架(四)——MVVM模式基础
- Prism框架(四)——MVVM模式基础
- Prism框架(四)——MVVM模式基础
- 集合框架(一)——概述
- 一步步实现 Prism + MEF(一)--- 搭建框架
- Prism应用开发(二)——Prism应用程序初始化
- Prism应用开发(二)——Prism应用程序初始化
- Prism框架(三)——基于模块的应用程序开发
- 《组合变身小宠物游戏》UIManager(修改更新中)【初学者】
- HDOJ-----1869最短路
- javascript 中的 this
- org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.wei
- 【HDU】1598 - find the most comfortable road(并查集 & 暴力)
- Prism框架(一)—— 概述
- Python 爬虫6——Scrapy的安装和使用
- 用户权限管理模块的数据库设计
- 【多校训练】ZZUliOJ 1902 985的因子对难题
- HDOJ 2066 一个人的旅行(dijkstra)
- Win10下的Linux子系统之Bash
- 贪心——Windows10 ( HDU 5802 ) ( 2016 Multi-University Training Contest 6 1010 )
- 三元表达式的嵌套
- CentOS/Linux 端口开放关闭管理