[Prism]Composite Application Guidance for WPF(1)--概览
[Prism]Composite Application Guidance for WPF(1)--概览
周银辉
什么是Composite Application Guidance for WPF(以下简称Prism)
我们想象一下,在复杂的企业级开发中,我们的开发规模非常的大,以至于我们需要将其分解成多个小的模块,以便分发给不同的人,甚至是在不同地方的团队分别进行开发和测试,最后我们在将这些相对独立的模块集成起来形成一个完整的应用。所以我们需要找到一种方法来帮助我们划分和组织这些模块,以使他们相对独立(低耦合),当然,我们也需要找到一种较好的方式让模块之间进行通讯。
这个问题最早被CAB所关注(如果你不了解CAB/SCSF,可以参考这里或这里,如果你不了解Composite Application,可以参考这里),但稍稍了解一下CAB,我们会发现事实上其是为Windows Forms开发所设计的,不能很好地支持WPF。可能有人会说其能找到某些方法让WPF在CAB框架中运行得不错,的确,这我很了解,因为我现在手头的项目便是这么干的。但我要说的是,将拖拉机改造成跑车也许也能Work,但它毕竟还是拖拉机,其优势在于收割小麦而不是载着你去参加聚会。
于是,从今年年初开始,P&P 小组就开始为WPF寻找一种Composite Application方案,其类似于CAB(但不是CAB的for WPF版本),于是便有了我们这里要讨论的Composite Application Guidance for WPF (Prism)
与CAB的区别
其实,刚开始接触到Prism的时候,我也以为其是CAB的WPF版本,但后来发现:不是。其是为了WPF实现Composite Application而全新打造的Composite UI Framework,Prism官方文档中是这样说的:(英文原文在这里,我为大家简单翻译一下,别见笑,我的英文不好,嘿嘿):
这并不是CAB的一个新版本,而是一个全新的从头开始打造的开发库和开发指南,目的在于帮助你开发新的WPF Composite application,虽然说其不是CAB的新版本,但,其借用的CAB的一些核心概念,比如Modularity,UI Composition,Services,Dependency injection(依赖注入),以及Event brokering等,这样概念是打造Composite Application和Prism所必需的。之所以要这样做(打造一个全新的框架)是由于以下几个原因:
l Prism汇集了大量用户反馈:这些年来,P&P Team收到了很多很好的关于CAB的反馈,有积极的也有消极的。很多反馈说其太重量级,太复杂,太紧耦合,并且很难搞定。并且customers expressed a need for an approach that allows incremental adoption of the library and to work with existing libraries. The patterns & practices team determined that the best way to address the concerns and tackle the new ideas was with a clean break.
l CAB并不支持WPF。尽管你可以找到一些方法来上WPF在CAB上Work,但,CAB并不是建立在发挥WPF核心优势基础之上的。事实上在很多情形下,CAB引入的许多机制恰恰原产于WPF,比如说WPF是一attached property来实现UI Composition就是比目前CAB中的一下方式更轻量级些。另外,WPF天生就是与Windows Forms不同的模式,其比起传统的使用控件的方式而言有着更多更灵活的方式来组合你的UI,WPF也引入了一些诸如模板(Template)的方式来控制你的界面绘制。
l CAB依赖于Windows Forms 开发经验,而WPF的开发却有着不通的模式(关于WPF开发模式的内容就不翻译了哈,可以参考我的这篇文章)
我该何去何从:
很简单,可以参考下面的建议:
如果你需要开发一个Composite Windows Forms Application,那么可以考虑CAB/SCSF
如果你需要开发一个Composite Windows Forms Application,但又想在上面使用一些WPF内容,那么可以考虑CAB/SCSF 和 WPF interop
如果你需要迁移一个已存在的Composite Windows Forms Application到WPF,可以考虑CAB、SCSF和Smart Client Contrib(这可以创建WPF的View)
如果你想开发一个Composite WPF Application或者将一个已存在的WPF项目升级到Composite WPF Application,那么你可以考虑使用本文所介绍的Composite Application Guidance for WPF
Prism环境与资源下载
Downloads |
Composite Application Guidance for WPF Composite Application Guidance for WPF Documentation (also included with the above download) |
Related Download |
|
Getting Started |
Getting Started with the Composite Application Guidance |
Community Feedback and Support |
|
License |