Prism4.0CTP概览
本文翻译自Prism4.0CTP版本帮助手册概览部分,便于自己和初学者了解Prism的基本概貌。
帮助文档可到http://www.codeplex.com/CompositeWPF下载。
概览(更新)
这是一个prism4.0的预览版文档
提示: |
本文档包含以前版本和新升级功能的Prism4.0版本的内容。八月CTP版本的介绍主要包括模块性和MVVM的内容。新的内容都会在各文章标题处标识出来。 |
|
Prism(正式名:WPF和Silverlight复杂应用程序构建指南-Composite Application Guidance for WPF and Silverlight),是一套帮你更轻松掌控在构建企业级的WPF客户端应用,或基于Silverlight的RIA应用时面对的复杂性的设计指导。该指导能够帮你设计和构建弹性的客户端应用,能够让独立松耦合的小模块协同,并且可以集成到整个大的应用当中。这些大的应用一般都是复杂的企业级应用。
此版本基于.NetFramework4.0,包括新的围绕MVVM、MEF(Managed Extensibility Framework)设计指导。指南包括了MVVM的引用实现(MVVM RI),快速入门,可重用的库代码(Prism库)和其他文档。
本指南面向构建企业级WPF/Silverlight应用的架构和开发人员。这种应用典型的特征是界面多且复杂,频繁的用户交互和数据可视化,并且都与角色决策行为有关。另外,这些应用很典型的使用层次架构并且使用跨层的物理部署方式,有着松耦合的独立组件。这些组件“持续构建”并且“为变化而构建”。这表明整个应用的预期生命周期是以年为单位的并且将持续对新的不可预见的需求做出变化和应对。应用不需要这些特点从Prism类库中获益。
Prism是构建在.NET Framework 4.0(包括WPF)和Silverlight4之上的,这些新技术都对Prism类库的演进有用。Prism易于学习,但要求开发者愿意拥抱新的模式和实践。管理者的理解和承诺也是相当重要的,并且项目的截止期限必须考虑到来学习新模式和实践的时间。
系统要求
本指南的运行环境包括微软Windows7、windows Vista、Windows XP Professional、Windows Server 2003、或者Windows Server 2008等操作系统。WPF应用要求 4.0(包含WPF),Silverlight应用要求.NET Framework for Silverlight 4。在使用Prism4之前,必须先安装:
- Microsoft Visual Studio 2010
- Microsoft .NET Framework 4.0 (the .NET Framework 4.0 includes WPF)
- Microsoft Silverlight (仅创建Silverlight应用时)
- Microsoft Silverlight 4 Tools for Visual Studio 2010 (仅创建Silverlight应用时)
- MOQ (Moq.4.0.10531.7-bin.zip - includes Silverlight)
可能还需要安装:
- Microsoft Silverlight Toolkit 以运行Silverlight单元测试
必备知识
本指南要求WPF和Silverlight动手经验。如果需要大概了解WPF,可参考以下资源:
- Windows Presentation Foundation on MSDN
- MacDonald, Matthew. Pro WPF in C# 2008: Windows Presentation Foundation with .NET 3.5. Second Edition, Apress, 2008.
- Nathan, Adam. Windows Presentation Foundation Unleashed. Sams Publishing, 2006.
- Sells, Chris and Ian Griffiths. Programming WPF: Building Windows UI with Windows Presentation Foundation. Second Edition. O'Reilly Media, Inc., 2007.
- Anderson, Chris. Essential Windows Presentation Foundation (WPF). Addison-Wesley Professional, 2007.
如果需要大概了解WPF,可参考以下资源:
- Silverlight Documentation on MSDN
Prism使用较多且要求熟悉的一些概念。包括如下:
- 数据绑定。WPF和Silverlight中用户界面和数据如何连接。
- 资源。WPF和Silverlight中的样式、数据模板、控件模板的创建和管理。
- 路由命令。用户输入和手势如何连接到控件。
- 路由事件。 视觉树中的多个收听者可以接受和处理事件,而不是单个的对象触发事件。
- 用户控件。能够自定义行为和外观的组件。
- 依赖属性。 这是一种 CLR的扩展属性系统,其可使得属性的设置和监测支持数据绑定、路由命令和事件。
- XAML (可扩展应用程序标记语言Extensible Application Markup Language) 编程。是一种可以显式初始化结构化变量和对象的语言。
要有效评估Prism是否适合你的团队,必须先理解Prism的设计目的。以下资源可以帮助你判断是否该指导适合你:
Prism,和其他的微软模式与实践交付成果一样,来自于 community site. 在这个社区,你可以提问、提供反馈,或者与其他用户交流想法。社区人员可以帮助微软计划和测试未来的版本探索、也可以下载到额外的内容,比如一些扩展和培训材料。
新内容
本次升级提供了支持Silverlight4的Prism类库。实现的升级内容如下:
- MVVM RI
- 更新的Prism快速入门:
- 基础的MVVM 快速入门
- MVVM快速入门
- 模块化快速入门 (桌面和 Silverlight) 使用MEF 和Unity
- 更新的Modularity 和MVVM 文档
所有Visual Studio项目(Prism类库、Stock Trader 引用实现、和快速入门)被迁移到Visual Studio 2010和Silverlight4上。如果你不想升级到Silverlight4,参考以下部分。
对早期Silverlight版本的开放性
Silverlight 3
如果你安装的是Silverlight3,那么你可以使用 Composite Application Guidance for WPF and Silverlight - October 2009。此版本允许你使用Silverlight 3.
Silverlight 2
如果你使用的是Silverlight2,你在Visual Studio中使用Silverlight3编译你的项目,可能会发生如下错误:
无法读取项目文件: 导入的项目 "C:\Program Files\MSBuild\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.CSharp.targets" 没有找到。请确认<Import>声明的路径是正确的,并且磁盘中此文件存在。 |
|
为了能够使用新版本的好处,如对commands的修复,当使用Silverlight 2,你应当修改工程文件中的 <Import>路径。(以 *.csproj结尾的文件—如Composite.Silverlight.csproj, Composite.Presentation.Silverlight.csproj,和Composite.UnityExtensions.Silverlight.csproj) 指向Silverlight 2安装路径。 如:下面的 <Import>声明 :
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.CSharp.targets" /> |
|
改成如下: |
|
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight\v2.0\Microsoft.Silverlight.CSharp.targets" />
|
|
什么时候使用此指南
主要阐述一些你在构建企业级WPF客户端应用或SilverlightRIA应用时可能遇见的许多问题时,Prism是如何帮你找到问题所在,并且可以与变通方法进行比较。
应用开发挑战
一般客户端开发人员遇到很多挑战。应用需求随时变化。新业务挑战随时出现,新技术不断出现、或者开发过程中客户的不断反馈影响着应用的需求。因此,建立一个具有弹性的应用并且易于随时变化和扩展就显得尤为重要。设计这样的弹性是很难实现的。它要求架构中独立的部分应用可以独立开发、测试和更新,并且不影响应用中的其他部分。
大多数企业应用十分复杂,要求多名开发人员,甚至一个大开发团队(包括UI设计师、本地化工程师等)协同开发。这对设计应用开发框架满足多名开发人员或多团队有效协作开发不同部分来说,是一种很大的挑战,尤其是,还要保证这些独立开发的部分可以无缝的集成到整个大应用中。
设计和构建一个复杂的巨型应用会导致整个应用非常难以有效的进行维护。这种情况下的复杂性是由于该应用的组件之间具有紧耦合和难以明确独立划分的原因造成的。 应用的设计与构建过程中遇到的大量问题让开发者们头疼。给系统添加一个新的功能或替换一个已有的功能组件都十分困难,解决bug时也没有办法让系统的其他部分中断,此外,测试和部署也是问题。这些情况影响着开发者和设计者之间有效协同的能力。
复合解决方案
一种应对上述挑战的有效方式是把大的应用划分为一些独立的、松耦合的、自独立的组件,然后这些组件可以轻松的集成到一个大的应用“躯壳”中,形成一个一致的解决方案。以这种方式设计和构建的应用称为复合型解决方案。
复合型解决方案有以下一些优点:
- 运行模块可由不同的个人开发者或子团队独立开发、测试 和部署;也允许他们很容易就可以修改或扩展新的功能,这样,整个的系统应用就可以轻松的扩展和维护。甚至个人开发的项目想创建更具有可测试性和可维护性的应用,都可以从复杂性解决方案中获得帮助。
- 提供了一致的由松耦合的不同UI组件构成的界面。减少了由不同开发者添加的具有各种功能的UI组件引起的不一致,从而形成一个通用的应用外观。
- 在应用的横向提供了一种可重用的和清晰明确的划分,比如日志和权限认证;在纵向对应了应用的业务和功能。
- 帮助维护各种不同角色之间的所关注问题的独立性,允许不同的个人或子团队把精力集中于他们所关注的或擅长的功能模块。
复合应用高度适合于客户端应用场景。 如应用到创建一个基于完全不相干的后端系统的富用户体验前端。下图展示了一种复合应用。
多后端系统的复合应用
在此类型的复合程序里,可以给用户一种丰富灵活的用户体验,其后端则是由多个不同的系统、服务和数据库等组成,每个后端系统都是一个或多个专用的模块。应用逻辑和用户界面间的明确划分让应用可以通过模块组合的方式提供各种不同的且具有一致性的外观。
此外,复合应用对有不同团队维护的具有可独立进化的UI组件间的高度集成十分有效。下图展示了这种复合应用的快照。每一个高亮的区域都代表独立的组件,它们组成了整个程序的UI界面。
股票交易参考实现复合应用
这种组合方式允许用户界面动态组成。提供了灵活的用户体验。比如,可以允许新的功能在运行时动态的添加到程序当中,从而使得终端用户具有丰富的自定义性和扩展性。
Prism不解决的问题
Prism不直接针对以下下问题:
- 偶然的连通性
- 消息基础框架,包括以下方面:
- 客户端/服务器端通信
- 异步通信
- 加密
- 程序性能
- 验证和授权
- 处理后台更新的线程安全,包括:
- 数据冲突
- 数据同步
- 处理多线程UI变更 (Prism 类库可解决部分方面的问题)
- 版本控制
- 错误处理和容错
可以从以下MSDN地址获取更多相关信息:
- Smart Client Architecture and Design Guide
- Occasionally Connected Systems Architecture: The Client
- Occasionally Connected Systems Architecture: Concurrency
如何选择模式与实践团队的复合UI的指导
模式与实践团队对构建复合应用程序有一些指导。下边列出了你应当考虑使用该方案的场景:
- 如果你想创建一个WPF/Silverlight的复合应用程序,或者更新一个已存在的WPF/Silverlight应用程序到一个复合应用程序中,按如下指导进行:
- 使用WPF/Silverlight进行复合应用程序开发。
- 设计和利用WPF/Silverlight的兼容性。
- 包括了一个轻量级的类库-你可以只选择你需要的类库文件。
- 可与已存在的应用和类库集成。
|
|
- 如果你想开发一个基于Winform的复合应用程序,可以考虑Smart Client Software Factory:
- 它提供了优秀的开发和调试体验 (包括工具、控件支持、拖放、快速开发等体验).
- 它还支持代码生成 (提供了支持的指南包)。
- 它包括了和偶然连接的客户端的兼容性。
- 如果你要开发一个寄宿了WPF内容的Winform复合应用程序,考虑使用Smart Client Software Factory 和WPF交互:
- 它可成为应用和Smart Client Software Factory 结构的一个杠杆。
- 包括了指南的自动化 (有相应的自动化指南包)。
- 如果你想迁移一个存在的复合UI应用程序块到WPF,考虑使用WPFCAB,来源于 SCSFContrib CodePlex project:
- 它允许构建纯基于WPF的应用和复合UI应用块。
- 可作为已存在的 Smart Client Software Factory 机制的杠杆,但不适合界面展示:
|
|
对比复合UI应用程序块
复合UI应用程序块(Composite UI Application Block,可简称为CAB )不是由模式与实践团体提供的一个新版本,它最初发布于2005年。 它是一套新的类库和指南,基于帮助你开发新的WPF/Silverlight复合应用程序而设计。 尽管不是应用程序块的新版本,但核心概念还是相同的 ,如模块性、UI构成、服务、依赖注入和事件代理。这些概念对构建复合应用程序是很重要的,Prism中就应用了这些概念; 但在实现方式上,Prim和应用程序块还是有很多不同的。 要了解更多的不同之处,可参考 Upgrading from the Composite UI Application Block。
更多信息
评估Prism可参考 Evaluating Prism。
Prism内容
Prism由以下内容构成:
- Prism类库源码。 开发者可用Prism通过模块化开发的方式开发出WPF和Silverlight应用程序。
- Unity Extensions for Prism类库源码。提供了一些基于 Unity Application Block 和 Prism类库的组件。
- Unity Application Block binaries。Prism类库本身不是一种容器;the Stock Trader Reference Implementation使用的是Unity Application Block 作为一种容器。
- Stock Trader Reference Implementation (Stock Trader RI)。 是一个基于真实场景的复合应用程序。这个故意没有被完整实现的应用以显示复合应用基线框架。通过这个实现的应用可以很好的了解本指南的实现过程。
- 快速入门。 包含了几个小的应用实例来展示用户界面构成、模块性、命令、事件机制和多目标特性。
- 文档。包含了架构概览、 Stock Trader RI 概览、设计和构建的概念 、应用模式,上手入门,如何做,快速入门概览和部署相关的内容。即使你不想使用Prism类库,大多数的示例程序也都是可参考的, 如果你仅仅想了解构建复合应用的最佳实践。
文档内容
本文档一步步介绍使用Prism各模块来构建复合应用的相关概念。本文档旨在帮助广大读者理解复合场景,评估Prism类库,使用Prism类库。主要保护如下内容:
- Design Concepts(设计概念)。这些主题介绍了构建复合应用的主要挑战,并且给出了应对这些挑战的解决方案。这些主题主要面向正在寻求深层次理解Prism驱动机制的架构人员和开发者。
- Patterns(模式)。这些主题主要描述应用Prism类库的设计模式和 Stock Trader Reference Implementation(一个股票交易应用的实现)。本主题主要面向想要熟练应用模式来构建复合应用的架构人员和开发者。
- Prism Library(Prism类库)。该主题描述类库的目标、效益、开发活动,以及自定义的活动等。它还介绍了一个备选的复合框架,你可以用来创建你自己的基线框架。 该主题主要面向对Prism感兴趣并且想应用到自己的复合应用中的架构人员和开发者。
- Technical Concepts(技术概念)。 本专题介绍Prism类库的实现细节。 主要面向深度研究Prism的架构人员和开发者。
- How-to topics(如何做的相关主题)本主题一步步的介绍使用Prism类库来完成特定的任务。介绍的内容包括类库的使用和自定义等。 该部分内容面向解决使用Prism实现需求的开发人员。
- QuickStarts(快速入门)。该主题描述验证Prism类库的特定方面的Visual Studio项目。该主题面向寻找Prism部分类库的实现实例的开发人员。
- WPF Hands-On Lab 和Silverlight Hands-On Lab。这些上手试验内容展示了如何逐步的构建一个简单的基于WPF和Silverlight的复合应用。 该主题主要面向想要理解Prism类库的基本概念的开发人员。
- Reference Implementation(引用实现)。 该主题描述了 MVVM RI 和 Stock Trader RI。MVVM RI实现了一个关于调查的应用,该实例展现了开发人员在用MVVM模式构建复合应用时所面对的挑战。Stock Trader RI是一个故意没有完全实现的应用,该实例展示了一种基于Prism类库的基线架构的实现。 本主题主要面向想了解类库如何作为应用的一部分进行工作的架构人员和开发者。
- UI Design Guidance Overview(UI设计指南概览)。该主题帮助界面设计师理解复合应用。给出了使用Prism类库来设计复合应用的UI界面时的一些有用的提示。该主题面向正在开发复合应用的项目的UI设计师。
快速指南内容
包含Prism的快速指南是一种简明、易于理解的软件工厂活动的实例展示。 快速指南是一个理想的起步点,如果你想理解一些重要的概念并且想通过研究源码的方式来学习新的技术。Prism的快速入门主要包括如下内容:
- Modularity QuickStarts(模块性快速入门)主要展示如何构建由模块组成的WPF/Silverlight应用。模块可能是静态加载的(当框架中包含模块的程序集引用),或者动态加载的( 当模块是在运行时动态发现和加载的)。
- MVVM快速指南。MVVM 基本快速入门展示了如何构建一个实现了MVVM展现模式的很简单的应用。MVVM 快速指南则展示了怎样构建一个实现了MVVM展现模式的应用。
- View Discovery Composition QuickStart 和View Injection Composition QuickStart。它们展示了怎样构建WPF/Silverlight用户界面 由不同的视图 组成,这些视图动态加载到区域中 、并且视图之间可以无耦合的进行交互。 每一个快速入门都展示了一个不同的 用户界面视觉构成。
- Commanding QuickStart(命令快速入门)。 它展示了如何构建一个 WPF/Silverlight用户界面(UI)使用由Prism类库命令来无耦合的处理UI动作。
- Event Aggregation QuickStart(事件聚合快速入门)。展示了怎样使用事件聚合服务构建一个WPF/Silverlight应用。该事件聚合服务允许你的应用中建立松耦合的组件间通讯方式。
- Multi-Targeting QuickStart(多目标快速入门)。展示了一个多目标的 WPF/Silverlight项目结构的开发环境。它提供了桌面体验 (基于WPF) 富互联网应用体验 (RIA) (基于Silverlight)。
反馈请到 Prism Community。
关于文档错误或反馈Email到 pagdoc@microsoft.com。